1

CUDA を使用して超並列 GPU アプリケーションを作成しています。私は手動でそれを最適化しています。Cuda C プログラミング ガイド (セクション C.2.1)__fdividef_(x, y)によると、乗算と加算に同様の関数を使用することも有益です。

関数は次のように記述されています__fmul_[rn,rz,ru,rd](x,y)

__fdividef(x,y)かっこ内の引数には記載されていません。私は疑問に思っていました、それらのブラケットは何ですか?

簡単なコードを実行すると:

int t = __fmul_(5,4);

__fmul_が未定義であるというコンパイラ エラーが発生します。CUDA ランタイムが含まれているので、セットアップの問題ではないと思います。むしろ、それはそれらの角括弧と関係があります。この機能を正しく使用するにはどうすればよいですか? ありがとうございました。

編集: 明確にする必要があります。コンパイラは CUDA コンパイラ NVCC です。

4

2 に答える 2

3

ru(切り上げ) または(切り捨て)で切り上げモードを指定する必要がありますrd。関数はありません__fmul_が、使用可能な関数シグネチャは__fmul_rdまたは__fmul_ruです。

于 2012-06-16T21:18:18.713 に答える
0

CUDA プログラミング ガイドでは、接尾辞について説明しています。

  • _rd:切り捨て。
  • _rn: 最も近い偶数に丸めます。
  • _ru: 切り上げする。
  • _rz: ゼロに向かって丸めます。

これらの関数の詳細については、 CUDA の単精度組み込み関数のドキュメントを参照してください。

于 2013-12-04T14:24:09.663 に答える