OpenCLプログラミング#1

■ このスレッドは過去ログ倉庫に格納されています
1a36 ◆K0BqlCB3.k
垢版 |
2008/12/10(水) 15:38:25
さてついにOpenCLの仕様が公開されました。

http://www.khronos.org/opencl/

公式ページにはAPIのヘッダファイルが公開されており、
まだ実際に動かす事はできないもののプログラミングすることは可能となっています。
ということで、公開に先んじてプログラミングを始めてしまいましょう。
2009/10/11(日) 03:22:25
>>208
いやいや、CUDAの動作はそれであってるのけど、それはOpenCLの仕様違反だろ?
それに画像処理するならカーネルループとかあり得ないし。カーネル実行のオーバーヘッドの事を理解していないとしか思えないな。
2009/10/11(日) 10:06:30
OpenCL Tutorial - Shared Memory Kernel Optimization
http://www.macresearch.org/opencl_episode6
OpenCL Tutorials
http://www.macresearch.org/opencl
OpenCL Programming Guide for Mac OS X
http://developer.apple.com/mac/library/documentation/Performance/Conceptual/OpenCL_MacProgGuide/Introduction/Introduction.html
2009/10/11(日) 18:47:07
>>212
物理的にGPUがマルチタスクに対応してないんだからどうしようもないな
オーバーヘッドも含めてGPU処理の性能の限界が現時点でそうなんだからしょうがない
2009/10/19(月) 21:09:31
>>213
思ったんだけど、もろにNVIDIA寄りの内容だよね
2009/10/19(月) 21:58:59
2009 LLVM Developers' Meeting
http://llvm.org/devmtg/2009-10/
↑OpenCLなどApple社員系の情報が非公開なのは残念だが参考に。

http://llvm.org/docs/ReleaseNotes-2.6.html
2009/10/22(木) 01:41:00
>>211
違う。

C と C++ と Java みたいなモンで3つとも同じように
CPU 上で動くが各言語間でソースコードの互換性は……だろ?

CUDA は like C、ATI Stream は Book+、OpenCL は OpenCL C という別言語になる。
プログラマは自分の開発環境などに合わせた好きな言語が選べるってだけだ。
2009/10/22(木) 12:21:11
新iMacのGPUがRadeonなんだが、OpenCLの対応はどうなの?
SDKあるんだっけ?
2009/10/29(木) 23:09:47
なんか在庫買いあさったらしいからこれから最適化進めてくるんじゃない
2009/10/31(土) 11:17:42
誰かこの前、秋葉原で開催されたOpenCLセミナー行った人いる?
いたら、簡単な感想聞きたいです。
2009/11/01(日) 01:05:25
>>220
いったよ
・nVIDIAの人「Fermiアーキテクチャは凄いぞ!」まぁ凄いけどさ。
・FIXSTARSの人のプログラミング入門は参考になったけどあの内容だけだと即書くのはキツイ。
 最後には「ちゃんとやりたい人向けに終日の有料教室やってるよ!」だったしw
・Appleの話はOpenCLじゃなくて殆どCocoaの話…
・Dellは殆ど営業トーク

内容的にはそんなに深くなかったかなー…って感じ。
222デフォルトの名無しさん
垢版 |
2009/11/03(火) 04:42:31
オープンクルとオープングルって何か共通点はあるの?
2009/11/03(火) 08:17:17
釣られないぞとつぶやいたそこのあなた。
既に釣られてますよ。
2009/11/05(木) 12:25:52
OpenCLはCPUのSIMD命令を置き換えられるようなものになるといいな
そのうちCPUにGPUも統合するんだからさ
2009/11/05(木) 19:47:54
バイナリが環境依存なのがなあ。
CUDAみたいに、中間コードがあればいいのに。
2009/11/05(木) 19:57:30
>>220
基本は221の通りだが、フィックスターズの人が1月に本来出すとか言ってた
2009/11/23(月) 18:23:10
ttp://www.alphaworks.ibm.com/tech/opencl
2009/11/23(月) 18:28:39
POWER6とcellもopenCLに対応
2009/11/23(月) 19:06:30
いろいろ対応してくれるのはいいけど、カーネル・ソースが第三者に丸見えなのは何とかならないの?
2009/11/23(月) 23:57:57
暗号化すればいいじゃない
2009/11/24(火) 05:03:17
見られて困るほど複雑なアルゴリズムはカーネルだけじゃ作れないから大丈夫だw
2009/11/27(金) 22:27:11
ATI Streamを落としてきたけどマニュアルないのな。
KronosにはCのはあるけどC++のはないね。
せっかくStreamにC++のサンプルがあって便利そうなのに。
2009/11/27(金) 23:31:48
とりあえず今持ってるコードを

FORTRAN→C→OpenCL C

って感じで進めてみるかなー
2009/11/27(金) 23:35:20
独り言は壁に向かってしてくれ
2009/11/28(土) 17:26:06
(´・ω・`)ショボーン
2009/12/05(土) 23:25:28
最初の世代のLarrabeeは一般には降りてずにHPC専業でいくようだ
たのしみにしてたのに(´・ω・`)
2009/12/13(日) 19:17:07
S3のGPUでOpenCL開発するためのSDKってどこ?
2009/12/17(木) 16:18:02
質問です

OpenCLを使ったプログラムのバイナリはRadeonでもGeForceでも使えますか?
2009/12/17(木) 17:35:20
まずは実際にやる事だ
2009/12/18(金) 00:39:28
ソースでも中間コードでもない、ただのバイナリをなんだと思っているんだ
2009/12/23(水) 20:27:30
フィックスターズから本出るよ
http://www.amazon.co.jp/dp/484432814X
2009/12/23(水) 20:55:25
三木聡しゃちょはんて何処担当してるの?
2009/12/24(木) 20:20:23
>>241
>著者からのコメント
>"The free lunch is over."

そんなこといわれてもな・・・
2009/12/26(土) 01:03:24
>>238
ソースレベルの互換性しかないので、バイナリは非互換。
ただしランタイムにカーネルのソースをコンパイル出来るので、恰もバイナリ互換があるかのようにコーディング出来る。
とはいえ、そうするとCELLみたいに特殊な構造だとパフォーマンスを発揮するようにコードを書くのがたいへんだろうけど。
2009/12/26(土) 13:46:36
Radeonの4650で遊んだ感じでいうとCellのが楽だな
2009/12/28(月) 09:34:55
>>242
そこには触れてやるな。みんなおかしいとは思っているがしゃちょーには逆らえない
2009/12/28(月) 19:37:20
>>245
http://techreport.com/discussions.x/18201
2009/12/30(水) 03:30:14
今年(来年?)はプログラミングコンテスト開かないの?
2010/01/01(金) 10:53:23
うっせー糞して寝ろ
2010/01/05(火) 20:45:23
どっちかっていうと、OpenGL内部のメモリ内容を直接書き換えれるのが大きいな。
描画内容に変更加えて再描画とか、データの高速可視化とか。

個人的にCPUに付加かけずにリアルタイム可視化ができるのがいいな。
2010/01/18(月) 19:22:26
OpenCL並列プログラミングって本が25日に出るみたい。
2010/01/18(月) 22:04:56
しってるしってる、と思ったらフィクスターズのやつとは別か
ソースキボンヌ
2010/01/18(月) 22:14:14
>>252
今日の日経の朝刊1面下の広告
2010/01/18(月) 22:18:22
出版社:カットシステム
著者:池田成樹
http://www.cutt.co.jp
255デフォルトの名無しさん
垢版 |
2010/01/18(月) 22:19:55
JAL株5円まで来たか
いよいよ明日はクライマックス
2010/01/18(月) 23:48:45
うっせー糞して寝ろ
2010/01/19(火) 00:15:14
便秘で出ないっす
2010/01/19(火) 20:00:15
ケツに目薬をさすと便秘が治るという噂を聞いたことがある
2010/01/21(木) 15:08:18
最近GPGPUを始めようと調べ始めたのですが、
cudaとCLの違いって、CUDAはCPU部分もカーネル部分も混在したプログラムを書いてnvccが両者を分離してくれる、
CLはプログラマ自身が最初からCPU用とカーネル用とを分けてプログラムを書く
という認識でよいですか。

カーネルとかグローバルメモリとかの概念はほぼ一緒と考えてよいのでしょうか。
CLの方が拡張言語っぽくないのと共通規格な分気持ちがいいですが、カーネルのコンパイルとか引数設定を明示的にしないといけない分どんくさい感じですね。
2010/01/21(木) 15:14:41
OpenCLはまだまともに動かないからCUDAにしとけ
261250
垢版 |
2010/01/21(木) 18:20:06
cudaとopenclの決定的な違い?

cudaはGPGPU
openclは計算機資源API
GPUに限らず、CPU,(故)Cell/BE,DSPチップ等の演算装置を汎用的な計算機資源として使うためのAPIがCL
GPUを使うならメモリ概念はCUDAとだいたい同じ。

完全にホストプログラムとカーネルプログラムおよび両者間通信を手作業で作らないといけないどんくささ(?)はあるものの
「メインプログラムはホスト実行で,計算機資源だけ別のハードウェアを使う」設計APIなので自由度はかなり高い

ただOpen○○のくせにMac10.6以外はまともに動く環境が少ないとか
JITコンパイルなので実行するまでソースのバグがわからない上に資料がまだ充実してないとか、
けっこうまだまだ問題も多い。
>>260の言う通り今やるならCUDAが良いと思うぞ。
262259
垢版 |
2010/01/21(木) 18:49:08
セルとかララビーとかアムドが本気を出すとか色々可能性があるからCLの方がいいかなと思ってたけど
CUDAの方がいいのかな。
拡張言語ってのが言語仕様的にOpenMPあたりと干渉しそうなのもCLを考えていた要素なんだけど。
2010/01/21(木) 22:57:22
どっちもたいして変わらん どっちもやれ
2010/01/22(金) 18:58:59
OpenMPとOpenCLが干渉?
ホスト管理スケジューリングぐらいじゃねーの?
2010/01/22(金) 23:44:42
radeonでCUDAって出来ないの?
2010/01/23(土) 01:25:03
無理。Stream使え。
でも、技術デモ程度ではなく実用したいならゲフォ使え。
2010/01/23(土) 10:59:33
スレ違い
268デフォルトの名無しさん
垢版 |
2010/01/26(火) 01:24:10
ふぃくすたのOpenCL入門買ったぞ、LinuxでSDKについてきたサンプルコードがコンパイルできなくて死んだ
っていうか普通にアルゴリズムの勉強してからやれクズ
2010/01/26(火) 01:27:54
二行目どういう意味?
2010/01/26(火) 05:29:18
268 said s/he was kuzu.
2010/03/10(水) 22:33:57
>>266
GPGPU目的だと、ATI<nVidiaなの?
2010/03/10(水) 22:52:32
2010/03/11(木) 20:16:16
CUDA(nVIDIA)/Stream(AMD) = GPGPU環境
OpenCL = 計算資源利用API ≠ GPGPU

GPGPUのみのなら別スレへ。
とりあえずOpenCL<CUDA(nVIDIA)/Stream(AMD)
かつ開発環境の整備具や資料面ではGPGPUでもnVIDIAに軍配が上がるのが一般論
2010/03/12(金) 01:13:55
CUDAを使った実績はかなりあるけど、
OpenCLをつかってパフォーマンスが上がるって結果はあるのか?
2010/03/12(金) 13:56:03
FLOPSのベンチとか調べればちらほら(程度は)ある。ただFLOPSが高くても転送コストが重かったりする。
実行結果をそのままOpenGLとかで可視化するとか転送コストを挟まない場合には向いてる。レイトレとか。
ただ開発/デバグにかかる時間と労力はCUDAと比較にならないと思うぐらい悪い。慣れれば別。

俺はOpenCL好きだけどね。
2010/03/13(土) 13:19:47
昔の超不安定なRadeonのせいでRadeonを買うことにトラウマがあるから
GPGPUもGeForceしかしたくない
2010/03/13(土) 21:40:13
いまノートPCでRadeonHD3200
OpenCL使ってみたいけど、使える環境にするにはPC一式を新しく買うしかないよね?orz
2010/03/13(土) 22:12:04
ATIStream版OpenCLのCPUデバイスで我慢すれば
2010/03/14(日) 04:36:42
ATI、各GPUのドライバまで手が廻らな過ぎ。
2010/03/14(日) 10:20:38
正直どこのベンダもOpenCLにそんなに力入れてない気がしてきた。。。
2010/03/14(日) 12:58:43
いつまでnVidiaに夢見てんだよ
282デフォルトの名無しさん
垢版 |
2010/03/14(日) 15:29:40
GeForce GT 240 でOpenCL SDK V2.3のサンプルが動かない。
というかSDKでビルドは成功するが全然動かない。
ドラバは最新の 196.21
GPU-Z.0.3.9で確認するとOpenCLはチェックが入っている。
2010/03/14(日) 15:41:44
現状CUDAで十分な気がする
2010/03/14(日) 18:08:04
CUDAもOpenCLもこのまま消えそうだね
2010/03/14(日) 21:15:50
ほかで何が残りそうなの
2010/03/14(日) 23:21:11
調べてないけど、OpenGL 4は、OpenCLと連携するようになってるらしいから
徐々にOpenCLも使われるようになっていくんじゃない
2010/03/15(月) 18:48:08
POWERVR SGX545を採用したモバイル機器での普及の方が先かも知れない。
2010/03/15(月) 20:09:26
>>286
既にOpenGLと連携できるよ。頂点バッファとかテクスチャとかだからGL2.x以降とかな?
289デフォルトの名無しさん
垢版 |
2010/03/18(木) 17:36:26
NVIDIAのOpenCLのダウンロードから一通りダウンロードしてきたけど、
コンパイルとかは、どのコマンドを使うの?
OSはLinuxです。
2010/03/18(木) 19:40:13
何のコンパイル?
291デフォルトの名無しさん
垢版 |
2010/03/20(土) 03:12:14
>>290
OpenCL file
292デフォルトの名無しさん
垢版 |
2010/03/20(土) 05:50:48
nvcc
293290
垢版 |
2010/03/20(土) 08:02:27
fileてのが何かよくわからんが
NVIDIAサンプルに含まれるホスト側のCソースなら/OpenCL/makeでいけるかと。
カーネル用のCLソースならclBuildProgram()関数でどうぞ。
2010/03/20(土) 17:29:53
CUDA 3.0 Downloads
http://developer.nvidia.com/object/cuda_3_0_downloads.html
295デフォルトの名無しさん
垢版 |
2010/03/20(土) 18:17:46
Mac OS X 10.6を手に入れたんだけど、OpenCLの使い方を教えてください
とりあえず、ドライバだけは入れました。
2010/03/20(土) 19:11:03
ソース書く→コンパイル→実行→happy
2010/03/20(土) 20:03:11
>>295
ttp://developer.apple.com/
2010/03/20(土) 20:08:14
あと
ttp://developer.apple.com/mac/library/navigation/index.html?section=Resource+Types&topic=Sample+Code#section=Frameworks&topic=OpenCL
299デフォルトの名無しさん
垢版 |
2010/03/21(日) 13:14:54
LinuxでOpenCLやってるんだけど、倍精度は使えへんの?
300デフォルトの名無しさん
垢版 |
2010/03/21(日) 14:28:18
282だけど
CUDA 3.0 Downloads
で上手くいきました。
ありがとう。>294
2010/03/22(月) 12:45:47
Linuxと倍精度になんの関係が
2010/03/22(月) 13:16:38
CL C言語での倍精度浮動小数点はGPUベンダーにより任意サポート
303デフォルトの名無しさん
垢版 |
2010/03/26(金) 00:59:44
よくわからんけど、倍精度を有効にするスイッチとかあるの?
CUDAだとsm13だけど
2010/03/26(金) 08:06:27
>>303

あるよ

対応しているかは実装依存だけど。

http://www.khronos.org/opencl/sdk/1.0/docs/man/xhtml/cl_khr_fp64.html
2010/04/01(木) 22:53:00
struct {
int I;
} tA;

struct {
tA * pa;
} tB;

__kernel void Func (__global tB *b) {
int idx = get_global_id(0);

int B = b[idx].a->I;
}

みたいにすると、int B に値が入らないのってなんで?
書き方が悪いのかな?

教えてエロい人。
2010/04/02(金) 00:52:35
>>305
君にOpenCLは向いてないよ。。。

ちなみに
b[idx].pa の参照先が不定もしくは管理領域外だと思われ

通常であればアクセス例外
2010/04/02(金) 01:07:15
これはコンパイル通るのか?
2010/04/02(金) 02:12:02
tAの実体はいずこ?
tBのメンバpaはポインタだぞ。
ポインタは実体ではないぞ。
やるなら、

__kernel void Func (__global tB *b) {
int idx = get_global_id(0);
tA C;
C.I = 1;
b[idx].pa = (tA *)(&C);
int B = b[idx].pa->C;
}

じゃないか?
OpenCLより、ポインタを先に勉強した方がいいぞ。
2010/04/02(金) 02:33:18
>>308
あ、間違えた。
int B = b[idx].pa.I;
だった。
そもそも根本的におかしいね。
悪い、俺もポインタの勉強が必要だわ。
それ以前に構造体の勉強が必要だ。
2010/04/02(金) 08:10:34
305だけど、306の話で知りたいことはわかった。
変な質問でごめんね。みんなありがとう。

2010/04/23(金) 01:47:27
ラデですまんが、vista64でATI Stream 2.01にしたらopen CLのサンプルがVC++ Expressでコンパイルできても動かない(clGetPlatformIDsが-1001を返す)んだけど、こんなことなた人います?
2.0bだと動いたのだが。
Platform SDKの64bitコンパイラを使えばちゃんとサンプルも動かせるけど、MS流儀のコンパイルオプションやmakefileの書式が面倒くさい・・・
LinuxのCUDA機を購入する前にPCでOpen CLのお勉強をしようと思ったのにつまらんところで時間をくってしまった。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況