我正在创建一个内核,使用以下调用将源卷缓冲区中的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'发送到两个数组,从而导致几个额外的每帧要发送的兆字节数据......
我有没有办法分配合适大小的设备端内存并将其初始化为零?