我有很难确定为什么分割故障在我的代码下面的行随机发生:的OpenCL clEnqueueReadBuffer段错误随机
rc = clEnqueueReadBuffer(ompctx->clctx->queue,
ompctx->result, CL_TRUE, 0, sizeof(int), &pos,
1, &ompctx->clctx->ev1, NULL);
ompctx->结果是用作整数数组的存储对象并且pos是一个主对象,声明为:
int pos
我尝试在堆栈和全局空间中声明pos,结果不会改变。 我试着等待最后一个内核完成(如上所述,尽管我不应该因为我有一个按顺序的命令队列)并且没有等待,但结果仍然是一样的。
我使用的是AMD APP v2.8,我尝试过使用8个CPU的i7和AMD FirePro v8800。两者都表现出同样的问题。
我错过了一些明显的东西吗?我还应该检查什么?
也许你解引用了一个'null'指针?没有看到更多的代码,这将很难说。 –
我打印指针,并且在调用ReadBuffer之前它们都看起来没问题。这个队列在调用之前就被使用了,并且它总是成功的,结果也被成功地使用,pos是一个全局变量,如果它们在那里或者没有,这些事件没有什么区别。所以我不认为这是一个空指针解引用。 –
您是否尝试过使用英特尔OpenCL平台?它会给你同样的错误吗? – Ani