2016年6月26日日曜日

numpy、python-six、そしてpycudaをインストールしてゆく。

まずnumpyからインストールしてゆく。
numpyは科学技術計算で利用されるPythonの拡張モジュールなんだとか。

$ pip install numpy

Requirement already satisfied (use --upgrade to upgrade): numpy in /Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages

おお。
Python3をインストールする時にanacondaを選択したので、インストール済みであったか。

じゃ、python-sixへ続く。
sixとは、Python 2 と Python 3 の間の違いを吸収するためのシンプルなユーティリティなんだとか。

$ pip install six
Requirement already satisfied (use --upgrade to upgrade): six in /Users/ほげほげ/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/site-packages

インストール済みとな。
anacondaは優秀なパッケージなんだな。

じゃ、Pycudaをインストールする。

$ pip install pycuda

盛大なエラーを吐いて終了。。。。。

じゃ、世の中のWebサイトで成功事例に書かれている方法で再挑戦する。
フォルダはホームフォルダに置く事にする。

$ git clone http://git.tiker.net/trees/pycuda.git

で、ダウンロードが済んだら、pycudaのフォルダに降りてみる。

$cd pycuda
$ ls
MANIFEST.in        bpl-subset        setup.cfg
Makefile.in        configure.py        setup.py
README.rst        doc            src
README_SETUP.txt    examples        test
aksetup_helper.py    pycuda

こんな感じの内容。

$ python3 configure.py
$ ls
MANIFEST.in        aksetup_helper.py    setup.cfg
Makefile        bpl-subset        setup.py
Makefile.in        configure.py        siteconf.py
README.rst        doc            src
README_SETUP.txt    examples        test
__pycache__        pycuda

14ファイル → 17ファイルに増えてる。

$ vi siteconf.py

BOOST_INC_DIR = []
BOOST_LIB_DIR = []
BOOST_COMPILER = 'gcc43'
USE_SHIPPED_BOOST = True
BOOST_PYTHON_LIBNAME = ['boost_python-35']
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}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDADRV_LIBNAME = ['cuda']
CUDART_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDART_LIBNAME = ['cudart']
CURAND_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CURAND_LIBNAME = ['curand']
CXXFLAGS = []
LDFLAGS = []

上記を次の内容に書き換える。

BOOST_INC_DIR = ['/opt/local/include']
BOOST_LIB_DIR = ['/opt/local/lib']
BOOST_COMPILER = 'gcc43'
USE_SHIPPED_BOOST = True
BOOST_PYTHON_LIBNAME = ['boost_python-py35']
BOOST_THREAD_LIBNAME = ['boost_thread']
CUDA_TRACE = False
CUDA_ROOT = '/usr/local/cuda'
CUDA_ENABLE_GL = False
CUDA_ENABLE_CURAND = True
CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDADRV_LIBNAME = ['cuda']
CUDART_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CUDART_LIBNAME = ['cudart']
CURAND_LIB_DIR = ['${CUDA_ROOT}/lib', '${CUDA_ROOT}/lib64', '${CUDA_ROOT}/lib/stubs', '${CUDA_ROOT}/lib64/stubs']
CURAND_LIBNAME = ['curand']
CXXFLAGS = ["-arch", "x86_64", "-arch", "i386",'-mmacosx-version-min=10.11', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk']
LDFLAGS = ["-F/Library/Frameworks", "-arch", "x86_64", "-arch", "i386",'-mmacosx-version-min=10.11', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk']


pycudaのインストールにcompyteが必要らしいので、こちらもインストールする。

pycudaのフォルダ内で、次のコマンドを実行。

$ git clone git://github.com/inducer/compyte.git

いよいよpycudaをインストールする。

$ cd ~/pycuda

念のためのおまじない。

$ git submodule update --init

Submodule 'bpl-subset' (https://github.com/inducer/bpl-subset) registered for path 'bpl-subset'
Submodule 'pycuda/compyte' (https://github.com/inducer/compyte) registered for path 'pycuda/compyte'
Cloning into 'bpl-subset'...
remote: Counting objects: 5374, done.
remote: Total 5374 (delta 0), reused 0 (delta 0), pack-reused 5374
Receiving objects: 100% (5374/5374), 5.03 MiB | 1.00 MiB/s, done.
Resolving deltas: 100% (1282/1282), done.
Checking connectivity... done.
Submodule path 'bpl-subset': checked out 'e7c5f5131daca6298b5e8aa48d06e7ecffec2ffa'
Cloning into 'pycuda/compyte'...
remote: Counting objects: 1889, done.
remote: Total 1889 (delta 0), reused 0 (delta 0), pack-reused 1889
Receiving objects: 100% (1889/1889), 739.73 KiB | 427.00 KiB/s, done.
Resolving deltas: 100% (1085/1085), done.
Checking connectivity... done.
Submodule path 'pycuda/compyte': checked out 'ac1c71d46428c14aa1bd1c09d7da19cd0298d5cc'

じゃあ、makeしてみますか。。。。

$ sudo make

でるわでるわ、警告の嵐!!
気が遠くなるほど警告を吐いたあとで、作業は終了。
じゃ、make installしますか。。。

$ sudo make install
Finished processing dependencies for pycuda==2016.1.1

なんか、終わったくさいぞ!!

いったんターミナルを終了して、立ち上げ直す。
pycudaの動作確認をしてみる。

$ python3
Python 3.5.1 |Anaconda 4.0.0 (x86_64)| (default, Dec  7 2015, 11:24:55)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pycuda.autoinit
>>>

やったっ!!
成功しましたっ!!!!

0 件のコメント:

コメントを投稿