OpenCL
software
Logo
Logo
Schermata di esempio
Schermata di esempio
Generelinguaggio software (non in lista)
SviluppatoreKhronos Group
Data prima versione8 dicembre 2008
Ultima versione3.0.16 (5 aprile 2024)
Ultima beta2.2 (15 maggio 2016)
Sistema operativoMultipiattaforma
LinguaggioC++
C
LicenzaRoyalty Free
(licenza libera)
Sito webwww.khronos.org/opencl

OpenCL (Open Computing Language, tradotto in italiano "linguaggio di calcolo aperto") è un framework basato sul linguaggio ANSI C e C++ con una struttura host-devices che può esser eseguito su una molteplicità di piattaforme, CPU, GPU, e altri tipi di processori. In particolare, le potenzialità di OpenCL sono meglio espresse con architetture altamente parallelizzabili e potenti come le GPU, e in questo caso si parla dell'ambito GPGPU. Sui vari dispositivi viene eseguito il codice del kernel basato sul Linguaggio di programmazione OpenCL C o la versione OpenCL C++ (basati sugli standard C99 e C++14).

Storia

[modifica | modifica wikitesto]

Lo standard è stato originariamente proposto da Apple, successivamente ratificato dalla stessa assieme alle principali aziende del settore (Intel, NVIDIA, AMD), e infine portato a compimento dal consorzio no-profit Khronos Group.

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 AMD e NVIDIA[1] (sia gpu consumer che professionali), su FPGA Xilinx e Altera, e su processori ARM. Per quanto riguarda i sistemi operativi, è certificato su OS X Snow Leopard[2] mentre è disponibile sui sistemi Linux e Windows.

Molti programmi offrono supporto nativo alle librerie OpenCl: ArrayFire, Adobe Photoshop, Gimp, Autodesk Maya, FFmpeg, x264, Libreoffice Calc, Microsoft Excel e molti altri.

Il Khronos Group ha annunciato l'intenzione di unire le librerie OpenCl con le API Vulkan, trasformandole in un'unica piattaforma di sviluppo sia per il settore videoludico che per quello gpgpu.

Versioni

[modifica | modifica wikitesto]

OpenCL 1.0

[modifica | modifica wikitesto]

Proposta finale della versione 1.0 in data 18 novembre 2008 e rilasciata l'8 dicembre 2008. 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

[modifica | modifica wikitesto]

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:

OpenCL 1.2

[modifica | modifica wikitesto]

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:

OpenCL 2.0

[modifica | modifica wikitesto]

Pubblicata il 18 novembre 2013, gli aggiornamenti e le aggiunte al OpenCL 2.0 includono:

OpenCL 2.1

[modifica | modifica wikitesto]

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++ 14 come lingua kernel. SPIR-V viene usato come un linguaggio intermedio che consente linguaggio di alto livello front-end di condividere una compilazione di un obiettivo comune. Gli aggiornamenti del API OpenCL includono:

AMD, ARM, Intel, HPC, e YetiWare hanno dichiarato il supporto per OpenCL 2.1.

OpenCL 2.2

[modifica | modifica wikitesto]

La versione 2.2, pubblicata nel maggio 2017, introduce importanti novità:

OpenCL 3.0

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]
  1. ^ Khronos Products
  2. ^ https://www.apple.com/it/macosx/technology/#opencl Archiviato il 22 marzo 2011 in Internet Archive. Apple OpenCL sezione ufficiale

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàLCCN (ENsh2011002885 · J9U (ENHE987007599892205171
  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica