0
我运行的OpenCL程序的多次迭代,经过了几下,我得到以下错误:运行此命令CL_OUT_OF_RESOURCES GPU错误
err = clEnqueueReadBuffer(commands, d_c, CL_TRUE, 0,
sizeof(char) * result_size,
result_buffer, 0, NULL, NULL);
checkErr(err,"Read Result");
内核分配3当全球
ERROR: Read Result (-5)
CL_OUT_OF_RESOURCES
内存缓冲区,我释放
clReleaseMemObject(d_a);
clReleaseMemObject(d_b)
clReleaseMemObject(d_c);
clReleaseKernel(ko_smat);
但我也分配本地和私人内存,特权在内核(char tmp_array)和本地内存中分配了内存。 我的内核的定义:
__kernel void mmul(
__global char* C,
__global char* A,
__global char* B,
const int rA,
const int rB,
const int cC,
__local char* local_mem)
本地存储在内核通过
clSetKernelArg(ko_smat,6, sizeof(char) * local_mem_size, NULL);
创建我猜测,在内存不足的错误是由我没有释放任何私有内存不足引起或本地记忆,但我不知道如何?
私有和本地内存具有内核的生命周期,并且不是* free * able。 – Farzad 2014-10-20 02:47:49
这就是我的想法,但什么可以解释,然后我最终得到这个错误(经过多次迭代?) – user1018513 2014-10-20 02:55:13
在nVIDIA平台上。读取已用于从内核写入数据的缓冲区时出现OUT_OF_RESOURCES错误,表示内核在写入该缓冲区时执行了SEG_FAULT。也就是说,它写入了缓冲区之外的地址。 – DarkZeros 2014-10-20 15:26:40