2

cudaMemcpy行列の行/列を合計したり、CUBLAS を使用して行列にベクトルを追加したりできるように、ones ベクトル (1,...,1) を作成するために使用したいと考えています。コードはさまざまなプラットフォームで実行されるため、

  • 常に 4 バイトの float を使用することを保証するにはどうすればよいですか?
  • GPU にデータ型の関数はありsizeofますか、またはデバイスは常にホストと同じデータ型仕様を使用しますか?
4

1 に答える 1

5

最初に 2 番目の質問に答えると、デバイスは常にホスト コンパイラと同じデータ型仕様を使用します。したがってsizeof(...)、ホストで使用して、関連するサイズを決定できます。そうしないと、多くのものが壊れてしまいます。

最初の質問に答えるには、サポートされている CUDA のホスト側コンパイラの中でfloat表現は常に 32 ビットですか? 答えはイエスです。

余談ですが、これはほとんどのプラットフォームに一般的に当てはまることに注意してください。32 ビット浮動小数点数以外のシステムを見つけるのは困難です。しかし、私の知る限り、float が 32 ビットであるという一般的な C または C++ の要件はありません。他の誰かが私が間違っていると証明するかもしれません。

于 2013-05-16T17:33:52.973 に答える