【发布时间】:2017-05-04 08:23:39
【问题描述】:
我有一个可以在我的 MAC 上完美运行的 OpenCL 代码。但是当我将它移植到 EC2 g2.2xlarge 实例时,它给出了
Exception
ERROR: clBuildProgram(-11)
现在经过大量调试,我发现内核有语法错误。进一步缩小范围后,我发现错误在以下行:
int size_a = POP_SIZE / 4 / numberOfDevices;
int aliveIndividualsIndex[size_a];
如果我尝试:
int aliveIndividualsIndex[40];
那么它也适用于 EC2 实例。
为什么 MAC 和 EC2 实例处理相同内核代码的方式会有所不同?为什么其中一个可以识别代码,而另一个为什么会出现语法错误?我如何解决它?因为我需要使用 [size_a]。
他们都使用 OpenCL 1.2。如果您需要有关 gcc 或 g++ 或其他任何版本的更多信息,请询问,我会提供。
【问题讨论】:
-
不可能在 CL 中创建动态运行时数组,应该在编译时知道内存占用,以便为内核正确分配内存。如果代码在某些平台上没有失败,似乎它正在使用许可编译器,因为它将在 CPU 上运行。
标签: c++ amazon-ec2 kernel opencl build-error