通常のCUDAプログラム:cudaDeviceSynchronizeはmemcopy時間を短縮できますか?
- は、など ...ホストから
- をホストするための装置
- コールカーネル
- メモリコピーデバイスにCUDAデバイスに
- メモリコピーをメモリ空間を割り当てます
ホストをデバイス時間に測定する場合
time = clock();
2. mem host to device;
cudaDeviceSynchronize;
time = clock() - time ;
私の場合は0.1sの値が得られます。私のPCIバス速度は実際には24GB/sであり、これは1000時間の時間価値がより小さくなると仮定しているので、私は、0.1秒がPCIバスを起動するのに使用されると仮定します。
私は1000時間でデバイス時間にホストをループしようとしましたが、初めて0.1秒を表示し、残りの時間はわずか0.000秒(ミリ秒を超えることはできません)で、合計1000ループの時間はちょうど0.12秒です。
私はデバイスのPCIバスをアクティブにしておき、ホストをデバイス時間に短縮する必要があります。以下に示すように、私はcudaDeviceSynchronizeを使用してみました:
cudaDeviceSynchronize; //---to keep PCI bus activate
time = clock();
2. mem host to device;
cudaDeviceSynchronize;
time = clock() - time ;
iは取得時間は、デバイスへのホスト上で費やされる時間が最小化される0.000sです。あれは正しいですか? 0.1秒= PCIバスを「起動」する時間ですか?
0.1秒はおそらくCUDA初期化時間です。 –