我试图开始使用OpenCL,但是遇到了关于空白区域的OpenCL编译器的奇怪行为,并且似乎找不到任何关于它的文档。
C风格的单行注释(// foo
)会立即导致无意义的构建错误:At end of source: error: expected a "}"
。多行评论(/* bar */
)似乎工作正常。
换行符似乎被剥离而没有添加可能导致错误的空格。由于这个原因,此示例无法编译:
__kernel
void TestKernel() {}
line 1: error: identifier "__kernelvoid" is undefined
这可能完全取决于我的机器和/或配置,但有人可以确认这些事情不应该这样吗?
我通过Cloo从.net / C#使用OpenCL。该驱动程序来自AMD OpenCL 2.0 AMD-APP (1642.5)
答案 0 :(得分:0)
我想我明白了。我这样做了:
var program = new ComputeProgram(context, File.ReadAllLines(filename));
File.ReadAllLines()
返回一个字符串数组,但没有换行符,这是我得到的错误的根源。
使用File.ReadAllTest()
代替解决了所有问题:
var program = new ComputeProgram(context, File.ReadAllText(filename));
但是在我看来,一些责任归咎于Cloo或OpenCL API接受字符串数组但只是将它连接在一起..