0

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

4

1 回答 1

0

这是一个编译器错误。希望有一天它会得到修复。现在,我将避免使用特定的优化技巧。

于 2012-08-13T10:34:17.693 回答