14
7

More than 5 years have passed since last update.

chainer 1.20のイントールしてもimport cupyできない時のお助け

Posted at

Chainerは入るけど,import cupyするとエラーが出る

Linux環境下に,CUDA-7.5を入れたのち,
gcc 8.4.5,pipを使って,

$ pip install chainer

すると,

$ Successfully installed chainer-1.20.0.1

と出るのに,いざcupyを読み込もうとimport cupyすると正常に読み込めない.

Traceback (most recent call last):
  File "./train_mnist.py", line 107, in <module>
    main()
  File "./train_mnist.py", line 56, in main
    chainer.cuda.get_device(args.gpu).use()  # Make a specified GPU current
  File "C:\Program Files\Anaconda3\lib\site-packages\chainer\cuda.py", line 167, in get_device
    check_cuda_available()
  File "C:\Program Files\Anaconda3\lib\site-packages\chainer\cuda.py", line 85, in check_cuda_available
raise RuntimeError(msg)
RuntimeError: CUDA environment is not correctly set up
(see https://github.com/pfnet/chainer#installation).CuPy is not correctly installed. Please check your environment, uninstall Chainer and reinstall it with `pip install chainer --no-cache-dir -vvvv`.

う〜ん,仕方がないので,

$ pip uninstall chainer
$ pip install chainer --no-cache-dir -vvvv

とすると,CUDAはスキップしてますの文字が.

/usr/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status
Cannot build a stub file.
Original error: command 'g++' failed with exit status 1
**************************************************
*** WARNING: Cannot link libraries: ['cublas', 'cuda', 'cudart', 'curand', 'nvToolsExt']
*** WARNING: Skip installing cuda support
*** WARNING: Check your LDFLAGS environment variable
**************************************************
Include directories: ['/usr/local/cuda/include']
Library directories: ['/usr/local/cuda/lib64', '/usr/local/cuda/lib']

ところが,LDFLAGSを見ても変ではないので,なぜだろうと格闘するも・・・入らない.
よ〜くエラーを見ると,その上のあたりでlibcuda.soがないと言われている.

/usr/bin/ld: cannot find -lcuda

まさかと思って,/usr/local/cuda/lib64と/usr/local/cuda/libを見に行くと・・・ない!
探したところ,まさかの/usr/local/cuda/lib64/stubsにいらっしゃる.
そこで,ビルド時にgccが見に行くLIBRARY_PATHにこのフォルダを通してやる.

$ export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
$ export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib
$ export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64/stubs

それで再び

$ pip install chainer --no-cache-dir -vvvv

すると,WARNINGが出なくなったぞ!!!!

しかしそのままだと足りない

ところが,万を辞してcupyを読み込むと,

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/slab/hirohara/.pyenv/versions/anaconda2-4.1.1/lib/python2.7/site-packages/cupy/__init__.py", line 18, in <module>
    raise six.reraise(RuntimeError, RuntimeError(msg), exc_info[2])
  File "/home/slab/hirohara/.pyenv/versions/anaconda2-4.1.1/lib/python2.7/site-packages/cupy/__init__.py", line 7, in <module>
    from cupy import core  # NOQA
  File "/home/slab/hirohara/.pyenv/versions/anaconda2-4.1.1/lib/python2.7/site-packages/cupy/core/__init__.py", line 1, in <module>
    from cupy.core import core  # NOQA
RuntimeError: CuPy is not correctly installed. Please check your environment, uninstall Chainer and reinstall it with `pip install chainer --no-cache-dir -vvvv`.

original error: libcuda.so.1: cannot open shared object file: No such file or directory

また怒られる.libcuda.so.1がないらしい.検索しても確かにない.そこで,libcuda.soからシンボリックリンクを貼ってやることにする.

$ cd /usr/local/cuda/lib64/stubs/
$ ln -s libcuda.so libcuda.so.1

で,先ほどと同じように,これのディレクトリを実行時にライブラリを読み込むLD_LIBRARY_PATHに通してやる.

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/stubs

これで,import cupyすると・・・できた!!!できた!!!!

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7