月別アーカイブ: 2012年12月

CentOS のリブート時に CUDA ドライバが起動しない

先日,キャンパスで機器点検のための停電があり,それに備えて研究室のサーバーをシャットダウンした.その後ブートしたところ,実験用のコードで使っている gputools から CUBLAS not initialized が返り,cudaGetDeviceCount は cudaErrorInvalidDevice (10) を返し,deviceQuery は失敗する,という現象が発生した.

続きを読む

Emacs での編集中ファイルのバックアップ設定

Emacs でバックアップを有効にすると ~ で始まるバックアップファイルが大量にできて見苦しく,以前はバックアップをオフにして使っていた.ところが最近,ESS を使ってトライアンドエラーでスクリプトを書くことが多くなり,git コミットよりも短いスパンで変更を戻したい場合が多くなった.そこで,Emacs 標準のバージョン管理ツールを,自分の使いやすいようにカスタマイズすることにした.

続きを読む

R extension + CUDA で segmentation fault

R から .Call 経由で C 拡張を呼び出し,その中で CUDA の関数を呼び出すとき,1度目の .Call 呼び出しは成功するが,2度目は最初の CUDA 関数を呼び出した時点で segmentation fault が発生して,R 上で「memory not mapped」が表示された.

この場合,GPU のコンテキストバッファを明示的にクリアしてやる必要があるようだ. ソース: Using GPU in R scripts – possibly brainful

ソースにある cudaThreadExit 関数は NVIDIA のドキュメントですでに Deprecated 扱いになっているので,代替の cudaDeviceReset 関数を C 関数の最後で呼び出すようにして,問題は解決した.

原因は不明.R のメモリ領域を CUDA が横取りする?R を介さずに C だけで使っていた時は,問題にならなかったはず.