3,194 views
この記事は最終更新から 1816日 が経過しています。
2014年7月17日、cuda-convnet の作者が cuda-convnet2 なるプログラムをGIT上に公開した。
現在も開発が進行中で、その様子はこちら(↓)で眺められる。
https://github.com/akrizhevsky/cuda-convnet2
これはぜひやってみよう!
と意気揚々とプログラムをダウンロードし、
必要なライブラリをインストールし、
ビルドが成功し、
いざ実行!
========================= Running on CUDA device(s) 0 Current time: Fri Aug 22 21:51:07 2014 Saving checkpoints to /home/user/cuda/cuda-convnet2/save/cifar-10/ConvNet__2014-08-22_21.51.06 ========================= src/nvmatrix.cu(394) : getLastCudaError() CUDA error : kSetupCurand: Kernel execution failed : (8) invalid device function .
エラーで止まった (TT)
いろいろ調べると、コンパイル時に指定した Compte Capability version が、
マシンに搭載している GPUと合っていないことが原因のようだ。
そこで…
うちの新しい GTX-760 の Compute Capabilityを調べてみる。
これには NVIDIA_CUDA-6.0_Samples に付属の deviceQuery コマンドが使える。
[user@]$ ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 760"
CUDA Driver Version / Runtime Version 6.0 / 6.0
CUDA Capability Major/Minor version number: 3.0
Total amount of global memory: 2047 MBytes (2146762752 bytes)
( 6) Multiprocessors, (192) CUDA Cores/MP: 1152 CUDA Cores
GPU Clock rate: 1058 MHz (1.06 GHz)
Memory Clock rate: 3004 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 524288 bytes
:
うちのは Compute Capability version 3.0 なのだそうだ。
では、cuda-convnet2 を Compute Capability ver.3.0 指定でビルドしてみる。
MakeFile中で以下のように書かれているところを探し、すべて3.0指定に書き換えた。
GENCODE_SM35 := -gencode arch=compute_35,code=sm_35 GENCODE_FLAGS := $(GENCODE_SM35)
再度ビルドを実行する。
[user@]$ ./build.sh clean [user@]$ ./build.sh
今度こそは!
と cuda-convnet2 で Cifar-10 自動認識を起動!
すると…
さっきよりもヤバゲなエラーが出た (T^T)
========================= Running on CUDA device(s) 0 Current time: Fri Aug 22 22:00:59 2014 Saving checkpoints to /home/user/cuda/cuda-convnet2/save/cifar-10/ConvNet__2014-08-22_22.00.58 ========================= 1.1 (0.00%)...python: src/nvmatrix.cu:1473: virtual cudaTextureObject_t NVMatrix::getTextureObject(): Assertion `_texObj != 0' failed. Error signal 6: /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_Z13signalHandleri+0x26)[0x7fb5b9f2a3e6] /lib64/libc.so.6[0x35e22329a0] /lib64/libc.so.6(gsignal+0x35)[0x35e2232925] /lib64/libc.so.6(abort+0x175)[0x35e2234105] /lib64/libc.so.6[0x35e222ba4e] /lib64/libc.so.6(__assert_perror_fail+0x0)[0x35e222bb10] ./nvmatrix/libnvmatrix.so(_ZN8NVMatrix16getTextureObjectEv+0x147)[0x7fb5b8c15f67] ./cudaconv3/libcudaconv.so(_Z11_filterActsR8NVMatrixS0_S0_iiiiiiiffb+0x5c25)[0x7fb5b7f984e5] ./cudaconv3/libcudaconv.so(_Z14convFilterActsR8NVMatrixS0_S0_iiiiiiiff+0x30)[0x7fb5b7f9dd30] /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_ZN9ConvLayer9fpropActsEifji+0x18e)[0x7fb5b9ee5d8e] /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_ZN5Layer5fpropERSt3mapIiP8NVMatrixSt4lessIiESaISt4pairIKiS2_EEEji+0x240)[0x7fb5b9ef2ab0] /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_ZN5Layer5fpropEji+0x23f)[0x7fb5b9ef2d4f] /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_ZN13ConvNetThread3runEv+0x17d)[0x7fb5b9f44d6d] /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_ZN6Thread18start_pthread_funcEPv+0x9)[0x7fb5b9ef7b69] /lib64/libpthread.so.0[0x35e26079d1] /lib64/libc.so.6(clone+0x6d)[0x35e22e8b5d] CUDA error at src/nvmatrix.cu:522 code=29(cudaErrorCudartUnloading) "cudaSetDevice(d)" Error signal 11: /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_Z13signalHandleri+0x26)[0x7fb5b9f2a3e6] /lib64/libc.so.6[0x35e22329a0] /lib64/libc.so.6(exit+0x35)[0x35e2235d75] ./nvmatrix/libnvmatrix.so(+0x30886)[0x7fb5b8c15886] /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_ZN14DataCopyThread3runEv+0x4ac)[0x7fb5b9ee3b9c] /home/user/cuda/cuda-convnet2/cuda-convnet2/cudaconvnet/_ConvNet.so(_ZN6Thread18start_pthread_funcEPv+0x9)[0x7fb5b9ef7b69] /lib64/libpthread.so.0[0x35e26079d1] /lib64/libc.so.6(clone+0x6d)[0x35e22e8b5d]
エラーの内容を見ると、どうやらうちのGTX760では未サポートの機能を使おうとしている様子…
そこで cuda-convnet2 のホームページを改めて見てみると…
Compute Capability 3.5以上じゃないとダメ
と書いてあった…
2014年8月現在、GTX780を手に入れるには 6万円前後のお金が必要だ…
先日Xeon x5570 x2 マシンを 6万円で購入したので、手元にお金は残っていない…
cuda-convnet2 はヤフオクで GTX780が2万円台に値下がりするまでしばらくあきらめよう(T^T)
参考情報
CUDA ZONEのページに GPU型番別の Compute Capavility Version一覧が載っている。
https://developer.nvidia.com/cuda-gpus