後輩君が研究室のサーバーに ArrayFire を入れてくれた. GPGPU のライブラリは大抵「CPU と比べるととても速い」と謳っているが,実際は直に CUDA で組んだ場合と比べてどうなのかが一番重要なので,簡単な例で試してみることにした. 続きを読む
タグ別アーカイブ: CUDA
CentOS のリブート時に CUDA ドライバが起動しない
先日,キャンパスで機器点検のための停電があり,それに備えて研究室のサーバーをシャットダウンした.その後ブートしたところ,実験用のコードで使っている gputools から CUBLAS not initialized が返り,cudaGetDeviceCount は cudaErrorInvalidDevice (10) を返し,deviceQuery は失敗する,という現象が発生した.
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 だけで使っていた時は,問題にならなかったはず.