2011-01-26 15 views

答えて

3

私はmalloc関数のステートメントにこれを変更することはできますか?

いいえ、ただし、Placement-Newを使用してmalloc文に変更できます。あなたがそれをしたいと思う理由を理解できません。

複雑な浮動小数点数のGPU上に配列を与えるためにcudaMallocを使用したいのですが?

この場合も、新しいプレースメントを使用する必要があります。

0

complexにはコンストラクタがない場合を除いて、 C++で配列を割り当てるときは、newを使用する必要があります。

+2

コンプレックスは、ユーザ定義コンストラクタを持たないだけでなく、PODタイプである必要があります。 –

+1

wiki:C++のPOD型は、スカラー型またはPODクラスのいずれかとして定義されています。 PODクラスには、ユーザー定義のコピー代入演算子、ユーザー定義のデストラクタ、およびPODではない非静的なデータメンバーはありません。さらに、PODクラスは集合体でなければなりません。つまり、ユーザが宣言したコンストラクタを持たず、プライベートでも保護された非静的なデータも、基底も仮想関数もありません。 – T33C

1

Cudaには、複雑なfloa値の場合はcuComplex型、複素数値の場合はcuDoubleComplex型があります。 cudaMallocまたはcublasAllocと組み合わせて使用​​できます。

+0

私はすでに複体の配列を設定したのでしょうか?それらの値をループしてcuComplexの配列に値を設定する必要がありますか? – Derek

+0

cuComplexは、プラットフォームがcomplex.hをサポートしているかぎり、C99 complex.hのtypedefでなければなりません。それ以外の場合は、float2のtypedefです。そのため、C++コンプレックスをc99コンプレックスに直接変換することは不可能ですが、CUDAのcuComplexを扱うためのヘルパー関数がいくつかあります – moggi