2016-05-24 11 views
1

私はCUDAでアプリケーションのプロトタイプを作成しています。私はそれをCPUに対してベンチマークし、いくつかの可変ランタイムに注目しました。コマンドラインからアプリケーションをループして実行することにしたので、より良い統計情報を集めることができました。私はアプリケーションを50回実行し、結果を記録した。私は、発射回数の関数として経過したカーネル時間が増えているのを見て非常に驚いていました。ここで連続した起動でCUDAカーネルの実行時間が長くなるのはなぜですか?

GPU Kernel Time Increasing With Run Number

あなたはタイムアウトされているコードの一部を見ることができるので、抜粋です:

int nblocks = (int)ceil((float)n/(float)NUM_THREADS); 

gpuErrchk(cudaEventRecord(start, 0)); 
gpuperfkernel << <nblocks, NUM_THREADS >> >(dmetadata, ddatax, ddatay); 
gpuErrchk(cudaPeekAtLastError()); 
gpuErrchk(cudaDeviceSynchronize()); 
gpuErrchk(cudaEventRecord(stop, 0)); 
gpuErrchk(cudaEventSynchronize(stop)); 

gpuErrchk(cudaEventElapsedTime(&milliseconds, start, stop)); 
printf("GPU kernel took %f milliseconds.\n", milliseconds); 
gpuelapsed += milliseconds; 

私はCUDAでかなり働いてきたし、私はこれを見ていません以前の行動。誰かがこれに気付いているのだろうか?私のプラットフォームはWindows 10、CUDA 7.5、MSIノートブック、GeForce 970mです。

私はラップトップにいるので、それは電源関連の設定やそのようなものかもしれないと思っていましたが、すべてが高性能に設定され、スクリーンセーバーが無効になっています。

+0

全体的に、測定時間の差が1%未満であり、最小から最大までです。 Windowsオペレーティングシステムでは、GPUも使用しています。実際には、すべてのCUDAアクセスをGPUに管理しています。 Windowsは忙しい環境です。私はいくつかのバリエーションがあることには驚かない。 –

答えて

2

GeForce 970mにはブーストクロックがあります。実行後に実行すると、GPUの温度が上昇し、温度が上昇すると、ブーストはその最高レベルになる可能性が最も低いことが最もよくわかります。

nvidia-smiでgpuの温度を監視することができます。監視APIもあります。あなたのブーストの設定も、nvidia-smiで設定可能で、これを検証したい場合はいくつかの拡張が必要です。

+0

これは正確に起こっていることです。私はspeedfanをダウンロードし、私がアプリケーションをベンチマークしている間にそれを走らせました。 GPU温度曲線は、ベンチマークプロットの曲線と同じ形状に従います。ありがとう! – jungleman007

関連する問題