OpenCL 1.1,使用 Cloo 0.9.1.0。
对于某个 CL 模块,我在以下行出现崩溃:
program.Build(null, null, null, IntPtr.Zero);
Visual Studio 2010 告诉我:
Cloo.dll 中出现“System.AccessViolationException”类型的未处理异常
附加信息:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
我已将错误追溯到某行代码。
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));
我正在使用上面的技巧来避免分支。除了上述在编译时产生访问冲突的一种情况外,它在所有情况下都可以正常工作。如果我删除条件乘法,它会起作用。例如
int offset = 1000000;
// -or-
int offset = (input != 0 ? 0 : 1000000);
我在这里面临编译器错误吗?如何解决此错误?
关于我的显卡/驱动程序的一些详细信息:
驱动封装版本:8.85.7.2-110901a1-125827C-富士通科技
解决方案提供商:ATI Technologies Inc. 2D 驱动程序版本:8.01.01.1152