私はOpenCLを使用してCUDAで書かれたコードをアルテラのFPGA上で実行しようとしています。私はバッファにあると思われるデータを読み戻す際に問題が発生しています。私はCUDAのバージョンと同じ構造を使用していますが、cudaMallocはすべてのタイプのポインタにメモリを割り当てることができますが、clCreateBufferではcl_memを使用する必要があります。私のコードは次のようになります。OpenCL、ホストからのデバイスバッファポインタを管理しますか?
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
私はclCreateBufferためclEnqueueMapBufferまたはCL_MEM_ALLOC_HOST_PTRを試みたが、それはどちらか動作しません。