は、私は次の宣言と.hファイルがあります:CUDA __device__属性を使用せずにクラスヘッダを定義するのはなぜですか? (C++)
class Foo{
public:
inline int getInt();
};
を、私の.cuファイルには、次のように定義しています
__device__ int Foo::getInt(){
return 42;
}
althoughtは私が実際に呼び出すことはできませんので、これは、すごいですホストからのgetInt
、.hファイルを.cppファイルに含めることができるので、ホストに対してタイプ宣言が表示されます。しかし、私にとってはうまくいかないと思われるので、なぜ__device__
属性を.hファイルに入れる必要はありませんか?次へ
ありがとう、この '__CUDACC__'はこれと他のもののために非常に役に立ちます。 – Vik
このテクニックを使用して属性を定義することは可能ですか? Foo内で '__device__ int test'を定義しようとすると、'属性 'デバイスが "ここには適用されません"というエラーが出るので、 – Vik
いいえ、フィールドには '__device__'を書きません。フィールドは型を指定するだけであり、独自の変数ではありません。 '__device__ Foo var'と書くと、' var'のすべてのフィールドがデバイス上にあります。他のメモリ空間(共有、定数)も同様です。 – CygnusX1