clBuildProgram产生访问冲突(使用Cloo)

时间:2012-06-05 09:00:21

标签: opencl cloo

OpenCL 1.1,使用Cloo 0.9.1.0。

对于某个CL模块,我在以下行遇到崩溃:

program.Build(null, null, null, IntPtr.Zero);

Visual Studio 2010告诉我:

  

“System.AccessViolationException”类型的未处理异常   发生在Cloo.dll

     

附加信息:尝试读取或写入受保护的内存。   这通常表明其他内存已损坏。

我已将错误跟踪到某行代码。

int offset = 1000000 * (input == 0); // This is the culprit!
const sampler_t smp = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST;
int4 pixel = read_imagei(image, smp, (int2)(offset + x, y));

我正在使用上面的技巧来避免分支。它在除了一种情况之外的所有情况下都能正常工作,其中上述情况会在编译时时产生访问冲突。如果我删除条件乘法它是有效的。 E.g。

int offset = 1000000;
// -or-
int offset = (input != 0 ? 0 : 1000000);

我在这里遇到编译器错误吗?如何解决此错误?

有关我的显卡/驱动程序的一些细节:

  

驱动程序封装版本:8.85.7.2-110901a1-125827C-Fujitsu Technology

     

解决方案提供商:ATI Technologies Inc. 2D驱动程序版本:8.01.01.1152

1 个答案:

答案 0 :(得分:0)

这是一个编译错误。希望它能在某一天得到修复。现在,我将避免这种特定的优化技巧。