错误:标识符“float3”未定义;在ATI卡上运行oclNbody演示时

时间:2011-06-16 21:25:14

标签: compiler-errors opencl ati

我正在尝试在ATI Radeo 4850卡上运行NVidia的OpenCL demo oclNbody.exe并收到此类错误:

  

构建日志:   C:\ DOCUME〜1个\ DIMEDR〜1个\ LOCALS〜1个\ TEMP \ OCL27C.tmp.cl(33):   错误:标识符

      "float3" is undefined
     

REAL3 bodyBodyInteraction(REAL3 ai,   REAL4 bi,REAL4 bj,REAL   softeningSquared)

     

^

依旧使用的所有REAL3数据类型。我见过OpenCL specification 1.1,它清楚地说支持float3。我试图用float3改变REAL3而没有运气。我有我的卡的最新驱动程序。使用Windows XP SP3 OS

如何修复或解决此错误?

2 个答案:

答案 0 :(得分:3)

float3和其他3分量矢量类型不属于OpenCL 1.0规范;它们被添加到1.1修订版中。根据{{​​3}},Radeon HD 4800显卡仅支持OpenCL 1.0。

编译器试图将float3解释为标识符的事实表明它不是可识别的类型。

答案 1 :(得分:0)

我找到了一个解决方法:

  • 使用float 4而不是float3;
  • #define ZERO4 {0.0f,0.0f,0.0f,0.0f}并用它代替ZERO3
  • 并将工作组数量减少到64(为256)

它有效!