Apri cl in Intel


9

Come compilare ed eseguire codici cl aperti su processori Intel i5 con unità Intel 4000 HD ??? Open cl è stato installato in / opt / intel / opencl e la versione è ubuntu 12.04. Qualsiasi aiuto sarebbe di grande aiuto ... Grazie


Che problema stai riscontrando?
Thomas,

quindi questo emulatore funziona per Intel ....
Piyush Kumar,

@thomas, quando sto eseguendo il file, non trova alcun file o libreria ... l'errore dice che nessun file o directory CL / cl.h non è stato trovato. Inoltre c'è un file chiamato kernelBuilder, quando sto cercando di eseguirlo, arriva un prompt ma si ferma e dice che avviso GCOnf, il client non è riuscito a connettersi al demone del bus D e non ha ricevuto una risposta ....
Piyush Kumar

@PiyushKumar sudo apt-get install opencl-headersforse. Dopodiché dovrebbe trovare il libOpenCL.so, ma ho avuto grossi problemi in passato con Intel che non riusciva a registrare la libreria e causava errori di collegamento.
Thomas,

Thomas, ci proverò ... Immagino che potrei usare le tue esperienze
Piyush Kumar,

Risposte:


10

Primo:
sudo apt-get install beignet opencl-headers

Aggiungi la cartella beignet al percorso di ricerca della tua libreria:

sudo su
echo "/usr/lib/beignet/" > /etc/ld.so.conf.d/beignet.conf
ldconfig
exit

Ottieni un semplice binario di prova:

git clone https://github.com/vpereira/CapsBasic-beignet

Modifica il makefile in modo che assomigli di più a questo:

all: capsbasic

capsbasic: capsbasic.cpp Makefile
    g++ capsbasic.cpp -lcl -ocapsbasic -I/usr/include -L/usr/lib/beignet

clean:
    rm -f capsbasic

Ecco qua. OpenCL funzionante per la famiglia di schede video Intel HD ...

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)

./capsbasic

Number of available platforms: 1
Platform names:
    [0] Experiment Intel Gen OCL Driver [Selected]
Number of devices available for each type:
    CL_DEVICE_TYPE_CPU: 0
    CL_DEVICE_TYPE_GPU: 1
    CL_DEVICE_TYPE_ACCELERATOR: 0

*** Detailed information for each device ***

CL_DEVICE_TYPE_GPU[0]
    CL_DEVICE_NAME: Intel HD Graphics Family
    CL_DEVICE_AVAILABLE: 1
    CL_DEVICE_VENDOR: Intel
    CL_DEVICE_PROFILE: FULL_PROFILE
    CL_DEVICE_VERSION: OpenCL 1.1
    CL_DRIVER_VERSION: 0.2
    CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.1
    CL_DEVICE_MAX_COMPUTE_UNITS: 128
    CL_DEVICE_MAX_CLOCK_FREQUENCY: 1000
    CL_DEVICE_MAX_WORK_GROUP_SIZE: 512
    CL_DEVICE_ADDRESS_BITS: 32
    CL_DEVICE_MEM_BASE_ADDR_ALIGN: 32
    CL_DEVICE_MAX_MEM_ALLOC_SIZE: 134217728
    CL_DEVICE_GLOBAL_MEM_SIZE: 4
    CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 65536
    CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 8192
    CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128
    CL_DEVICE_LOCAL_MEM_SIZE: 65536
    CL_DEVICE_PROFILING_TIMER_RESOLUTION: 80
    CL_DEVICE_IMAGE_SUPPORT: 1
    CL_DEVICE_ERROR_CORRECTION_SUPPORT: 0
    CL_DEVICE_HOST_UNIFIED_MEMORY: 0
    CL_DEVICE_EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp64 cl_khr_icd cl_khr_gl_sharing
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 0
    CL_DEVICE_NATIVE_VECTOR_WIDTH_INT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: 16
    CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: 16

1
Grazie, ma secondo Intel non supportano OpenCL su HD 4000 per Linux: OpenCL SDK 1.2 per Linux, senza Xeon? . Che tipo di performance stai ottenendo?
nealmcb,

1
Aha - ora vedo che README.txt per Beignet spiega che è un'alternativa all'SDK OpenCL di Intel, che in effetti supporta l'HD 4000. Grazie !! Si noti che la gente deve effettivamente eseguire makeanche ... È necessario eseguire la ldconfigprova di un problema con il pacchetto?
nealmcb,

2
La performance, come dice l'open, è piuttosto scadente e piuttosto glitch. Il codice che viene eseguito su altre implementazioni open source a volte si arresta o si blocca. Ti consente di costruire banali cose di prova senza spingere verso un impianto di elaborazione.
RobotHumans,

Non credo che la necessità di aggiungerlo al percorso di ricerca della tua biblioteca sia un problema con la biblioteca. Se stai usando OpenCL, il presupposto è che tu abbia un qualche know-how tecnico. Personalmente, mi piacerebbe se i pacchetti OpenCL fossero tutti installabili contemporaneamente e potessi semplicemente cambiare la libreria inclusa nel tuo percorso di ricerca e rieseguire ldconfig per indicarne uno diverso. Ciò potrebbe essere utile se disponessi di un box di prova con tutti e 3 i "marchi" di chipset video come ambiente di test e hai escogitato un modo per eseguire il benchmark o eseguire semplicemente il test del codice su tutti i possibili target.
RobotHumans,

1
Questo ha senso. Sarei più a bordo con qualcosa come schiaffeggiarlo in fantino, aggiornamenti-alternative o qualsiasi altra cosa. Cambiare libreria con qualcosa che dovrebbe cambiare libreria? Certo, sembra una buona idea per una situazione insostenibile.
RobotHumans,

0

Per compilare è necessario un compilatore come gcc. Puoi scaricare gcc dal suo repository. (scegli il numero di versione più grande per più funzionalità C ++ 11).

$> sudo apt-get install gcc-4.7

Dopodiché devi collegare la tua libreria OpenCL all'applicazione che stai compilando. Diciamo che il codice dell'applicazione Host (main.c) e il codice dell'applicazione kernel (kernel.cl) risiedono in una cartella chiamata test. Dovresti fare come segue:

$ test> gcc -I / opt / intel / include -L / opt / intel / lib / [x86 o x86_64] / main.c -o a.out

Dovrebbe occuparsi della compilazione. Dovresti eseguire l'output come:

$ Test> ./ a.out

e prenditi cura di qualsiasi errore di runtime che potresti ricevere (inclusa la correzione del percorso verso kernel.cl ecc.).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.