为什么我得到一个CL_MEM_OBJECT_ALLOCATION_FAILURE?
-
18-09-2019 - |
题
我在 GPU 和它的工作,它的工作原理细直至超过一定规模。在这种情况下,分配本身的成功,但执行或复制不会。我确实想,所以我喜欢分配给使用设备的存储器,用于更快的操作:
buf = clCreateBuffer (cxGPUContext, CL_MEM_WRITE_ONLY, buf_size, NULL, &ciErrNum);
现在我不明白的是大小限制。我复制大约16兆字节,但应能够使用约128兆字节(参见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
其他提示
不要忘记你发生什么其他的内存已经在设备上使用(如果这也是你的显卡,那你的显示器使用的内存)。
(有没有办法得到当前的可用内存,或者最大的片段,或诸如此类?)
不隶属于 StackOverflow