我收到错误-9999
Breakpoint 7, cl::detail::errHandler (err=-9999, errStr=0x43cc1f "clWaitForEvents") at /opt/AMDAPPSDK-3.0-0-Be ta/include/CL/cl.hpp:321
在
event.wait()
因为以下行valid[id] = 1;
有效期为
__global int* valid
。
.cl代码是
__kernel void validateRecords(__global const char* buffer, __global const struct RecordInfo* allRecords, __global int* valid, const unsigned int n)
{
const int id=get_global_id(0);
if (id < n)
{
char* record = buffer[allRecords[id].position];
int size = allRecords[id].length;
int updateTimeLen = findFixed(record, size, ',');
if(updateTimeLen == -1 || updateTimeLen != UPDATE_TIME_LEN)
{
valid[id] = 1;
return;
}
}
}
我收到错误
code -9999 at
有效[id] = 1。
我注意到,如果我评论// valid [id] = 1;或// int updateTimeLen = findFixed(record,size,&#39;,&#39;);一切都很好,但是当两者都使用时我得到了上述错误。
该设备是带有OpenCL 1.1的GTX 980。你能帮忙吗?
答案 0 :(得分:0)
我想我发现了这个问题。首先,我在Nvidia卡上使用AMD SDK。这对我来说效果很好(使用GTX 780 Ti)。但是这次我注意到了一些问题。第一个是这一行:
char* record = buffer[allRecords[id].position];
我最初(正确地)写为
char* record = buffer + allRecords[id].position;
但是它没有编译,我机械地将它改为上面并且它确实编译了。这是第一个问题,但它与错误无关。
第二个是传递__private char *继续抛出错误-9999无论我做什么(可能是因为SDK不同,但它可能是其他的东西),所以我将__global char *缓冲区传递给函数一切正常。