CPUポインタ(cpu_ptr_)がすでに存在すると仮定して、gpu(cl_gpu_mem_)のバッファを作成します。問題は、gpuバッファをCPUポインタ(mapped_ptr)にマップすると、mapped_ptrが元のポインタ(cpu_ptr_)と等しくなく、そのCHECK_EQ(mapped_ptr、cpu_ptr_)がエラーを発生させるということです。clEnequeMapBufferが元のポインタOpenCL Caffeにマップされない理由
cl_gpu_mem_ = clCreateBuffer(ctx.handle().get(),
CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR,
size_, cpu_ptr_, &err);
void *mapped_ptr = clEnqueueMapBuffer(
ctx.get_queue().handle().get(),
cl_gpu_mem_,
true,
CL_MAP_READ | CL_MAP_WRITE,
0, size_, 0, NULL, NULL, NULL);
CHECK_EQ(mapped_ptr, cpu_ptr_)
<< "Device claims it supports zero copy"
<< " but failed to create correct user ptr buffer";
このエラーがなぜ発生するのかわかりません。この問題やそれに対する解決策について、私に助言をお願いしますか?どうもありがとうございました。
アドバイスをいただきありがとうございます。私はエラーを見つけて修正しようとしました。 –