Barracudaをつかってみる。

最近興味のあるOpenCL


そんなOpenCLを使ってみましょう言うことで。
またまた最近興味のあるRubyからOpenCLを使える
そんなラッパーの一つに"Barracuda"というものがあるそうで。
今回はこちらを使ってみましたので、その際の環境構築等備忘録を。


環境

gemのインストール

Macでは初めからRubyが使えますので、そこは置いておいて。
gemを利用してBarracudaをインストールしていきたいと思います。

といっても、まずはgemのインストールからですね。
こちらは、便利なものがよくわからなかったので最新版をソースから入れたいと思います。

RubyGems - RubyForge

ダウンロードしたものを、

$ unzip rubygems-1.8.24.zip

と解凍して

$ cd rubygems-1.8.24

フォルダ内に移動。
続けて、

$ ruby setup.rb

とコマンドを入力してgemのインストールが完了します。


試しに実行してみると、

$ gem -v
1.8.24

という感じに表示されるのではないでしょうか?


Barracudaのインストール

gemが使えるようになっていると思いますので、あとはサクっと。

# gem install barracuda
Building native extensions. This could take a while...
Successfully installed barracuda-1.3
1 gem installed
Installing ri documentation for barracuda-1.3...<省略>
Installing RDoc documentation for barracuda-1.3...<省略>

こんな感じで、問題なくインストール出来るかと思います。

ただし!

私同様、事前にXcodeをインストールしていない環境で、
gemからでも、ソースコードからでも、インストールしようとすると

sudo gem install pkg/barracuda-1.3.gem --local
Building native extensions. This could take a while...
ERROR: Error installing pkg/barracuda-1.3.gem:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/barracuda-1.3 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/barracuda-1.3/ext/gem_make.out
rake aborted!
Command failed with status (1): [sudo gem install pkg/barracuda-1.3.gem --l...]
/Users/nk87/Desktop/var/barracuda/Rakefile:27
(See full trace by running task with --trace)

このようなエラーが表示されますので、同様の症状の場合には今一度確認してみてください。
Xcodeを入れていないために、"makeコマンド"が無いよー"という理由で起こっているエラーのようです。


Xcodeのインストールに関しては、一つ前のエントリーをどうぞ。


動かしてみる。

最後に、gistに上がっているソースコードを利用させていただいて実際に動かしてみましょう。
gitの使い方はまた別のお話ということで、ここはさくっとログだけで省略させて下さい。w
https://gist.github.com/953378 - r7kamura

$ git clone git://gist.github.com/953378
Cloning into '953378'...
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 13 (delta 5), reused 0 (delta 0)
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (5/5), done.
$ cd 953378/
$ ruby openCLwithBarracuda.rb
Rehearsal ---------------------------------------
cpu 39.950000 0.310000 40.260000 ( 51.416458)
gpu 0.260000 0.500000 0.760000 ( 4.652000)

                                                          • total: 41.020000sec

user system total real
cpu 40.000000 0.300000 40.300000 ( 50.067372)
gpu 0.250000 0.500000 0.750000 ( 4.479616)

異様にスコアが悪いのは、裏でいろいろ立ち上げてるだけなんだからね。><
っていう言い訳も置いておいて、私のMacBookPro(Mid 2010)で実際に実行した結果になります。


おわりに

こんな感じに使えるようですが、具体的にどのようにプログラムを書くのとか
まったく理解できていないので、今後の課題ですね。。。
OpenCL、WebCL…この辺りついてもう少し詳しく調べていきたい今日この頃です。