0

我正在尝试在 ATI Radeo 4850 卡上运行 NVidia 的 OpenCL 演示 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 softingSquared)

^

对于所有使用 REAL3 数据类型,依此类推。我看过OpenCL 规范 1.1,它明确表示支持 float3。我尝试用 float3 更改 REAL3,但没有成功。我的卡有最新的驱动程序。使用 Windows XP SP3 操作系统

如何修复或解决此错误?

4

2 回答 2

3

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

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

于 2011-06-17T00:58:54.060 回答
0

我找到了一种解决方法:

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

它奏效了!

于 2011-06-16T21:51:23.197 回答