OpenCL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
versioni come sezioni
Riga 34:
 
== Versioni ==
=== OpenCL 1.0 ===
;1.0
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 ===
;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 48:
* Migliore interoperabilità OpenGL attraverso un'efficiente condivisione di immagini e buffer collegando gli eventi OpenCL e OpenGL.
 
=== OpenCL 1.2 ===
;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.
Riga 57:
* La possibilità di forzare la conformità [[IEEE 754]] per singola precisione in virgola mobile per la matematica: OpenCL di default permette le versioni singole di precisione della divisione, reciproca, e il funzionamento radice quadrata di meno precisi rispetto ai valori correttamente arrotondati rispetto alle richieste IEEE 754. Se il programmatore passa il "-cl-fp32-corretto-arrotondato-divide-sqrt" argomento della riga di comando per il compilatore, queste tre operazioni saranno calcolati a IEEE 754 requisiti se l'attuazione OpenCL supporta questa, e non riuscirà a compilare se l'OpenCL implementazione non supporta queste operazioni di calcolo ai valori correttamente arrotondati come definito dalle specifiche IEEE 754. Questa capacità è completata dalla possibilità di interrogare l'attuazione OpenCL per determinare se è possibile eseguire queste operazioni secondo la precisione IEEE 754.
 
=== OpenCL 2.0 ===
;2.0
Pubblicata il 18 novembre 2013, gli aggiornamenti e le aggiunte al OpenCL 2.0 includono:
* Memoria virtuale condivisa
Riga 67:
* Android estensione driver client installabile
 
=== OpenCL 2.1 ===
;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++ 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:
* Funzionalità aggiuntive sottogruppo
Riga 78:
AMD, ARM, Intel, HPC, e YetiWare hanno dichiarato il supporto per OpenCL 2.1.
 
=== OpenCL 2.2 ===
'''2.2'''
 
La versione 2.2, pubblicata nel maggio 2017, introduce importanti novità:
Riga 85:
* Nuova versione di [[SYCL]]
 
=== OpenCL 3.0 ===
'''3.0 Definitiva (Settembre 2020)'''
 
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/>