我目前正在创建一个内核,该内核使用以下调用将 3D 卷从源缓冲区平滑到目标缓冲区:
d_aVolumeInput = clCreateBuffer(g_dGpuContext, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, _nVoxelsScanArea, _aVolumeInput, &g_nErrNum); CHECK_OCL();
d_aVolumeSmooth = clCreateBuffer(g_dGpuContext, CL_MEM_WRITE_ONLY| CL_MEM_COPY_HOST_PTR, _nVoxelsScanArea, _aVolumeInput, &g_nErrNum); CHECK_OCL();
不幸的是,我的内核假设一个初始化的目标数组“d_aVolumeSmooth”效率更高,到目前为止,我发现使其工作的唯一方法是将我的 _aVolumeInput 发送到两个数组,从而导致几兆字节的数据每帧发送...
有没有办法让我分配正确大小的设备端内存并将其初始化为零?