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 接受字符串数组但只是将其连接在一起..
我正在尝试开始使用 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 接受字符串数组但只是将其连接在一起..