SSブログ

知らんうちにOpenCLのオフラインコンパイルのが出てた。 [プログラミング]

OpenCL 1.2出ましたね。でも、まだAppleはこれに対してはまだ動いてないみたい。普通に簡単なC言語のコンパイルが出来るくらいになってくれよ。あまりにも穴が有りすぎで単純なコードしか通らないんだよ。

あ、夏のうちに出てたんですね、オフラインコンパイルなサンプルソース。全然見逃していたよ。

https://developer.apple.com/library/mac/samplecode/OpenCLOfflineCompilation/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011196

通例、OpenCLは*.clを使う時に、機械語に変換するのだけれど、事前にコンパイルするのがオフラインコンパイルだと思った。

AppleのOpenCLはコンパイル部分が腐っていて、自分が使う分にはお話しにならない状態だったんだけど、もしかしたら、事前のコンパイルを通せれば大丈夫かなぁとちょっと思っていたり。でも、全然期待はしていません。これで上手くいっちゃったら泣けるなぁ。


とりあえず、今までMacで正常に動かなかったkernelをコンパイルしてみる。

/System/Library/Frameworks/OpenCL.framework/Libraries/openclc -x cl -triple gpu_32-applecl-darwin -emit-llvm-bc -o cantMoveOnMac_kernel.bc cantMoveOnMac_kernel.cl

ぉ?なんかエラーが出ずにバイナリが出ました。ということは、C言語側の読み込む方が対応できれば動く可能性はある、と。

前回できなかったところの経緯。
http://miff.blog.so-net.ne.jp/2011-10-11-1

ううむ。元あったソースのclCreateProgramWithSource()を、clCreateProgramWithBinary()に書き換えてみたんだけど、やぱり、clBuildProgram()でsegmentation faultを吐き出して止まってしまう。ダメでしたね、やっぱり。3、4時間かけて色々やってみたものの、どうにもAppleのコンパイラの実装がうんこなのは変わりありませんでした。大残念。


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

nice! 0

コメント 1

miff

ちょっと調べてみたんだけど、NVIDIAはClang+LLVMでやってるっぽい。
http://llvm.org/Users.html

AMDもLLVMのコンパイラを使ってるってことで、
http://www.llvm.org/devmtg/2010-11/

AppleのもLLVMを使っているのに、同じkernelソースが動かないってのは、Appleの技術者がどうしようもない証拠かも。ほんとしっかりしてくれよな〜Apple。

ハードウェアの方がブラックボックスだから仕方ない部分はあるかもしれないけど、LLVMもらってきてカスタマイズしているだけなんだろうから、カードベンダーが出してきてるくらいにまともに動くまでは、早いところ直していただきたい。次のOSまで待つのなんて遅過ぎなんですけど。色々裏切られてばかりなので、アップルにはもう期待はしてないけどね。

by miff (2011-11-25 17:58) 

コメントを書く

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