0

我在工作组大小为 16*16 且工作全局大小为 1024*1024 的 NDRange 上执行 OpenCL 程序。应用是矩阵乘法。当两个输入矩阵的大小都很小时,它工作得很好。但是当输入矩阵的大小变大,例如大于20000*20000时,enqueuendrangekernrl函数报错“CL_MEM_OBJECT_ALLOCATION_FAILURE”。

我很困惑。我不熟悉内存分配。什么原因?

4

1 回答 1

2

使用clGetDeviceInfo,您可以使用 CL_DEVICE_GLOBAL_MEM_SIZE 查询设备全局内存大小,使用CL_DEVICE_MAX_MEM_ALLOC_SIZE可以在单个内存对象中分配的最大大小。20000*20000*sizeof(float) = 1.6 GB 的三个矩阵可能超过了这些限制。

于 2013-08-10T04:44:10.503 回答