私は CUDA 開発に不慣れで、MacPro で NSight 5 を使用しています。
2 つのパーティクルを使用して非常に単純なシミュレーションを実行しています (ver1
ここver2
では、別のタイプの構造体へのポインターを持つ 2 つの構造体ですlinks
) 。
コードはコンパイルされましたが、このブロックの最後に到達すると問題が発生したようで、integrate_functor()
.
...
thrust::device_vector<Vertex> d_vecGlobalVec(2);
d_vecGlobalVec[0] = ver1;
d_vecGlobalVec[1] = ver2;
thrust::for_each(
d_vecGlobalVec.begin(),
d_vecGlobalVec.end(),
integrate_functor(deltaTime)
);
...
だから私の質問は:
NSight では、 と のメンバー変数の値を確認でき
ver1
ますver2
。しかし、このブロックのコードの最後の行の直前で、 の階層を展開するとd_vecGlobalVec
、これらの値のいずれかが表示されます。対応するフィールド (たとえば、このベクトルの最初の要素) は空です。これはなぜですか?明らかに、値がデバイス上にある間、ver1
とver2
はホスト メモにありd_vecGlobalVec
ます。
2.
NSight チームのメンバーがこれを投稿しました。
したがって、一般に、ホストとデバイスのコードの間を行き来し、ホストとデバイスの変数をそれらの間に障壁がないかのように表示できる必要があるということですか?
システム:
NVIDIA GeForce GT 650M 1024MB
Mac OS X ライオン 10.7.4 (11E2620)