OpenCL 1.1,使用Cloo0.9.1.0。
对于某个CL模块,我会在下面一行中崩溃:
program.Build(null, null, null, IntPtr.Zero);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));我用上面的技巧来避免分支。除了在编译时中产生访问冲突的情况外,它在所有情况下都能完美地工作。如果去掉条件乘法,它就能工作。例如。
int offset = 1000000;
// -or-
int offset = (input != 0 ? 0 : 1000000);,我现在正面临编译器的错误吗?如何处理此错误?
有关我的图形卡/驱动程序的一些详细信息:
驱动程序打包版本: 8.85.7.2-110901a1-125827C-Fujitsu技术
解决方案提供商: ATI技术公司2D驱动程序版本: 8.01.01.1152
发布于 2012-08-13 10:34:17
是编译器的错误。希望有一天能修好。现在,我只想避免这个特定的优化技巧。
https://stackoverflow.com/questions/10894386
复制相似问题