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



我正试图在ATI Radeo 4850卡上运行NVidia的OpenCL演示oclNbody.exe,但收到这样的错误:

生成日志:C: \DOCUME~1\DDIMEDR~1\LOCALS~1\Temp\OCL27C.tmp.cl(33):错误:标识符

      "float3" is undefined

REAL3-bodyBodyInteraction(REAL3-ai,REAL4 bi,REAL4 bj,REALsofteningSquared)

^

对于使用的所有REAL3数据类型,依此类推。我看过OpenCL规范1.1,它清楚地表明float3是受支持的。我试着用float3改变REAL3,但没有成功。我的卡上有最新的驱动程序。使用Windows XP SP3 OS

如何修复或解决此错误?

float3和其他三分量矢量类型不属于OpenCL 1.0规范的一部分;它们被添加到1.1版本中。根据AMD的驱动程序兼容性页面,Radeon HD 4800卡仅支持OpenCL 1.0。

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

我找到了一个解决方法:

  • 使用float4而不是float3
  • #定义ZERO4{0.0f,0.0f,0.0.f}并使用它来代替ZERO3
  • 并将工作组的数量减少到64个(原来是256个)

它成功了!

最新更新