cudaMemcpy
行列の行/列を合計したり、CUBLAS を使用して行列にベクトルを追加したりできるように、ones ベクトル (1,...,1) を作成するために使用したいと考えています。コードはさまざまなプラットフォームで実行されるため、
- 常に 4 バイトの float を使用することを保証するにはどうすればよいですか?
- GPU にデータ型の関数はあり
sizeof
ますか、またはデバイスは常にホストと同じデータ型仕様を使用しますか?
最初に 2 番目の質問に答えると、デバイスは常にホスト コンパイラと同じデータ型仕様を使用します。したがってsizeof(...)
、ホストで使用して、関連するサイズを決定できます。そうしないと、多くのものが壊れてしまいます。
最初の質問に答えるには、サポートされている CUDA のホスト側コンパイラの中で、float
表現は常に 32 ビットですか? 答えはイエスです。
余談ですが、これはほとんどのプラットフォームに一般的に当てはまることに注意してください。32 ビット浮動小数点数以外のシステムを見つけるのは困難です。しかし、私の知る限り、float が 32 ビットであるという一般的な C または C++ の要件はありません。他の誰かが私が間違っていると証明するかもしれません。