SSブログ

UbuntuでOpenCLなソースを直接gccでコンパイル。 [プログラミング]

UbuntuにCUDA4.0を入れる時に、リポジトリから入れる方法があって、以前それで入れました。
 http://miff.blog.so-net.ne.jp/2011-08-16-1

OpenCLのソースをコンパイルするには、普通はサンプルコードがやっているように、OpenCL/common/common_opencl.mkを使ってやるのが筋だろう。でも、何となく面倒なので、簡単にできるならそっちの方がいいと思っていた。CUDAを使った時も、common.mkを参考にして、それを使わずにコンパイルした。

OpenCLをやるんならAMDのビデオカードを使ってやるべきなんだろうけど、CUDAの環境にもOpenCLが含まれている事を知ってやってみようと思った。AMDはいまいち好きじゃないし、あいているマシンがあるのだが、いずれやるにしてもマシンに新規セットアップするのも面倒だ。

ということで、簡単にできればCUDA4.0な環境でOpenCLを使ってみた。そもそもNvidia用じゃないソースをコンパイルしてみようと思った。元々AMD用のソースを使って、MacOSX上で動かそうと思っていたのだけれど、MacOSXの実装がヘボすぎるらしく、キチンと動いてくれなかった。もしかすると、AMD用のものがヘボくてダメなのかもしれないので、それも確かめておきたかった。

そんなわけで、OpenCLを簡単にコンパイルしたい。環境をリポジトリから入れたからか、色々パスとかが通っていて楽できた。正味、-lOpenCLを入れるだけでいい。

 g++ hoge.cpp -o hoge -lOpenCL

多分、gccでも同様にできるはず。これだったらMacでの-framework openclより文字数が少ない分、楽ですね。


あと、Ubuntuがカーネルを変えたとき、GPGPU用のドライバがダメになると思うんだけど、それは以前書いたような方法で直す事を確認できた。きちんとコンパイルし直してくれているらしい。

 sudo aptitude reinstall nvidia-current

本当にAppleのOpenCLの実装がヘボくて不具合があるかどうかは後々に報告します。

タグ:GPGPU
nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。