cou*_*nt0 5 c++ gpu gpgpu opencl gpu-programming
我正在GPU上分配一个cl_mem缓冲区并对其进行处理,它可以正常工作,直到超过一定的大小.在这种情况下,分配本身成功,但执行或复制不成功.我确实想要使用设备的内存以便更快地操作,所以我分配如下:
buf = clCreateBuffer (cxGPUContext, CL_MEM_WRITE_ONLY, buf_size, NULL, &ciErrNum);
Run Code Online (Sandbox Code Playgroud)
现在我不明白的是尺寸限制.我正在复制大约16 MB但应该可以使用大约128 MB(参见参考资料CL_DEVICE_MAX_MEM_ALLOC_SIZE).
为什么这些数字差异如此之大?
以下是oclDeviceQuery的一些摘录:
CL_PLATFORM_NAME: NVIDIA
CL_PLATFORM_VERSION: OpenCL 1.0
OpenCL SDK Version: 4788711
CL_DEVICE_NAME: GeForce 8600 GTS
CL_DEVICE_TYPE: CL_DEVICE_TYPE_GPU
CL_DEVICE_ADDRESS_BITS: 32
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 128 MByte
CL_DEVICE_GLOBAL_MEM_SIZE: 255 MByte
CL_DEVICE_LOCAL_MEM_TYPE: local
CL_DEVICE_LOCAL_MEM_SIZE: 16 KByte
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64 KByte
Run Code Online (Sandbox Code Playgroud)