OpenCL compiler white-space 问题

OpenCL compiler white-space problems

我正在尝试开始使用 OpenCL,但遇到了 OpenCL 编译器关于 white-space 的奇怪行为,似乎找不到任何相关文档。

C 风格的单行注释 (// foo) 立即导致无意义的构建错误:At end of source: error: expected a "}"。多行注释 (/* bar */) 似乎工作正常。

换行符似乎在没有添加白色的情况下被删除space,这可能会导致错误。此示例将因此无法编译:

__kernel
void TestKernel() {}

line 1: error: identifier "__kernelvoid" is undefined

这可能完全取决于我的机器 and/or 配置,但有人可以确认这些事情不应该是这样吗?

我正在通过来自 .net/C# 的 Cloo 使用 OpenCL。驱动来自AMD OpenCL 2.0 AMD-APP (1642.5)

我想我明白了。我是这样做的:

var program = new ComputeProgram(context, File.ReadAllLines(filename));

File.ReadAllLines() returns 没有换行符的字符串数组,这是我遇到错误的根源。

改用 File.ReadAllTest() 解决了所有问题:

var program = new ComputeProgram(context, File.ReadAllText(filename));

但在我看来,部分责任归咎于 Cloo 或 OpenCL API 接受字符串数组但只是将其连接在一起..