chainer でGPUを利用するメモ(Mac)
Chainerによる畳み込みニューラルネットワークの実装 - 人工知能に関する断創録
この記事に載っているコードを試してみる。
MacOSで。
何も考えずにPyCharmにコピペして実行したら、以下のエラー。
Traceback (most recent call last): File "/Users/aaaaaa/PycharmProjects/ml1/chainer_aidiary.py", line 16, in <module> cuda.check_cuda_available() AttributeError: 'module' object has no attribute 'check_cuda_available'
GPUを利用しない設定
gpu_flag = 0
を
gpu_flag = -1
にすると、GPUを使わない設定になる。
この設定ならエラーなしで実行できた。
GPUを使う設定にした時のエラーは、いろいろ試したけど直せなかった。。
なんか、使ってるiMacのグラフィックは、
intel iris graphicsみたいなので、CUDAが使えず、どう頑張っても無理だったっぽい。
graphics - Can I run CUDA on Intel? - Stack Overflow
調査メモ
結局動かなかったけど、一応メモを残しておく。
追記:chainerのバージョンは、1.3.2だった。
機械学習用のvirtual envをactivateして、pipでchainerをupgradeしてみた。
source bin/activate
pip install --upgrade chainer
エラーに変化なし。
以下の記事を見つけた。
CUDA+chainer環境に苦戦中 - studylog
pycudaというのを入れるといいっぽい。
pycudaインストール (1回目)
pip install pycuda
*** WARNING: nvcc not in path. *** May need to set CUDA_INC_DIR for installation to succeed. 略 src/cpp/cuda.hpp:14:10: fatal error: 'cuda.h' file not found #include <cuda.h> ^ 1 error generated. error: command 'cc' failed with exit status 1
のようなエラーが出た。
調べたら、nvidiaのCUDA Toolkitを入れないといけないっぽい。
CUDA Toolkit
CUDA 7.5 Downloads | NVIDIA Developer
nvidiaのウェブサイトからCUDA Driver と CUDA Toolkit というものをダウンロードしてインストール。
バージョンは、7.5
インストールが終わって、ターミナルからnvccと打ってもコマンドが無いと言われたので、
homeディレクトリで、
vi .zshrc
パスを追加。
export PATH=/Developer/NVIDIA/CUDA-7.5/bin:$PATH export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-7.5/lib:$DYLD_LIBRARY_PATH
nvccと打ったら、
nvcc fatal : No input files specified; use option --help for more information
となった。
CUDA Toolkitのインストールはできた。
pycudaインストール (2回目)
pip install pycuda
エラー
ld: warning: directory not found for option '-L/Developer/NVIDIA/CUDA-7.5/lib64' ld: warning: directory not found for option '-L/Developer/NVIDIA/CUDA-7.5/lib64' ld: library not found for -lcuda clang: error: linker command failed with exit code 1 (use -v to see invocation) error: command 'c++' failed with exit status 1
pipを使わずにインストール
メモ:
Mac OSX 10.10 (Yosemite)にpycudaをインストール: すけひろ日記
boostのインストール
./bootstrap.sh --prefix=/opt/local --with-python=python --libdir=/opt/local/lib --includedir=/opt/local/include$ ./bjam install
Bootstrapping is done. To build, run: ./b2
The Boost C++ Libraries were successfully built! The following directory should be added to compiler include paths: /Users/aaaaaa/Documents/boost_temp/boost_1_59_0 The following directory should be added to linker library paths: /Users/aaaaaa/Documents/boost_temp/boost_1_59_0/stage/lib
記事を参考にソースからboostをインストールしようとしたけど、
なんか解凍したディレクトリに、boost的な何かがビルドされた気がする。
よくわからないので、brewでboostを入れた。
brew install boost
pycudaインストール(3回目)
git clone http://git.tiker.net/trees/pycuda.git
cd pycuda
python configure.py
vi siteconf.py
BOOST_INC_DIR = ['/usr/local/Cellar/boost/1.57.0/include'] BOOST_LIB_DIR = ['/usr/local/Cellar/boost/1.57.0/lib'] BOOST_COMPILER = 'gcc43' USE_SHIPPED_BOOST = True BOOST_PYTHON_LIBNAME = ['boost_python-py27'] BOOST_THREAD_LIBNAME = ['boost_thread'] CUDA_TRACE = False CUDA_ROOT = '/Developer/NVIDIA/CUDA-7.5' CUDA_ENABLE_GL = False CUDA_ENABLE_CURAND = True CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib'] CUDADRV_LIBNAME = ['cuda'] CUDART_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib'] CUDART_LIBNAME = ['cudart'] CURAND_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib'] CURAND_LIBNAME = ['curand'] CXXFLAGS = [] LDFLAGS = []
※lib64をlibにした。
LDFLAGSを変えて試してみた。
LDFLAGS = ['-L/Developer/NVIDIA/CUDA-6.5/lib']
make でエラー。
fatal error: /Library/Developer/CommandLineTools/usr/bin/lipo: can't create temporary output file: build/temp.macosx-10.10-x86_64-2.7/src/cpp/cuda.o.lipo (Permission denied) clang: error: lipo command failed with exit code 1 (use -v to see invocation)
buildディレクトリの中にrootでディレクトリができていたので消した。
c++ -bundle -undefined dynamic_lookup -arch x86_64 -arch i386 -Wl,-F. build/temp.macosx-10.10-x86_64-2.7/src/cpp/cuda.o 略 -L/Developer/NVIDIA/CUDA-6.5/lib -L/Developer/NVIDIA/CUDA-6.5/lib -lcuda -lcurand -o build/lib.macosx-10.10-x86_64-2.7/pycuda/_driver.so -Xlinker -rpath -Xlinker /Developer/NVIDIA/CUDA-6.5/lib ld: library not found for -lcuda clang: error: linker command failed with exit code 1 (use -v to see invocation) error: command 'c++' failed with exit status 1 make: *** [all] Error 1
ld: library not found for -lcuda
というエラーが消えない。
CUDAに対応したGPUが入っていないiMacでやっても無理、という結論に達した。
Geforceが差さっているWindows 10 PCで試したら動いた。 chainer でGPUを利用するメモ(Windows 10) - kubotti’s memo