26.06.2013 Views

Utilisation avancée des processeurs graphiques avec Qt

Utilisation avancée des processeurs graphiques avec Qt

Utilisation avancée des processeurs graphiques avec Qt

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Utilisation</strong> <strong>avancée</strong> <strong>des</strong> <strong>processeurs</strong> <strong>graphiques</strong> <strong>avec</strong> <strong>Qt</strong> par Rémi Achard Guillaume Belz<br />

Les vecteurs sont ensuite stockés dans la mémoire globale (DRAM) du GPU et initialisés dans le cas <strong>des</strong> deux<br />

vecteurs d'entrée.<br />

cpp<br />

// Version C<br />

cl_mem dev_A = clCreateBuffer(gpuContext, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, size *<br />

sizeof(cl_float), A, &err);<br />

cl_mem dev_B = clCreateBuffer(gpuContext, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, size *<br />

sizeof(cl_float), B, &err);<br />

cl_mem dev_C = clCreateBuffer(gpuContext, CL_MEM_WRITE_ONLY , size * sizeof(cl_float), 0 , &err);<br />

// Version C++<br />

char * outH = new char[hw.length()+1];<br />

cl::Buffer outCL(context, CL_MEM_WRITE_ONLY | CL_MEM_USE_HOST_PTR, hw.length()+1, outH, &err);<br />

// Version <strong>Qt</strong>OpenCL<br />

QCLBuffer -> création d'un buffer à partir d'un vector<br />

QCLVector -> création d'un vecteur et d'un buffer et transfère automatique CPUGPU<br />

QCLVector input1 = context.createVector(2048);<br />

Le résultat étant stocké sur le GPU, on recopie son contenu dans le pointeur C à l'aide de la fonction<br />

clEnqueueReadBuffer().<br />

cpp<br />

clEnqueueReadBuffer(clCommandQueue, dev_C, CL_TRUE, 0, size * sizeof(cl_float), C, 0, 0, 0);<br />

Enfin, les buffers alloués sur le GPU sont libérés.<br />

cpp<br />

clReleaseMemObject(dev_A);<br />

clReleaseMemObject(dev_B);<br />

clReleaseMemObject(dev_C);<br />

- 70 -<br />

http://gbelz.developpez.com/remi-achard/gpu-avance-<strong>avec</strong>-qt/modified/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!