複数の GPU で異なる CUDA アルゴリズムの同時実行を管理する Windows 64 ビット アプリケーションを開発しています。
私の設計では、C++ コードの周りでデバイス メモリへのポインターを渡す方法が必要です。(たとえば、それらを私の c++ オブジェクトのメンバーとして覚えておいてください)。__device__
修飾子を使用してクラス メンバーを宣言することは不可能であることはわかっています。
__device__
ただし、ポインターを通常の C ポインターに割り当ててから、後者を使用することが機能するかどうか、明確な答えを見つけることができませんでした。つまり、次のコードは有効ですか?
__device__ float *ptr;
cudaMalloc(&ptr, size);
float *ptr2 = ptr
some_kernel<<<1,1>>>(ptr2);
私にとっては、コンパイルして正しく動作しましたが、正しいことが保証されているかどうかを知りたいです。