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 がサポートされていることが明確に示されています。REAL3 を float3 に変更しようとしましたが、うまくいきませんでした。カード用の最新のドライバーがあります。Windows XP SP3 OS の使用

このエラーを修正または回避するにはどうすればよいですか?

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

回避策を見つけました:

  • float3 の代わりに float 4 を使用します。
  • #ZERO4 {0.0f, 0.0f, 0.0f, 0.0f} を定義し、ZERO3 の代わりに使用
  • ワークグループの数を 64 に減らします (以前は 256 でした)。

そしてそれはうまくいきました!

于 2011-06-16T21:51:23.197 に答える