J'essaie d'implémenter un code précédemment écrit en CUDA en utilisant OpenCL pour l'exécuter sur FPGA Altera. J'ai du mal à lire les données qui sont censées être dans le tampon. J'utilise la même structure que la version CUDA, seule chose différente est que cudaMalloc peut allouer de la mémoire pour tous les types de pointeurs alors que pour clCreateBuffer je dois utiliser cl_mem. Mon code ressemble à ceci:OpenCL, gérer le pointeur de tampon de périphérique de l'hôte?
cl_mem d_buffer=clCreateBuffer(...);
//CUDA version:
//float* d_buffer;
//cudaMalloc((void **)&d_buffer, MemSz);
clEnqueueWriteBuffer(queue, d_buffer, ..., h_data,);
//cudaMemcpy(d_buffer, h_Data, MemSz, cudaMemcpyHostToDevice);
#define d_buffer(index1, index2, index3) &d_buffer + index1/index2*index3
//#define d_buffer(index1, index2, index3) d_buffer + index1/index2*index3
cl_mem* d_data=d_buffer(1,2,3);
clEnqueueReadBuffer(queue, *d_data,...)// Error reading d_data
J'ai essayé clEnqueueMapBuffer ou CL_MEM_ALLOC_HOST_PTR pour le clCreateBuffer, cela ne fonctionne pas non plus.