2016-05-03 12 views
0

私は以下の方法を使って、ホストからデバイスへのmemcpyを避けることを期待しています。スラストライブラリは、プロセス中のホストからデバイスへのmemcpyがないことを保証しますか?ホストからデバイスへの推力がmemcpyになっていないことを確認してください。

void EScanThrust(float * d_in, float * d_out) 
{ 
    thrust::device_ptr<float> dev_ptr(d_in); 
    thrust::device_ptr<float> dev_out_ptr(d_out); 

    thrust::exclusive_scan(dev_ptr, dev_ptr + size, dev_out_ptr); 
} 
ここ

d_ind_outcudaMallocを用いて調製し、d_in

+2

ホストからデバイスへのmemcopyingはありません。あなたの説明によれば、ホストポインタやデータはどこにもありません。ホストから何かをコピーするにはどうすればいいですか?とにかく、 'nvprof --print-gpu-trace ... 'のようなプロファイラを使ってこれを検証することは自明です。もしあれば、cudaMemcpy H-> Dがトレースにはっきりと現れます。ありがとうございます。 –

答えて

2

この関数を呼び出す前にcudaMemcpyを使用して、データで満たされているスラストライブラリは、プロセスでホストからデバイスへのmemcpyがある文句を言わないことを保証してい?

表示されたコードには、ホストからデバイスへのコピーは含まれていないはずです。 (?。どのようにそれが何の参照はあなたが示されたコード内の任意のホストデータにどこにもありませんでした)実際のコードについて

、それは例えば、profilerを使用して、基礎となるCUDAの活動を検証するために十分に簡単です:

nvprof --print-gpu-trace ./my_exe 

プロファイリングされたコードシーケンスを短くしておくと、基礎となるCUDAアクティビティを、そのアクティビティを生成した推力コードと整列させるのが簡単です。より長いシーケンスの短いセグメントだけをプロファイルする場合は、turn profiling on and off、またはNVTX markersを使用してプロファイラ出力で希望の範囲を指定します。

+0

私は '--print-gpu-trace'オプションについて知らなかった – BAdhi

関連する問題