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