エラー:識別子「float3」は未定義です。 ATIカードでOCLNBodyデモを実行するとき
-
28-10-2019 - |
質問
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 Softeningsquared)
^
すべてのREAL3データタイプを使用しているなど。私は見ました OpenCL仕様1.1 そして、Float3がサポートされているとはっきりと言っています。私は運がなくてfloat3でreal3を変更しようとしました。私は自分のカードの最新のドライバーを持っています。 Windows XP SP3 OSの使用
このエラーを修正または回避するにはどうすればよいですか?
解決 2
回避策を見つけました:
- float3の代わりにフロート4を使用します。
- #define zero4 {0.0f、0.0f、0.0f、0.0f}を使用して、代わりにzero3を使用します
- ワークグループの数を64に減らします(256)
そして、それはうまくいきました!
他のヒント
float3
他の3成分ベクトルタイプは、OpenCL 1.0 Specの一部ではありませんでした。それらは1.1リビジョンで追加されました。によると AMDのドライバー互換性ページ, 、Radeon HD 4800カードは、OpenCL 1.0のみをサポートしています。
コンパイラが解釈しようとしたという事実 float3
識別子として、それが認識されたタイプではないことを示しています。
所属していません StackOverflow