OpenCLプログラミング#1

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

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

公式ページにはAPIのヘッダファイルが公開されており、
まだ実際に動かす事はできないもののプログラミングすることは可能となっています。
ということで、公開に先んじてプログラミングを始めてしまいましょう。
2012/06/27(水) 21:29:31.15
>>594
違うというか、根本的に違う
2012/06/30(土) 22:46:38.04
>>594
理論上は合っているよ。
まあ、微妙に非互換だったり、ランタイムの
インストール方法など気を使わざるを得ないのが現実だが。
2012/07/01(日) 01:24:59.44
>>595
2012/07/01(日) 12:56:18.02
>>595
2012/07/05(木) 01:16:06.38
GT440でclinfoしたら
Max compute units: 2
と出たんだけど、この2とGT440のCUDAコア96とはどういう関係にあるの?
2012/07/05(木) 12:03:19.25
NVIDIAの場合
Max Compute unit = Streaming Multiprocessor(SM) = Streaming Multiprocessor eXtreme(SMX)
2012/07/27(金) 10:28:17.75
CPUデバイスのランタイムを有効にするにはAMDかインテルのSDKをインストールしてもらうしかないの?
ランタイムだけのパッケージってある?
2012/07/27(金) 11:10:16.02
>>601
Intel の Windows 用ならあるね。
AMD は知らん。
2012/07/28(土) 14:23:52.35
http://software.intel.com/en-us/articles/vcsource-tools-opencl-sdk/
のダウンロードリストボックスのOpenCL CPU only runtime(Windows* OS)ってやつか。
見落としてた。ありがとう。
2012/07/30(月) 20:27:19.07
CPUでCLやっても遅いだけで意味無いなぁ
2012/07/30(月) 22:03:29.12
>>604
どんなプログラムなのかしらないけど、ボクが試したのは充分速かったけどなぁ。
いやまあ、GPUと絶対値を比べればもちろん遅いけど。w
2012/07/30(月) 22:41:12.50
CPUでOpenCL使うとお手軽にSIMD+マルチコア使えるな。
2012/07/30(月) 22:48:37.20
ベンチも取らずに知ったか
2012/07/31(火) 00:12:55.35
ベンチと言えば Intel と AMD で比べてみたら、Intel のほうがかなり速かった。
いやまあ、その PC の CPU は Intel だったんだけど。w
AMD な CPU だと逆転したりするのかなぁ。
2012/07/31(火) 07:48:58.72
>>606
お手軽じゃねーっつの。
CPUでSIMDとマルチコアを使いたいためだけにOpenCLを使つかうならアホだわ。

2012/07/31(火) 10:50:46.32
phoronixのベンチ見る限りだとAMDのSDKの方が速そうだったけど
2012/07/31(火) 18:30:47.41
少なくともカーネル部分はお手軽だよ。

素のCで使うと準備が面倒だが
C++のラッパーなら大した事は無い。
2012/07/31(火) 22:46:48.26
OpenCL以外でSIMDに自動で対応してくれるのってなにかあるの?
2012/08/01(水) 06:14:34.83
インテルコンパイラ使っとけ。
それかFortranだな。
2012/08/01(水) 13:12:30.64
simdと言っているのがSSEのパックドなインストラクションのことでいいならgccでもOK。
2012/08/01(水) 22:34:10.47
gccじゃ自動ベクトル化は皆無に等しいだろ。
2012/08/01(水) 22:54:07.37
ちょっと前までSSEwとか思ってたけど
これだけ並列プログラミングが普及してきてAVX2とかみると考え変わる
2012/08/01(水) 23:22:54.44
>>611
んなアホな
CL用のメモリとのやり取りが発生するだけ無駄だよ
正直、マルチコアを使いたいならMPIが一番速い。
通信含めても。
OpenMPもなんだかんだであまり速くないな。

>>612
PGI   はあまりコードの品質よくなかったな
2012/08/02(木) 00:32:11.20
>>617
なんか解釈に誤解があるようだが。
マルチコアのどんなプログラムでもOpenCLで書けという話ではない。

OpenCLのカーネルとして記述できるような問題に
適用すれば、なんも考えずにSIMDもマルチコアも
使えるようになるし、そういう用途に限れば
OpenMPやMPIもしくはPOSIX threadとかで
真面目に書くよりお手軽だし、余程の玄人が
書くのでない限り素早く、速いコードが書ける。

CL用のメモリ云々言っておきながら、速度面で
マルチスレッドなOpenMPでなくマルチプロセスになる
MPIをすすめるあたり根本的に理解に問題があるような。
まあ、通信部分はintel MPIとかなら共有メモリ使うから
極端に不利にはならないけど、少なくともこれが最速とは行かない。
2012/08/02(木) 00:45:08.79
てかさ、CL 用のメモリとのやりとりなんかしないよね?
いや、しないようにつくるよね????

>CPUでSIMDとマルチコアを使いたいためだけにOpenCLを使つかうならアホだわ。
うわ、アホって言われちゃった。てへ。
2012/08/02(木) 01:31:56.84
OpenCLとMPIの並列化は全く別もんだし、
OpenCLとOpenMPの並列化もちょっと違う。
正直OpenCLのカーネルを書くくらいなら、
OpenMPを使った並列化の方が圧倒的に楽だわ。
OpenCLを使うメリットは複数のプラットフォームで動かすためだけだろ。
2012/08/02(木) 06:37:43.98
無脳をさらすスレですか?
2012/08/02(木) 07:45:55.61
>>619
CLデバイスとCPUは論理的に別物なんだからメモリ転送はいるだろ。

>>620
GPUがなければOpenMPなりMPIなりで並列動作しているというプログラムを作ればよい。
CPUの並列も面倒くさいのでCLでってのは手抜き杉
2012/08/02(木) 08:05:46.59
>>622
CLで書くほうが手間がかかると思うが。。。
CPU用のコードとNVIDIA用のコード、ATI用のコードを用意するのはかなり大変だし。だからOpenCLが生まれたわけで。
2012/08/02(木) 08:07:44.71
>>623
GPUがあればそっちをつかいたいのならCLを書くこと自体が手間とか言ってる場合じゃないだろ。
それ一本で済まそうというのが手抜きだっての。
CPUでCLつかっても無駄なオーバーヘッドが出るだけだし
2012/08/02(木) 08:13:47.37
論理的に別なのはわかるけど
対象がCPUの時にはメモリコピーしないような実装になっててもおかしくないような気もする
2012/08/02(木) 08:14:10.39
まあ、小さい規模のコードしか書いてない奴には分からんかもしれんが、
複数のハードウェアプラットフォームをそれぞれメンテしないといけなのは、
かなりの工数がかかるからな。
多少のパフォーマンスを犠牲にしても良いことなんて沢山あるんだよ。
2012/08/02(木) 09:23:17.69
えぇ〜・・・・・・。
キミタチは実際につかったことないんだね?

ttp://software.intel.com/sites/landingpage/opencl/optimization-guide/index.htm
の Sharing Resources Efficiently とか読んでごらんよ。
2012/08/02(木) 23:04:54.27
これは恥ずかしいw
2012/08/03(金) 00:10:12.73
どれにレスしてんだか分からんレスがおおいな。
2012/08/03(金) 00:34:42.14
このスレ、99割が誤爆レスだからな。
2012/08/03(金) 19:43:05.27
>>630
> 、99割
0.99 割? 990% ?

どのスレに書こうとしてたの?
2012/08/04(土) 01:06:20.28
だ ー か ー ら ー ぁ 誤 爆 で し ょ
2012/08/08(水) 17:52:37.24
なんでこのスレこの板にあるんだ?
2012/08/09(木) 01:30:40.64
OpenCLハードル高いなぁ
どの機材構成でどのプラットフォームでどう書けば速くなるか
検証すべき項目が多すぎる
2012/08/09(木) 02:10:21.89
逆に考えるんだ
速さをあきらめればすべて解決する
2012/08/09(木) 02:22:49.56
あちらを立てればこちらが立たずですなぁ
2012/08/10(金) 17:37:54.94
週あすwでAPUの記事載ってて、OpenCLで何でも高速に出来るように書いてたなぁw
2012/08/10(金) 23:05:10.52
write once, tune everywhere
2012/08/10(金) 23:06:13.71
anywhereだったか
2012/08/16(木) 08:59:47.91
OpenCL1.2ではデバイス分割ができるみたいだけど
それまでってどうやって並列化してたの?
コマンドキューをCompute Unit分生成してたの?
それともclEnqueueNDRangeKernelがいい感じに並列化してくれてたの?
2012/08/17(金) 04:01:39.09
でっかく突っ込んだら普通にデスクトップがフリーズしてた。
2012/08/21(火) 22:38:27.42
OpenCLで最速の構成教えて
2012/08/22(水) 00:38:21.46
素晴らしいプログラマ

これに尽きるw
2012/08/22(水) 09:45:30.14
>>642
Radeon の一番高いヤツをさせるだけさす。w
2012/08/31(金) 15:37:24.77
APUより速いん?
2012/09/06(木) 03:18:56.29
だれかOpenCLでOpenGL実装してくれ
647デフォルトの名無しさん
垢版 |
2012/09/08(土) 00:09:32.81
むしろOpenManko実装してくれ
2012/09/08(土) 01:20:37.10
プロプライエタリですので
649デフォルトの名無しさん
垢版 |
2012/09/08(土) 18:07:21.58
OpenMankoはよ
2012/09/08(土) 22:36:50.84
互換フリー0実装のKuperで我慢しとけ。
2012/09/09(日) 23:25:50.57
Mankoは商用製品で我慢しろよ
2012/09/20(木) 15:05:43.24
昔の日本はOpenだろ
653デフォルトの名無しさん
垢版 |
2012/09/27(木) 04:12:39.50
AMD Releases CodeXL Public Beta | SemiAccurate
http://semiaccurate.com/2012/09/25/amd-releases-codexl-public-beta/
2012/10/05(金) 01:09:53.66
http://pc.watch.impress.co.jp/img/pcw/docs/563/431/g02.png
2012/10/05(金) 01:15:43.73
http://engawa.2ch.net/test/read.cgi/poverty/1349151623/
2012/10/05(金) 01:16:52.94
http://prohardver.hu/dl/cnt/2012-10/90356/results/handbrake.png
2012/10/28(日) 20:13:53.12
意外と
658デフォルトの名無しさん
垢版 |
2012/11/30(金) 23:33:09.24
Khronos Releases Significant OpenCL 1.2 Specification Update | techPowerUp
http://www.techpowerup.com/176413/Khronos-Releases-Significant-OpenCL-1.2-Specification-Update.html
2012/12/07(金) 11:27:13.90
OpenCLでパスワード解析
http://securityledger.com/new-25-gpu-monster-devours-passwords-in-seconds/
2012/12/20(木) 01:25:19.05
>>615
vetor extension記法でゴリゴリかく。
若しくは、-O3 -ftree-vectorize
但し、後者はまだまだ未熟なのは確かだね。
2012/12/21(金) 09:03:58.99
最近OpenCLを本格的に始めたんだが、
OpenCLのいいところは、コンパイラを選ばない、
カーネル以外はC++で書けるといところかな。

CUDAだと同じことができるけど、ホスト側でNVCC以外使おうとするとちょっと面倒だ。
ただ、カーネルの最適化がコンパイラでもできるから、
パフォーマンスは出やすいな。

LLVMで最適化レベルって設定ができるのかな?
2012/12/22(土) 01:07:39.90
>>661
アーキテクチャが何にでも対応できるが、
アーキテクチャによって最適なWARP(に相当するもの)の数が違ったり、
コアレセンスアクセスできる条件が違ったり、キャッシュの有無だったりで
結局はアーキテクチャ依存の最適化をしないと速くならないよ。
2012/12/22(土) 02:28:20.85
場合によってはコンパイラのバージョン依存も。
2012/12/24(月) 05:32:34.90
やっとCL使うネタが準備できた
楽しみだー
2013/01/13(日) 19:49:11.31
Trinity APUで使ったらCPU使用率が50%(2コアなので1コアがフル稼働状態)になったが、こんなもんなの?
GPUで計算してるはずなんだが。
2013/01/14(月) 05:46:41.04
ジョブの内容と数によるんでは。
2013/01/14(月) 21:42:22.31
CUDA見たいに結果出るまでぽーりんぐしてんじゃないの?
2013/01/14(月) 22:02:09.36
自分のマシンのFLOPS計るのはどのベンチがお勧め?
2013/01/15(火) 00:36:48.35
クロックとシェーダの数を掛ければ。
2013/01/15(火) 12:44:28.36
ちゃんとGPUで計算されてないだけじゃね
afterburnerかなんかでGPU側の使用率も見てる?
671665
垢版 |
2013/01/20(日) 11:45:47.76
Catalystのバージョン上げたらCPU使用率下がりました
2013/01/21(月) 06:12:45.45
AMDのOpenCL SDKはCPU(SSE)デバイスもサポートしてるから
そっちで動いてたってことかな
2013/01/22(火) 00:13:17.77
デバイス取得時にGPUを指定すればそんな目に合うはずね〜が
2013/01/22(火) 23:13:25.92
デバイスにCPU使ってたらCPU使用率100%になるんじゃないの
2013/01/23(水) 00:21:18.43
>>674
特に設定しないとシングルコアだからならない
2013/01/23(水) 01:32:16.04
CPU版はdevice fissionしないと使えるコア全部使わなかったっけ?
2013/01/26(土) 18:02:42.38
いくつか本読んで基礎的なことは
わかったんだけど、openclでmpegのエンコーダー
作ってみたいから何か参考になる情報ないかな
2013/01/26(土) 21:16:57.04
CUDAでこれだからOpenCLはチューニング大変だな
pc.watch.impress.co.jp/img/pcw/docs/584/977/html/7b_prometech_32.jpg.html
2013/01/26(土) 22:38:20.74
>>677
MPEGってどれよ?
MPEG4(H.264)のことならx264がSSE、AVXアセンブリ含むソースコードが読めるからオススメ
2013/01/30(水) 22:41:00.14
試しに↓使ってみたんだがローカルメモリ使ったら速度が3割落ちた。
www.aocplan.com/gpgpu/gpgpu-benchmark
2013/02/05(火) 22:18:38.26
OpenCLってHyper-Qみたいな機能ってあるでしょうか?
2013/02/05(火) 22:28:21.47
>>678
アーキ毎にカーネルを書きなおさないと性能でないよ。
2013/02/06(水) 21:46:06.32
各アーキテクチャごとの最適化資料ってある?
2013/02/07(木) 05:31:00.88
AMDだとこれが詳しい。NVIDIAのだったらCUDAのマニュアルを読めばいい。
http://developer.amd.com/download/AMD_Accelerated_Parallel_Processing_OpenCL_Programming_Guide.pdf
2013/02/11(月) 23:11:22.51
標準のC++に替わり今後はOpenCLが標準に確定したな
OpenCLでパフォーマンスが激向上するから当然か
2013/02/12(火) 06:11:15.51
寝言は寝て言え
2013/02/17(日) 21:21:57.05
>>684
ありがとう。VLIW4だとスレッド数1/4にして、1スレッドで4つずつ処理するようにしたら倍速になった。
2013/02/18(月) 04:23:25.11
R600のISA解説したpdfもどっかにあって、あれ読むとKernel Analyzerの右側の命令が読めるようになって捗るぞ。
689デフォルトの名無しさん
垢版 |
2013/05/09(木) 04:25:55.54
Intel Releases SDK with OpenCL 1.2 Support for Intel Xeon Phi Coprocessors | techPowerUp
http://www.techpowerup.com/183718/intel-releases-sdk-with-opencl-1-2-support-for-intel-xeon-phi-coprocessors.html
2013/05/10(金) 23:28:13.87
CUDAが動かない古いNvidiaのビデオカードでも
OpenCLなら動いたりするものなのでしょうか?
2013/05/11(土) 17:38:28.19
確かnvidiaがOpenCLサポートしているのは、
チップがGeforce8以降かつ、ドライバの対応も必要だったと思う。
でもgeforce8以降はほとんどCUDA(とPhysXが)乗ってたはず。
それ以前はサポートされていないから動かないんじゃないかな(機材とドライバがないから検証できん)
2013/05/11(土) 23:50:31.95
CUDAにせよ、OpenCLにせよ古いマシンでやろうとする奴はなんなんだ?
古いGPUじゃ大して効果がないし、アーキテクチャがどんどん変わって
いるから使えないものが多いのに。
最新のアーキテクチャでも1万円も出せばそれなりのものが買えるのになあ。
2013/05/12(日) 10:11:53.81
研究目的なら最新ので良いけど、実用だと4年前に導入した
数百台の計算機で高速化したい、とかもあるからな。
2013/05/13(月) 17:15:31.08
GeForce8以前って、どんだけ古いカード使っているんだよw
いろんな意味で、無理無理。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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