2012-07-27 7 views
6

cudaHostGetDevicePointerによってマップされたメモリにゼロコピーを使用します。 thrust::host_vectorを使用することができますか、またはcudaHostAlloc(...,cudaHostAllocMapped)? を使用する必要がありますか、それとも何か推力で行うのが簡単ですか?thrust :: host_vectorを使用することができますか、または推力を使用してゼロコピーにcudaHostAllocを使用する必要がありますか?

答えて

5

マップされたホスト割り当てとしてthrust :: host_vectorを使用することはまだできません。固定メモリーアロケータがありますが、マップされたメモリが利用可能であるとは思われません。 cudaHostGetDevicePointer

  • を使用して、ゼロコピーメモリ用のデバイス・ポインタがそのデバイスのポインタにthrust::device_pointer_castを使用してthrust::device_ptrを作成しなさい、マッピングされたcudaHostAlloc
  • とホストメモリを固定割り当て

    1. :何をする必要があると、このようなものですを渡すdirctly

    あなたはどちらかthrust::device_ptrを使用してthrust::device_vectorを作ることができます(詳細についてはhereを参照)またはは、イテレータを受け入れるアルゴリズムに適用されます。

  • +0

    ありがとうございます!しかし、どうすればthrust :: device_ptrを使ってthrust :: device_vectorを作ることができますか? – Alex

    +1

    'thrust :: device_vector'をイテレータの範囲から作成することができます。そのため、' thrust :: device_vector v(p、p + n) 'のように、' device_ptr''から ' n個の要素の割り当て。 – talonmies

    +1

    しかし、新しいdevice_vectorを作成し、device_ptr pからvectorにメモリをコピーするでしょうか? – Alex

    関連する問題