OpenCL编译器的空白问题

时间:2015-04-10 20:59:46

标签: opencl cloo

我试图开始使用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)

1 个答案:

答案 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接受字符串数组但只是将它连接在一起..