2014-11-15 11 views
5

Qual è la differenza tra Intel, AMD e Khronos OpenCLs. Sono totalmente nuovo a OpenCL e voglio iniziare con esso. Non so quale sia il migliore da installare sul mio sistema operativo.Intel OpenCL vs. Khronos OpenCL

risposta

9

OpenCL è una "estensione" ai linguaggi C e C++ che consente parallelizzazione del software sui dispositivi di elaborazione: CPU, GPU, ecc

OpenCL è definito da uno standard (creato da Khronos Group) e implementati dai produttori di hardware Intel, AMD, nVidia, ecc.. Quindi, ogni implementazione di OpenCL richiede un driver OpenCL specifico per il produttore che consentirà l'utilizzo dell'hardware del fornitore.

Quindi, per concludere, se si dispone di un sistema basato su Intel, utilizzare Intel OpenCL perché solo così si sarebbe in grado di utilizzare tutti i dispositivi di calcolo nel computer. Lo stesso vale se hai un sistema AMD. Inoltre, prendi nota che non esiste un'implementazione di Khronos OpenCL.

Ovviamente è possibile avere una piattaforma con dispositivi abilitati OpenCL da più fornitori (ad esempio CPU Intel + GPU e scheda digitale nVidia). In questo caso il runtime di OpenCL contiene un livello generico (una libreria caricata dinamicamente). Questo livello è un'interfaccia che chiama le implementazioni fornite in ciascun driver di dispositivo in base alla piattaforma OpenCL selezionata.

+0

Grazie per la risposta. Quindi, è qualcosa come OpenGL che ogni piattaforma ha la propria implementazione ma i khronos definiscono solo ciò che dovrebbe essere nella prossima versione e così via. È vero? – mmostajab

+0

ma per esempio, per opengl possiamo usare l'implementazione di windows o linux senza installare nVIDIA o l'implementazione ATI ma l'opencl non ha un'implementazione del sistema operativo. – mmostajab

+0

Non ne sono sicuro, ma penso che l'implementazione di OpenGL sia integrata nel driver grafico. Quindi quando si scarica il driver grafico su Windows si ottiene un'implementazione specifica di OpenGL. Forse su Linux hai un'implementazione agnostica HW. – VAndrei

0

Khronos definisce lo standard OpenCL. Ogni fornitore/open source implementerà tali standard.

Khronos definisce una serie di test di conformità che devono essere superati se un venditore afferma che la sua implementazione di opencl è come per standard.

1

OpenCL è uno standard definito da Kronos. Sono distribute header files che devi dare al tuo compilatore. Non distribuiscono i binari per il collegamento. Per questo, è necessario ottenere un ICD (Installable Client Driver), su Windows questo è sotto forma di file DLL. Otterrete da l'installazione di uno o più dei ...

  • Nvidia drivers (se si dispone di una GPU Nvidia)
  • AMD drivers (se si dispone di una GPU AMD o una CPU AMD)
  • Intel Drivers (se hai una CPU Intel, anche alcune CPU Intel hanno una GPU integrata).

Non preoccuparti della compilazione di un fornitore e non funziona su un altro, OpenCL è stato progettato con cura per ovviare a questo problema. Compilati contro qualsiasi versione che hai, funzionerà con qualsiasi altra versione uguale o nuova, indipendentemente da chi l'ha creata.

Be Aware, il driver AMD OpenCL funzionerà come driver OpenCL per CPU Intel. Se, ad esempio, disponi di una GPU AMD e una CPU Intel e hai installato il driver Intel OpenCL e, il driver AMD OpenCL, il driver AMD segnalerà che può fornire sia un dispositivo GPU che un dispositivo CPU (la tua CPU), e il driver Intel riferirà di avere un dispositivo CPU (anche la tua CPU) e molto probabilmente anche un dispositivo GPU (la GPU che si trova sulla CPU Intel muore, per esempio su un i7-3770, questo sarà un HD4000). Se chiedi ciecamente a OpenCL "Tutte le CPU disponibili" otterrai i driver AMD ei driver Intel che ti offrono la stessa CPU . Il tuo codice non funzionerà molto bene in questo caso.

Su Windows è previsto che l'utente sia download the header files e quindi creare una libreria dalla DLL (MSVC) o collegare direttamente alla DLL (comportamento predefinito di Mingw & Clang).

Su Linux, è probabile che il gestore di pacchetti contenga una libreria a cui collegarsi, consultare la documentazione delle distribuzioni in merito. Su Ubuntu e Debian questo comando funzionerà ...

sudo apt-get install ocl-icd-opencl-dev 

Su Mac, non c'è nulla da installare, e cercando di installare qualcosa probabilmente danneggiare il sistema. Basta installare Xcode e utilizzare il framework "OpenCL".

Esistono altre piattaforme, ad esempio Android. Alcuni fornitori di FPGA offrono librerie OpenCL. Consulta la documentazione dei tuoi fornitori.