opencl内核有太多的操作数

时间:2014-05-06 14:47:12

标签: xcode macos kernel opencl

我在" OpenCL Programming Guide for Mac"中制作了基本的OpenCL示例。 (rev.2013-08-08)。它工作得很完美。然后我替换并添加了我自己的代码(用于光学计算),但随后崩溃,调试器显示" gcl_log_cl_fatal(错误,"执行计算失败");"。经过一些实验,我现在知道崩溃发生在哪里,它发生在内核中的以下代码行中,

float M = angle[i];
float K = sqrt(1.0f - M*M);  // program crashes

使用这些代码行进行的一些实验可以得到各种结果

示例1

float M = angle[i];
float K = sqrt(M*M);  // works perfect

例2

float M = angle[i];
float MM = 1.0f - M*M;   // program crash
float K = sqrt(MM);

示例3

float M = angle[i];
float MM = M*M;
float K = sqrt(1.0f - MM);  // works perfect

似乎当每行有超过2个操作数时,在内核代码中,它会崩溃。可能不是硬件问题因为APPLE的NBody-demo有效(我有ATI 4850; Xcode 5.1; osx 10.9)。我使用推荐的库,没有额外的库,我已经检查了Build-Settings。 使用2-opernd语句制作程序有效,但很难看,我不明白发生了什么。

Tommy Landberg,瑞典斯德哥尔摩

0 个答案:

没有答案