GPUをCPUと同時に使用しています。メモリ転送のプロファイルを作成すると、cuBLASの非同期呼び出しが非同期で動作しないことがわかりました。
私は次のようなことをするコードを持っています
cudaEvent_t event;
cudaEventCreate(&event);
// time-point A
cublasSetVectorAsync(n, elemSize, x, incx, y, incy, 0);
cudaEventRecord(event);
// time-point B
cudaEventSynchronize(event);
// time-point C
私はプロファイリングに使用sys/time.h
しています(わかりやすくするためにコードは省略されています)。cublasSetVectorAsync
呼び出しが同期して動作しているかのように時間を支配していることがわかりました。つまり、期間ABは期間BCよりもはるかに長く、転送のサイズを大きくすると長くなります。
これにはどのような理由が考えられますか?どこかに設定する必要のある環境変数や、使用する必要のある更新されたドライバーはありますか?
GeForce GTX285とCudaコンパイルツールリリース4.1、V0.2.1221を使用しています