または、スラストでゼロコピーにcudaHostAllocを使用する必要がありますか?
質問
マップされたメモリにゼロコピーを使用したい cudaHostGetDevicePointer
.私は使うことができますか thrust::host_vector
または私は使用する必要があります cudaHostAlloc(...,cudaHostAllocMapped)?
それともスラストでやるのがどういうわけか簡単ですか?
解決
マップされたホスト割り当てとしてthrust::host_vectorを使用することはまだ不可能であると確信しています。固定されたメモリアロケータがありますが、マップされたメモリが利用可能であるとは思いません。あなたがする必要があるのは次のようなものです:
- 割り当てられたマップされた、固定されたホストメモリ
cudaHostAlloc
- を使用して、ゼロコピーメモリのデバイスポインタを取得します
cudaHostGetDevicePointer
- Aを作成する
thrust::device_ptr
を使用してthrust::device_pointer_cast
そのデバイスポインタ上(参照 ここに 詳細については)
あなたはどちらかを作ることができます thrust::device_vector
を使用して、 thrust::device_ptr
またはdirctly渡して下さい thrust::device_ptr
イテレータを受け入れる任意のアルゴリズムに。
所属していません StackOverflow