1

プログラムとカード (Tesla K20c) との通信を開始すると、コード内でカードへの最初の呼び出しを行うときに多くの時間を失いましたが、その理由はわかりません。彼が可能なすべてのカードを検索しようとするたびにそうです。cudasetdevice() を使用してカードを定義すると、同じ問題が発生します。

ユーザー時間 (秒): 1.420

システム時間 (秒): 4.660

経過時間 (秒): 6.490

システム時間は、この失われた時間を表します。GeForce GTX 560 Ti (性能が低く古いカード) を搭載した別のコンピューターでプログラムを実行すると、システム時間が正常であることがわかります。

ユーザー時間 (秒): 1.620

システム時間 (秒): 0.700

経過時間 (秒): 3.120

この問題はプログラムの 2 倍の時間であり、その理由は理解できます。カードでこのような問題が発生したのはこれが初めてです。

カードが最近のもので、cuda ライブラリがまだ最適化されていないためですか?

バージョン5.0のcudaを使用しています。

4

1 に答える 1

2

これは、CUDA ドライバーが読み込まれ、CUDA コンテキスト (すべてのデータとプログラムがデバイスに保持される環境) が毎回作成されるためです。これには多くの簿記が必要です。root として以下を実行することで、常にドライバーを強制的にロードすることができます。

nvidia-smi -pm 1

これにより、いわゆる「永続モード」が有効になります (無効にするには 0 に設定します)。これにより、初期化が高速化されます。

于 2013-08-20T09:37:08.590 に答える