Pubblicate le specifiche finali di OpenCL 3.0

L'azienda Khronos, responsabile dello sviluppo delle specifiche della famiglia OpenGL, Vulkan e OpenCL, annunciato alla pubblicazione delle specifiche finali OpenCL 3.0, che definisce API ed estensioni del linguaggio C per organizzare il calcolo parallelo multipiattaforma utilizzando CPU multi-core, GPU, FPGA, DSP e altri chip specializzati, da quelli utilizzati nei supercomputer e nei server cloud ai chip che possono essere trovati nei dispositivi mobili e tecnologia integrata. Lo standard OpenCL è completamente aperto e non richiede costi di licenza.

Contemporaneamente pubblicato open OpenCL SDK con strumenti, esempi, documentazione, file header, collegamenti C++ e librerie C per lo sviluppo di applicazioni compatibili con OpenCL 3.0. Anche представлена implementazione iniziale di OpenCL 3.0 basata sul compilatore Clang, che è nella fase di revisione delle patch per l'inclusione nella struttura principale di LLVM. Al lavoro sullo standard hanno preso parte aziende come IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments e Toshiba.

Pubblicate le specifiche finali di OpenCL 3.0

Il più notevole caratteristiche OpenCL 3.0:

  • L'API OpenCL 3.0 ora copre tutte le versioni di OpenCL (1.2, 2.x), senza fornire specifiche separate per ciascuna versione. OpenCL 3.0 offre la possibilità di estendere le funzionalità principali attraverso l'integrazione di specifiche aggiuntive che verranno stratificate sotto forma di opzioni senza bloccare la natura monolitica di OpenCL 1.2/2.X.
  • Solo le funzionalità conformi a OpenCL 1.2 sono dichiarate obbligatorie e tutte le funzionalità proposte nelle specifiche OpenCL 2.x sono classificate come opzionali. Questo approccio semplificherà la creazione di implementazioni personalizzate compatibili con OpenCL 3.0 e amplierà la gamma di dispositivi su cui è possibile utilizzare OpenCL 3.0. Ad esempio, i produttori possono implementare il supporto OpenCL 3.0 senza implementare funzionalità specifiche di OpenCL 2.x. Per accedere alle funzionalità linguistiche opzionali, OpenCL 3.0 ha aggiunto un sistema di query di test che consente di valutare il supporto di singoli elementi API, nonché di macro speciali.
  • L'unificazione con le specifiche rilasciate in precedenza semplifica la migrazione delle applicazioni a OpenCL 3.0. Le applicazioni OpenCL 1.2 potranno essere eseguite su dispositivi che supportano OpenCL 3.0 senza modifiche. Inoltre, le applicazioni OpenCL 2.x non richiederanno modifiche al codice, purché l'ambiente OpenCL 3.0 fornisca le funzionalità richieste (per garantire la portabilità futura, si consiglia alle applicazioni OpenCL 2.x di aggiungere query di prova per valutare il supporto per le funzionalità OpenCL 2.x in uso). Gli sviluppatori di driver con implementazioni OpenCL possono facilmente aggiornare i propri prodotti a OpenCL 3.0, aggiungendo solo l'elaborazione delle query per determinate chiamate API e aumentando gradualmente la funzionalità nel tempo.
  • La specifica OpenCL 3.0 è allineata con l'ambiente, le estensioni e le specifiche della rappresentazione intermedia generica SPIR-V, utilizzata anche dall'API Vulkan. Il supporto per la specifica SPIR-V 1.3 è incluso nel core OpenCL 3.0 come funzionalità opzionale. Attraverso l'uso di una rappresentazione intermedia SPIR-V per i core di calcolo è stato aggiunto il supporto per le operazioni con sottogruppi.
    Pubblicate le specifiche finali di OpenCL 3.0

  • Aggiunto il supporto per un'estensione per eseguire operazioni DMA asincrone (Asynchronous DMA), supportata in chip simili a DSP con accesso diretto alla memoria. Il DMA asincrono consente di utilizzare le transazioni DMA per trasferire dati tra la memoria globale e quella locale in modo asincrono, in parallelo con calcoli o altre operazioni di trasferimento dati.
  • La specifica delle estensioni di programmazione parallela C è stata aggiornata a versione 3.0e lo sviluppo delle estensioni del linguaggio OpenCL per C++ è stato interrotto a favore del progetto "C++ for OpenCL". C++ per OpenCL è un compilatore basato su Clang/LLVM e trasmissione Kernel C++ e OpenCL C nella rappresentazione intermedia SPIR-V o nel codice macchina di basso livello. Attraverso il broadcasting, SPIR-V organizza anche l'assemblaggio di applicazioni C++ utilizzando la libreria di template SYCL, che semplifica la creazione di applicazioni parallele.

    Pubblicate le specifiche finali di OpenCL 3.0

  • È stato proposto un compilatore per trasmettere OpenCL tramite l'API Vulkan cspv, che converte i kernel OpenCL in una rappresentazione Vulkan SPIR-V e un layer clvk per consentire all'API OpenCL di funzionare su Vulkan.

    Pubblicate le specifiche finali di OpenCL 3.0

Fonte: opennet.ru

Aggiungi un commento