2013年6月8日土曜日

pycudaをWindowsにインストール

光線追跡を高速化するためにPyCudaを導入することにした。
Cythonとかも考えて見たけど、Cっぽく書くならCUDAでもいいかと思った。


GPUの構造とかはAmazonで買った本を読んで何となく理解。

Python(x,y)を使っているのでライブラリのインストールはあまりやったことがなかった。
(それがPython(x,y)を使う理由の一つでもある)

バイナリっぽいのも落ちとったけど、どうもうまく行かず。
たぶん原因はPython(x,y)で使っているPython2.7が32-bitだということ。
なのでPyCudaも32-bitでインストールしければ。


最終的に参考になったページはここ。
https://github.com/Theano/Theano/wiki/WindowsInstallation


gccはPython(x,y)をインストールしたときに一緒に入ってる。
CUDAのバージョンは最新の5.0をインストールした。
gitはどうやら次のTheanoのインストールに使うらしく、今回はインストールしたけど意味なかったみたい。


手順通りやるとnumeric_cast_traits_common.hppとかがないと言われたのでネットを探して探している場所に置いた。

cl.exeのパスが通ってないと言われたので通した。
(会社のパソコンはVisualStudio Express10で、家はVisual Studio2008やけど、両方うまく行ったのでバージョンはあまり関係ないのか?)

サンプルコードを実行すると、Unicodeで保存したほうがええよ、的なメッセージが大量にでる。
Unicodeで保存すれば出んくなるけど、他のファイルを参照しだすとまた出てくる。全部保存し直すのは面倒で、しかもかなり見難くなる。ま、そのうちなおそう。

テストをするとGPUを使ったほうが早くなってるみたいやし、とりあえずインストール成功!


ちなみにテストは
http://wiki.tiker.net/PyCuda/Examples/SimpleSpeedTest
を使って結果は以下のようになった。
実行環境は
Windows7 Ultimate 64bit
Corei5  2.67GHz
GeForce GT 240
Python 2.7.2 32bit
Cuda5.0

Using nbr_values == 8192
Calculating 100000 iterations
SourceModule time and first three results:
0.207754s, [ 0.005477  0.005477  0.005477]
Elementwise time and first three results:
0.209894s, [ 0.005477  0.005477  0.005477]
Elementwise Python looping time and first three results:
5.444648s, [ 0.005477  0.005477  0.005477]
GPUArray time and first three results:
19.914516s, [ 0.005477  0.005477  0.005477]
CPU time and first three results:
64.993598s, [ 0.005477  0.005477  0.005477]


SourceModuleとElementwiseがあんまり変わらん結果になった。
Elementwiseがなんか分からんのでもうすこしこの辺勉強します。






0 件のコメント:

コメントを投稿