CUDAの初期化を速くする(ただし今が遅い場合に限る)

今日はCUDAについて、良い情報がいろいろ得られた。
しかし、どれも会社の別の人が編み出した事ばかりなのでどこまで書いて良いか微妙。
なので、ほどほどな感じで書く予定。

CUDAのプログラムで初期化(最初に呼んだCUDA API)が1秒近くかかるのは改善可能。
lsmodコマンドで参照カウント(右側の数字)が0だとCUDAの初期化に時間がかかる。
誰からも参照されていないところからの切り替えにのみ大きく時間がかかるらしい。

$ lsmod | grep nvidia
nvidia     10235144  0

GeForceとかでビデオカードとしても利用しているなら、Xを立ち上げていれば0にはなっていないらしい。(確認してはいないけど)
画像の出力に使えないTeslaの場合にはXを起動してもたぶん無駄、別の方法で参照カウントをあげておく必要がある。

1つの方法は、cudaSetDevice(0)を読んだ後に、無限にsleep()をするアプリを作って走らせておくというのがある。
毎回、アプリを起動するのが面倒であれば同じ事をするserviceを作って起動しておけばいい。

まあ、もっとお手軽な方法もあるけど・・。