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.