OpenCL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Rotbot (discussione | contributi)
m Bot: sito web uguale a Wikidata
Abisys.bot (discussione | contributi)
m ., replaced: Mac OS XmacOS
Riga 38:
;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;
* Gestione comandi da più thread di accoglienza e buffer di elaborazione su più dispositivi;
* Operazioni sulle regioni di un buffer tra cui leggere, scrivere e copia delle regioni rettangolari 1D, 2D o 3D;
* Uso avanzato degli eventi per guidare e controllare l'esecuzione dei comandi;
* Ulteriori introduzioni delle funzioni C, come la pinza integer, shuffle, e le copie strided asincroni;
* Migliore interoperabilità OpenGL attraverso un'efficiente condivisione di immagini e buffer collegando gli eventi OpenCL e OpenGL.
 
;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 immagine: 1.2 aggiunge il supporto per le immagini 1D e array di immagini 1D / 2D. Inoltre, le estensioni di condivisione OpenGL permettono ora per le texture OpenGL 1D ed array 1D / 2D di texture da utilizzare per creare immagini OpenCL.
* 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 IEEE 754 conformità 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.
 
;2.0
Pubblicata il 18 novembre 2013, gli aggiornamenti e le aggiunte al OpenCL 2.0 includono:
* Memoria virtuale condivisa
* Parallelismo nidificato
* Spazio di indirizzamento Generico
* Immagini
* Atomics C11
* Pipes
* Android estensione driver client installabile
 
;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 per un sottoinsieme statico di C ++ 14 come lingua kernel. Vulkan e OpenCL 2,1 parti SPIR-V 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
* Copia di oggetti del kernel e stati
* Bassa latenza query timer dispositivo
* L'ingestione di codice SPIR-V by runtime
* Priorità di esecuzione suggerimenti per le code
* Zero dimensioni dispacci da ospite
 
AMD, ARM, Intel, HPC, e YetiWare hanno dichiarato il supporto per OpenCL 2.1.
Riga 80:
== Voci correlate ==
* CAL (ex [[Close to Metal|CTM (Close To Metal)]]), Framework di [[Advanced Micro Devices|AMD]] per la programmazione delle sue GPU [[Advanced Micro Devices|AMD]] Radeon HD e FireStream. Il modello di programmazione proposto è di tipo ''streaming'', con forti richiami ai linguaggi data oriented. Usa una specializzazione di Brook, denominato Brook+ di ispirazione vettoriale.
* [[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 [[Mac OS XmacOS]]).
* [[Intel Larrabee]]