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の実装がヘボくて不具合があるかどうかは後々に報告します。
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
コメント 0