折角、GTX1070を購入したのでpythonでCUDAにトライしてみようと思って環境を準備したら、意外とはまったので。
ほぼ自分のインストールメモで文字しかないですが参考になれば。
-
環境
- Windows10 Home 64bit Anniversary Update
- Python 3.5.2(Anaconda 4.1.1 (64-bit))
- Geforce GTX1070
-
インストール
- Anaconda 4.1.1 For Windows
-
Visual Studio Community 2013 with Update 5
- インストール後、環境変数PATHの一番目に「C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin」を追加
- CUDA Toolkit 8.0 Release Candidate
-
When the CUDA Toolkit will support GTX1070 Graphics Card???
- 上記に従いグラフィックドライバの最新版を再インストール
pycuda は pip でインストール。
pip install pycuda
テストコードを実行するとUnicodeDecodeErrorが出るのでここ を参考にcompiler.pyの264行目辺りに以下のコードを追加
...
self._check_arch(arch)
if options is not None:
options.extend(["-Xcompiler","/wd 4819"])
else:
options = ["-Xcompiler","/wd 4819"]
cubin = compile(source, nvcc, options, keep, no_extern_c,
arch, code, cache_dir, include_dirs)
...
テストコードで動作確認。
import pycuda.gpuarray as gpuarray
import pycuda.driver as cuda
import pycuda.autoinit
import numpy
a_gpu = gpuarray.to_gpu(numpy.random.randn(4,4).astype(numpy.float32))
a_doubled = (2*a_gpu).get()
print (a_doubled)
print (a_gpu)
実行結果は下記の通り。
時間計測も何もしていないが動いてはいるようだ。
[[ 0.06258085 3.00050306 -2.16977096 -1.87397981]
[-2.13656282 4.49329472 0.04928281 3.36462641]
[-0.23879284 -2.65320969 -0.87821233 0.39281949]
[ 0.31394795 -0.32421556 0.16610235 2.44501066]]
[[ 0.03129042 1.50025153 -1.08488548 -0.9369899 ]
[-1.06828141 2.24664736 0.0246414 1.6823132 ]
[-0.11939642 -1.32660484 -0.43910617 0.19640975]
[ 0.15697397 -0.16210778 0.08305117 1.22250533]]
ちなみにはまった理由は完全に自分のミスで
- GTX1070に対応していない(?)CUDA Toolkit 7.5をインストールしてしまった
- 最初python2.7系と3.5系の両方がインストールされていて混乱した。(結局、2.7系は一旦アンインストール)