OpenCL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
fix nd |
||
(28 versioni intermedie di 17 utenti non mostrate) | |||
Riga 1:
{{nota disambigua|la libreria crittografica, nota fino al 2002 come OpenCL|Botan}}
{{Software
|Nome = OpenCL
Riga 6 ⟶ 7:
|Sviluppatore = [[Khronos Group]]
|DataPrimaVersione = 8 dicembre 2008
|UltimaVersione =
|DataUltimaVersione =
|UltimaVersioneBeta = 2.2
|DataUltimaVersioneBeta = 15 maggio 2016
Riga 19 ⟶ 20:
}}
'''OpenCL''' ('''Open''' '''C'''omputing '''L'''anguage, tradotto in italiano "linguaggio di calcolo aperto") è un [[framework]] basato sul linguaggio ANSI [[C (linguaggio)|C]] e [[C++]] con una struttura host-devices che può esser eseguito su una molteplicità di piattaforme, [[CPU]], [[Graphics Processing Unit|GPU]], e altri tipi di processori. In particolare, le potenzialità di OpenCL sono
== Storia ==
Lo standard è stato originariamente proposto
Il nome OpenCL è stato pensato in analogia a [[OpenGL]] ed [[OpenAL]], in quanto tutti standard industriali aperti, pur con diverse finalità: il primo per sfruttare le potenzialità delle attuali GPU oltre il rendering grafico, e gli altri rispettivamente per la grafica 3D e il rendering audio posizionale.
OpenCL è supportato su [[schede video]] [[Advanced Micro Devices|AMD]] e [[NVIDIA Corporation|NVIDIA]]<ref>[
Molti programmi offrono supporto nativo alle librerie OpenCl: [http://arrayfire.com/ ArrayFire], [[Adobe Photoshop]], [[GIMP|Gimp]], [[Autodesk Maya]], [[FFmpeg]], [[x264]], [[LibreOffice Calc|Libreoffice Calc]], Microsoft Excel e molti altri.
Il [[Khronos Group]] ha annunciato l'intenzione di unire le librerie OpenCl con le API [[Vulkan (API)|Vulkan]], trasformandole in
== Versioni ==
=== OpenCL 1.0 ===
Proposta finale della versione 1.0 in data 18 novembre 2008 e rilasciata
Il 9 dicembre 2008, Nvidia ha annunciato la sua intenzione di aggiungere il supporto completo per la specifica OpenCL 1.0 per la sua Toolkit GPU Computing, mentre RapidMind ha annunciato l'adozione di OpenCL sotto la piattaforma di sviluppo per supportare le GPU di fornitori diversi con un'unica interfaccia.
Venne utilizzato con Mac OS X Snow Leopard, il 28 agosto 2009, Mentre IBM il 30 ottobre del 2009 ha rilasciato la sua prima implementazione OpenCL come una parte dei compilatori XL, invece AMD ha deciso di supportare OpenCL per [[AMD FireStream]] (precedentemente conosciuto come "CTM (Close to Metal)"), attuando il supporto nel marzo 2010.
=== OpenCL 1.1 ===
Ratificato dal Khronos Group in data 14 giugno 2010 e aggiunge significative funzionalità per una maggiore flessibilità di programmazione parallela, funzionalità e prestazioni tra cui:
* Nuovi tipi di dati tra cui vettori di 3 componenti e formati di immagine aggiuntivi;
Riga 47 ⟶ 48:
* Migliore interoperabilità OpenGL attraverso un'efficiente condivisione di immagini e buffer collegando gli eventi OpenCL e OpenGL.
=== OpenCL 1.2 ===
Rilasciato il 15 novembre 2011, che ha aggiunto funzionalità significative rispetto alle versioni precedenti in termini di prestazioni e funzionalità per la programmazione parallela. La maggior parte delle caratteristiche notevoli includono:
* Partizionamento dispositivo: la possibilità di partizionare un dispositivo in sotto-dispositivi in modo che gli incarichi di lavoro possono essere assegnati alle unità di elaborazione individuali. Questo è utile per riservare aree del dispositivo per ridurre la latenza per le attività time-critical.
* Compilazione separata e il collegamento degli oggetti: la funzionalità per compilare OpenCL in librerie esterne per l'inclusione in altri programmi.
* Supporto avanzato delle
* Kernel built-in: dispositivi personalizzati che contengono specifiche funzionalità uniche sono ora integrati più strettamente nel quadro OpenCL. Kernel possono essere chiamati ad utilizzare gli aspetti specialistici o non programmabili di hardware sottostante. Gli esempi includono il video encoding / decoding e processori di segnali digitali.
* Funzionalità DirectX: condivisione dei mezzi di superficie DX9 permette un'efficiente condivisione tra OpenCL e le superfici di media DX9 o DXVA. Allo stesso modo, per DX11, senza soluzione di continuità la condivisione tra superfici OpenCL e DX11 è abilitato.
* La possibilità di forzare la conformità [[IEEE 754
=== OpenCL 2.0 ===
Pubblicata il 18 novembre 2013, gli aggiornamenti e le aggiunte al OpenCL 2.0 includono:
* Memoria virtuale condivisa
Riga 66 ⟶ 67:
* Android estensione driver client installabile
=== OpenCL 2.1 ===
La ratifica e il rilascio delle specifiche OpenCL 2.1 provvisorie è stato annunciato il 3 marzo 2015 Game Developer Conference di San Francisco. OpenCL 2.1 aggiunge il supporto ufficiale, seppur limitato, per un sottoinsieme statico di C
* Funzionalità aggiuntive sottogruppo
* Copia di oggetti del kernel e stati
Riga 77 ⟶ 78:
AMD, ARM, Intel, HPC, e YetiWare hanno dichiarato il supporto per OpenCL 2.1.
=== OpenCL 2.2 ===
▲La versione 2.2, rilasciata nel maggio 2017, introduce importanti novità:
* Supporto completo a C++14, includendo template, classi, espressioni lambda, ecc
* Nuova versione [[Spir-v|SPIR-V]]
* Nuova versione di [[SYCL]]
=== OpenCL 3.0 ===
La versione 3.0, pubblicata nel settembre 2020, è una profonda revisione di tutto il "progetto" OpenCl, in quanto gli sviluppatori di Kronos Group hanno ritenuto che si stesse perdendo il nucleo delle potenzialità del linguaggio, ovvero la flessibilità e la potenza. Per questo motivo hanno deciso di "tornare", come base, alla versione 1.2, rendendo tutte le funzionalità delle versioni 2.x come opzionali. Hanno inoltre introdotto un nuovo layer per il linguaggio C++ (OpenCl for C++ al posto di OpenCl C++) e una nuova versione di SPIR-V per permettere agli sviluppatori un accesso facilitato, ma non per questo meno performante, al linguaggio.
Con questa versione, inoltre, il gruppo Kronos ha stabilito di programmare una roadmap più consistente e veloce nell'introduzione di nuove funzionalità e/o versioni del linguaggio.
== Note ==
<references/>
== Voci correlate ==
* CAL (ex
* [[CUDA]], framework C proposto da [[Nvidia]] per la programmazione di GPU a partire dalla famiglia GeForce G80. Comprende un compilatore per un superset del linguaggio C - [[NVCC]] - e una serie di librerie di primitive implementate a vari livelli di complessità. Comprende un nutrito insieme di esempi applicativi e un ambiente di emulazione e debug. Compatibile con MSVC 2005 (piattaforma [[Windows XP]]), GCC (piattaforme [[Linux]] e [[macOS]]).
* [[Halide]]
* [[Intel Larrabee]]
== Altri progetti ==
{{interprogetto}}
== Collegamenti esterni ==
* {{
* {{cita web|
{{Controllo di autorità}}
{{portale|Informatica}}
|