最近私は推力をたくさん使っています。私は推力を使用するためには、常にCPUのメモリからGPUのメモリにデータをコピーする必要があることに気づいた。
はのは、次の例を見てみましょう:推力を使用してCPUメモリからGPUにコピーする方が優れていますか?
int foo(int *foo)
{
host_vector<int> m(foo, foo+ 100000);
device_vector<int> s = m;
}
私はhost_vector
コンストラクタがどのように機能するかをかなりよく分からないが、私は二回、*foo
から来て、最初のデータをコピーしてるように思える - host_vectorときに一度初期化され、別の時刻にdevice_vector
が初期化されます。中間のデータコピーを作成せずに、CPUからGPUにコピーするより良い方法はありますか?私はラッパーとしてdevice_ptr
を使用することができますが、それでも私の問題は解決しないことを知っています。
ありがとう!
引数size_t nはベクトルの要素数を指定します。size_t型名には含めないでください。size_tは通常、データ長をバイト単位で指定します。 – TripleS