OpenCLプログラミング#1
■ このスレッドは過去ログ倉庫に格納されています
さてついにOpenCLの仕様が公開されました。
http://www.khronos.org/opencl/
公式ページにはAPIのヘッダファイルが公開されており、
まだ実際に動かす事はできないもののプログラミングすることは可能となっています。
ということで、公開に先んじてプログラミングを始めてしまいましょう。 ひとまずwgetじゃなくて2get
Mac界隈ではCore Imageみたいにかなり使われそうだけど他のプラットフォームではどうなるかな? 仕様策定にあたり、国内メーカはほとんどなし?
NやFなどのスパコンメーカは入っていてもよさそうなのに… >>2
まだGPGPUでどんな事ができるのか模索している段階ですので、
キラーアプリが早い段階で出てこないとOpenCLを標準化するのは
難しくなっていくと思います。
Microsoftや他の団体が別の標準を作ってしまってからでは
OpenGLとDirectXのような亀裂を生んでしまうでしょう。 とりあえず、仕様書の翻訳を始めるために許可とってきます。 SpursEngineが対応しそう。
ttp://www.watch.impress.co.jp/akiba/hotline/20081206/etc_toshibaev0.html >汎用API「Open CL」への対応も「好きな奴がいて、
>仕事の合間にやっている」(同氏)とのこと。これが実現すると、
>「同じプログラムがCPUでもGPUでもSpursでも動く」
>という環境になるが、進行状況については「上司からお金が
>もらえなくても、コツコツと(笑」なのだとか。
期待できるのかなw Pixelmatorとか対応しそうじゃないか?
したらPhotoshopを超える最強アプリになる予感。 簡単に言うと、NVIDIAが独自にGPU用に作ったのがCUDAで、
GPU以外のデバイスも視野に入れられて作られようとしているのがOpenCL。 >12
thx
GPU以外ってことはLarrabee(これでスペルあってる?)や>>7の言うようにCellか? 想像だけど、ClearCaseやTerareconのようなデバイスメーカも対応せざるを得なくなるかもね。
CPUでも実装可能だし、当然ララビーも対応してくるんじゃない? さらっとサンプルソース見たけど
clCreateProgramWithSourceに渡すのはソースのテキストそのままだけど、
clCreateProgramWithBinaryに渡すバイナリって何だろ、
そのバイナリってデバイス間で互換性あんの? 少々スレ違いだけどKhnoros Groupって他の標準化もやってたのか。
OpenVG(オープンなベクターグラフィックスAPI)
http://journal.mycom.co.jp/news/2008/12/10/073/index.html
>>14
重箱隅ですがspursはCell規格じゃないですよ。PPEねーし。
PS3以外のCellにOpenうんちゃらみたいな標準規格って需要あんのかな?
IBMのCellスパコンとかは、素人目には専門家がカリカリチューニングしてそうな印象あるし
OpenGL以外におけるKhronosをどこまで信用して良いのかもいまいち。
COLLADAとか半端仕事な印象拭えないんだよな……。使ってるとこは使ってんだろか? >>22
PS3 みたいなガチガチに決まってる奴にこそ不要だろ。
例えばこういうの
http://www.hirax.net/dekirukana8/bijin2/
こそ、OpenCL的なものが実力を発揮しやすい。
で、この機能がDVカムとかに普及したとしよう。
OpenCL で実装しておけば、次のバージョンの製品の該当部分を、OpenCL 対応の別のチップに変更することも出来る。Cell から nVidia へというように。
これは一例だが、要するに標準規格への需要はある。
だけど、汎用性は効率とのトレードオフでもあるし、ネガティブな要素を数え上げればきりがない。
現段階で普及するかどうかを予測するのは無意味に近いが、今なら先行者利益に預かれるかも知れない。 組み込み関連の所が多いって所にやっぱメディア系の家電とかへの需要が期待されてるのかね
車載とか携帯電話もありうるのかな >>24
ありうるけど、まだ高価すぎる。
PIC や DSP なみにコモディティ化したら、みんなが使うだろう。
組み込みにとっては、CUDA か CL かというのは、次かその次の世代の話だろう。
ま、現場はアレもコレも知っとかないとねw >>26
ARMはSIMDらしいよな。
Appleがやってくれるかもしれん。 DsPICってのも有るし、しかも最近clockがどんどん上がってる。
このPICに載ってるDSPの数が増えたら8bitのGPGPUって感じじゃね? なんでこのスレでdsPICの名前が
CLで叩く意味はちょっと見出せないw spec読んだけどcudaに毛が生えたようなもんだね
メモリ階層もモデル化したと言うけど、ほぼ現行のGPUが前提。
興味なくなった。 1.0だからな・・・
Intel VTと同じで2.0からが本気なんだよwww >>32
>OpenCLについて,「Direct3DにおけるDirectX Compute Shaderのようなもの?」
>というイメージを抱くかもしれないが,コンセプトや実現様式が微妙に違う。
>
>最大の違いは,OpenCLが,GPUだけを対象としているわけではないということだ。
>x86プロセッサやCellプロセッサといったCPU,あるいは DSP(Digital Signal Processor)
>のようなメディアプロセッサなどのプログラミングに対応するコンセプトを持っており,
>GPUに特化したDirectX Compute Shaderとは似て非なるものだといえる。 >>37
大丈夫、DSPがOpenCLに対応する可能性は限りなく低いから。
まして、x86プロセッサでOpenCL対応するくらいならCt使う方が遥かにまし。 OpenCLの規格化作業を猛烈に推し進めたのがアップルだから >>38
なんか理解できてないようだけど、
こいつの価値は並列処理にあると思う。
要するに今までのGPGPUは、GPUによる高速化
というのがメインだったけど、OpenCLの場合は、
CPUとGPUで並列処理が可能になる。
元々はAppleとNVIDIAが協力して、CUDAを基礎に
した(と思われる)ものを、さらに標準化の過程で
より汎用性を重視して、GPUに依存しないよう設計
にしたものがOpenCL。 >>42
大丈夫、Mac専用じゃないよ。
Appleが規格の孤立化を避けるのが目的だと思うけど、
最初からオープン標準化にこだわって作られた規格。
規格の策定作業のメンバーにはIntelやAMD、NVIDIA、
ソニーなど、MSを除く主要企業は全て参加しているし、
OpenGL(ES)との連携やスマートフォンへの対応もあるし、
これから先、携帯端末全盛の時代の最有力候補でもある。 >>45
あうごめんwでも答えちゃうよ?
Mac OS X Snow Leopardに実装されるのがOpenCLで、
Windows7/vistaに実装されるのがDirectX Compute Shader。
どちらのGPGPU技術もまあ競合するものだわさ。
スマートフォンへの実装は別にして、DirectX系技術はWindows限定だし、
OpenCLにはオープンな技術というメリットがある。ただし、Windowsが市場を
ほぼ独占してるPC業界にとって、有力なのはやはりDirectX Compute Shader
の方になる。だから当面、OpenCLの主要プラットフォームがとりあえず
Macなのは致し方ない現実、という考え方じゃないのかな?
もちろんマルチプラットフォーム化を重視して、Windows環境下でも
OpenCLを採用する企業も当然存在するとは思うけど。 >>46
お前の意見なんてどうでもいい
マジで黙ってろクソ野郎 てかDirectXは独自に実装するみたいだが
MSは意地でも標準化を妨害したいらしいw 妨害つーか、OpenCLはOpenGLとは連携するが
Direct3Dとは連携しないので、MSが自前で作るしかない。 MSはどっちかっていうとマルチCore CPUをグラフィックに活かそうとしているよね。
逆。 >>52
MSはCompute Shaderを準備中。 言語はC99ベースだからいいかと思ったけど、再帰が使えないのは痛いな。
Cで書いてコンパイルしたバイナリと、OpenCLで書いてコンパイルしたバイナリを
リンクできればいいな。
.objが中間コード的なものだったら出来たかもね。 並列化しやすい問題で結構使うぞ、再帰探索は
こっち方面はIntelに期待するしかないかもね 時間とメモリの使用量が不定になるからねぇ。
OpenCLの主戦場を考えるとどうなんでしょうか。 再帰するようなアルゴリズムの場合、命令ポインタの動きに一意性がないし
決してデータレベル並列ではないんだよな。
SIMDでは命令ポインタが要素ごとに独立、というわけにはいかない。
プレディケートをやるのは逆に言うと自由に分岐ができないことの現れだし。 >>55
残念だが OpenCL C は Java や .NET のような中間コードで
OS 上のドライバがリアルタイム翻訳するからリンクは無理。
だが OpenCL を利用する本体は何でもいいから
C や C++、Objective-C なんかで再帰検索すればいい。 >>64
OpenCL 1.0 仕様書
ttp://www.khronos.org/registry/cl/specs/opencl-1.0.43.pdf OpenCLのCPU動作版って公式で作るのか?
それとも誰か作ってる人が居る? Intel か Apple が CPU 用 OpenCL ドライバを作成すれば問題ない。
Windows や Linux の他社 OS や
AMD などの他社 CPU などで動作するドライバは
やっぱり公式待ちかな。
個人で Java VM や GPU Direct3D/OpenGL ドライバを
作ってしまえる人が興味を持ってくれたら話は別だけど。 スノレパにはCPU用ドライバが付いてくるでしょ
GPUよりも数十倍から100倍以上は処理が遅いCPUで
Open CLを動かす価値が有るかはわからないけれど >GPUよりも数十倍から100倍以上は処理が遅いCPU
という夢を見ている Core 2 Quad QX9775: 102.4 GFLOPS
Radeon HD4870:1.2 TFLOPS(1200 GFLOPS)
一桁余分だな。 CPU と GPU を並列に走らせて 10 が 11 になるよりも、
その1をUIやGPUが苦手な処理を与えたほうがいいんじゃね?
マルチタスク(プロセス)的にも CPU は空けておきたいかも CPUよりGPUのが早いってことになってるけど
それは実は大嘘でちゃんとマルチコアで作りこんだらスピードは大差ない
GPUメーカー製のドライバはCPUでも動くような振りだけは実装するだろうけど
絶対にまともな実装はしない、ばれるから
だからちゃんとしたCPUメーカーか第三者が作ったものが必要 >>71
それは理論的な演算速度だけだとそうだけど
メインメモリからデータを取り出して結果を戻すのに要する時間で計算すると
遥かにCPUの方が早い 結局ワークロード次第なのだがGPUが明らかに速い分野なんて非常に限定的で馬鹿にされまくっているのが実情
GPGPUは過去のEPICと被るな >>74
なんでGPUメーカーがCPU用ドライバを作るんだよ。
DirectXですらCPU用ドライバはMSが作ってるんだぜ?
>>75
特定分野に関してならメモリアクセスは速いでしょ。
じゃないと3Dレンダリングが使い物にならないものになる。
結局プログラマがどれだけ局所化を行えるかだろうね >>77
3Dは転送する情報量は頂点座標だけなんだからCPUより早いのは当たり前でしょ
CPUのネックはメモリ転送速度だって言ってるでしょ
大量のデータを計算するような用途ではどんな工夫をしようがCPUには勝てない しかも分散処理する部分は複雑に作りこんでないから
計算してる間は描画が止まるからな
計算してる間は文句なしに画面描画が止まる
CPUだと計算負荷に応じて外も動くけど >>78
だからそのCPUでは勝てない分野でGPUを有効活用しようっていうのがGPGPUでしょ
映像のエンコードしかり、ゲノムの解析しかり超大量のデータ処理を肩代わりしたり、
またはAIなどの人工知能やMSのProject Natalみたいなものを実現するため、とか >>79
だからGPUの仮想化とかマルチタスク処理とかがあるんでしょう
3Dゲームとかでもない限り 1/60 秒毎に画面描画を
挟むのはたいした負荷でもないレベルだし。
GPUでは小回りが利かない部分を管理するのがCPUの得意分野 >>80
だから今の構造だとCPUでは勝てない分野が3Dポリゴンの描画しかないのw >>81
>>GPUでは小回りが利かない部分を管理するのがCPUの得意分野
現状と何も変わらない 本来ならGPUの機能はCPU内部にあるべきだが、
IBMやINTELはサーバとか大規模計算方面ばかり気にして3Dとかグラフィックとかを軽視していたから、
見るに見かねた人がGPUなんてものを作ったんだよね。 GPUって、本質的に見たらやってることはCPUと変わらないのに、
CPUとバスを経由して通信している分無駄があるんだよね。
だから将来的にGPUはCPUに飲み込まれるのが健全だと思うね。 >>86
そういう処理をするCPUの命令の一つにしてしまえば良い。 >>86
だから計算対象のデータをGPU側に引き渡してる間にCPUで計算出来るっつー話だわな >>88
いや、まぁ実際にそういうことが多いわけだけど、俺が言いたいのそうじゃなくて、
GPUをCPUに統合するのが健全だと言っているだけであって・・
夢見がちな俺の願望でしかないわけだが。 >>89
今その方向に向かっているな。
AMDそのためにATIを買ったんだし、GPU専業のNvidiaは焦っている。 ハードだけ買ってもOpenCLはじめソフトがgdgd
このままだとIntel最強ってゆー何時もの結論で終了する マカーとして言わせてもらえばQuickTimeとAdobe CSくらいが対応してくれれば対応アプリとしては十分な気がするんだよな
OpenCLが一番活用できそうなのって結局画像動画関連だし
それにCoreImageやCoreVideoがCPUでも動いたようにOpenCLもCPU上で動かせるから未来がどっちに転んでも技術としては問題ないと思う 画像ビューアはCPUで処理したほうが速いだろ
>>89
Intel Larrabee というGPUは Pentium MMX というCPUに
GPU用のベクタプロセッサを沢山積んだモノになるよ。
で、そこで培った技術で後々 CPU 命令に GPU 命令が内蔵される。
>>92
Adobe CS4 はすでに CUDA や ATI Stream に対応しているから
下位互換でしかない OpenCL に対応する意味は余り無い。 DCのデモでも、CPUより早く動かすの苦労してたよ。
データ数が半端無く多くないとCPUを上回れない。 茸の左をひょいひょい躱した粟生と
リナレスの鬼速ジャブ…
この対決は興味深いぜ CPUとは別に画像処理などに有用なコプロセッサが1つ
PCやMacで眠っているからそれも使おうって方向でいい。 GPUの得意分野は浮動小数点数のベクタ演算だからなおさらコプロちっく Larrabeeって次世代の8087って位置づけなんだろうな ■ このスレッドは過去ログ倉庫に格納されています