OpenCLプログラミング#1

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

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

公式ページにはAPIのヘッダファイルが公開されており、
まだ実際に動かす事はできないもののプログラミングすることは可能となっています。
ということで、公開に先んじてプログラミングを始めてしまいましょう。
2015/02/15(日) 22:26:41.71ID:SSlwb3yD
実は正しくないコードが他の環境ではたまたま通っていただけ、てのはよくある。
たしかにIntelのコンパイラは厳しいから、普段の開発は他のGPUでやっていても
IntelのKernel Builderでカーネルのチェックしたりするな。
2015/02/16(月) 00:42:06.13ID:bUgXoWHZ
>>787
コードそのものに問題はなかったよ。
カーネルが複雑になりすぎるとIntelのコンパイラは落ちるから論外。
2015/02/16(月) 00:55:29.94ID:0cGz3jVB
IntelはGlobalWorkingGroupとLocalWGのサイズがN倍じゃないと動かないんだけどAMDは変な比率でも動く
原因調べるのの時間かかったよ
2015/02/16(月) 02:05:22.57ID:bUgXoWHZ
>>789
そりゃ動くほうが不思議だw 自分の場合はカーネルを小さくしたら
普通に通ったからそういう問題はなかったはず。
791デフォルトの名無しさん
垢版 |
2015/02/16(月) 07:56:11.60ID:F7oc1qZ/
>>785
同意
2015/02/16(月) 13:24:15.63ID:LR9r89r7
AMDのコンパイラも最適化オンにしたらコンパイル終わらなかった事あったので、結構怪しい。(2011年ぐらいの話だけど)
2015/02/16(月) 13:44:20.54ID:bUgXoWHZ
>>792
確かにAMDのコンパイラの最適化は完全に地雷だったw
2015/02/16(月) 21:40:57.33ID:HyfDl27x
>>784
初心者がこれからOpenCLを始めるのにどの環境を選ぶか、という話なら
NVIDIAは避けるのが無難だな。デバッガやオフラインコンパイラなんかの
ツールが皆無に等しい。
CUDAもやりたいとかいうなら別だが。
2015/02/16(月) 22:38:07.54ID:QHeQ+cdL
>>794
多くの奴はGPGPUするぞ、じゃメジャーなCUDAで良いやだからな
OpenCL使ってIntel,Nv,AMD(あとFPGAとか?)でちゃんと動くものを作らなければいけないってあんまりないだろからな
2015/02/17(火) 02:24:50.68ID:xvdMpEI6
OpenCL使ったところで、同じコードでどんなCPU/GPUでも効率よく動くとかレアケースだしなぁ。
2015/02/17(火) 08:22:15.68ID:fCIGE3+K
最高のパフォーマンスを引き出すチューニングというなら別だが、どれかGPUを想定した
コードならそこそこの速度で動くだろ。たいてい、従来のCPUより速けりゃ十分だろうし。
FPGAだけは別格で、GPUと同じコードじゃぜんぜん速度が出ないだろうが。
2015/02/18(水) 10:38:35.72ID:CGhwPhC5
SSEレジスタに乗ること期待して書いたchar16とかGPUに食わせたら憤死するで。
2015/02/18(水) 16:12:46.20ID:pennC58Z
アーキテクチャ毎に最適化しないと、
OpenCLで性能なんか出せないよ。
2015/02/18(水) 22:51:48.89ID:Z2YWe05s
>>798
ベクタ型は想定するターゲットで効果が見込まれる場合に使うべきで、そういう意味では
どっちかというとチューニングの範疇だろう。
そもそも、インテルのコンパイラならベクタ型使わずに普通に書いてSSE/AVXを
使ってくれるんだが。CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR=1だしな。
下手に最適化しようとして却って駄目にしているように思える。
2015/02/19(木) 01:05:51.96ID:f67JHinc
かたやGPUになるとパイプラインのスカスカ具合見ながら
int2とかint4とか使って依存関係のない演算で埋めていかないとお話にならんしなぁ。
2015/02/19(木) 02:14:32.89ID:KUEe9MYM
アーキテクチャごとの最適化は、まだコンパイラとかの成長中の部分もあるだろうしなぁ

そのうち改善はしてくれるような気がするけど
2015/02/19(木) 22:30:01.89ID:t/UF4QVL
そうは言っても今のアーキが向かってる方向ってコンパイラ実装の難易度上がってるから
コンパイラの苦手な部分を補填してやらにゃ速くならないってのは改善される事はないと思う

むしろそこまで賢いコンパイラとか使いたくない
2015/02/19(木) 23:19:07.50ID:1LBnym+M
技術的側面もあるが
それ以上にIA64がコケたことが
コンパイラを賢くしてプロセッサを脳筋にする道を
決定的に閉ざした

コンパイラの賢さに関して言えば
足並みがそろってない事の方が問題だと思う
2015/02/26(木) 07:17:19.04ID:BKvgQceT
クロノスってなんかのアニメであったような
2015/02/26(木) 14:44:53.01ID:ZlyxtZ3O
クロノスはゼウスのお父さん
2015/02/26(木) 20:31:41.27ID:yDVFOiWq
マッシーンロボッ!
お前には、敵はない!
2015/03/08(日) 09:21:28.42ID:rJrv12ko
OpenCL2.1は発表されたが相変わらずNVIDIAはやる気なさそうだなぁ、コメントくれないし。
おかげでいまだに開発は1.1ベースだよ。
2015/04/12(日) 20:37:22.82ID:4fkLnYAO
OpenCLでHEVCをGPUに部分的にデコードさせる実験やってるな
まあ新製品はハードウェアでHEVCに対応してるから不要になっちゃうんだけど
2015/04/12(日) 20:37:43.88ID:4fkLnYAO
×やってるな
○やってたな去年の夏ごろ
2015/04/12(日) 21:03:58.32ID:b726GPIq
結局使えるのは、いつくらいになるのか…
2015/04/25(土) 14:51:39.69ID:zIE5htjK
vexcl使えばopenclもcudaも関係なくGPUが使えるっぽいけど
2015/04/25(土) 16:55:17.48ID:DlB5+dQK
NVIDIAでやっと1.2が使えるようになったと思ったらバグってんじゃねーか。
本当にやる気無いのな。
2015/04/26(日) 16:04:03.54ID:ljYoE8AT
そらやる気ないやろ。
cudaなら囲い込みできるのに、
cudaの焼き直しのOpenCLなんて協力するだけ損だし。
2015/04/27(月) 10:52:17.46ID:1JZfjbGY
http://pocl.sourceforge.net/
2015/06/06(土) 14:22:49.99ID:xHuAhJj5
Core i7 3990とGeForce使ってるんだけど、IntelHDが認識されてなくてデバイスマネージャに表示されない
OpenCLの性能評価を試したいんだけど、IntelHDのドライバをインストールすれば認識されますかね?
2015/06/07(日) 15:10:46.44ID:OFY6KtcL
>>816
モニタはiGPUとゲフォどっちにつないでる?
それと自作PCか?
2015/06/07(日) 15:14:39.85ID:OFY6KtcL
あ、それとintel Opencl driver インストールうまくできるか試してみて結果おしえて
2015/06/07(日) 20:39:44.84ID:NnypvtRT
>>817
モニタはGeForceに接続。ドライバインストール試してみる。
2015/06/08(月) 05:35:15.96ID:ewd9hwV4
Intelのにモニターをつなげないと
いけなかったはず。
2015/06/08(月) 13:13:32.81ID:rnRcmo2O
i7 3990は検索してもろくにヒットしないけど、Sandy Bridge-Eなら無理なのでは。
2015/06/09(火) 01:36:37.47ID:c7FHKlcw
そだね、そのくらい確認してるかと思って聞かなかったけど、
iGPUがついてないならそもそも無理だわな。
2015/06/10(水) 12:18:07.90ID:VIG2W0Y+
うまくいけばCPUの方はOpenCLで動かせるかもしれない
やる意味ないけどね
2015/06/19(金) 09:06:28.51ID:giF1KE9b
GPUのないノートのCPUでデバックしてから
GPUで実行できるなら俺はうれしい
2015/06/19(金) 21:38:40.35ID:s6jV56Gc
別途ドライバをインストールしなきゃならんってのが難点なんだよな。
SSE/AVXをお手軽に使えて、コア数に応じてマルチスレッドで実行してくれるから
使いではあると思うんだが。
2015/06/19(金) 23:20:08.11ID:KZJPVbVq
デバッグなんかよりチューニングが大事だからターゲットハード以外でコーディングしてもなぁ
827デフォルトの名無しさん
垢版 |
2015/06/20(土) 00:21:14.39ID:46SUOvEb
なにがなんでも最高性能出さなきゃならん用途ばかりじゃあるまい。
一般的な並列化のみで大多数のハードでそこそこ速くなりゃ十分、という応用もある。
2015/06/22(月) 00:09:27.57ID:e4hiyCLD
CLはチューニングなしだとCPUに惨敗もありえるのでな。
2015/06/22(月) 01:11:03.05ID:rREKDKy5
メモリ転送とenqueueしてからの計算開始に時間かかるのがなぁ
2015/06/22(月) 07:39:26.22ID:FYteK6ai
CPUに惨敗してた処理がチューニングでどうかなるもんか?
単に並列化できてなかっただけじゃね?
2015/06/22(月) 21:40:24.04ID:e4hiyCLD
>>830
レジスタ数とか共有メモリサイズとかでブロックサイズだっけnVIDIAでいうところのwarp数とか
調整しないとてんでダメだよ。
2015/06/22(月) 21:41:31.55ID:e4hiyCLD
>>829
そのコストを払っても高速かどうかは実機でテストするしかないしな。
機種ごとにCLを使うか通常ルーチン使うか選別するくらいしないと効果なし
2015/06/23(火) 02:38:28.65ID:22fvktD/
チューニングは難しい
何となくやってみたら、処理時間が5倍遅くなったときの衝撃は大きかったな
2015/06/23(火) 08:25:00.27ID:drLPVFNo
ターゲットのハードに特化したチューニングをしないと使い物にならんようなことを
言っている人がいるが、そんなこといったらユーザー環境を特定せずに広く配布する
アプリなんて作れんな。
うちじゃ一般的なGPU向けチューニングしかしてないが、NV/AMD安いのから高いのまで
テストしてみてローエンドでもCPUの数倍くらいで動くから十分、速く動かしたいなら
高いGPU使え、ってなノリだな。
2015/06/23(火) 08:50:44.48ID:LQs/3Np0
一番遅いハードに合わせて作っとけば問題ないよ
2015/06/23(火) 22:58:24.67ID:VwORpFDM
>>834
AMDのHSAのAPUとAMDのOpenCl2のdGPUがHPCを除いたいまのデファクト
それ以外は無視で良い。Nvは一般用でGPGPUやる気ないし
HPC用ならターゲットのハードに特化したチューニングは当然だし
2015/06/24(水) 01:34:16.84ID:35TMs94C
madとかそういう複合命令(?)を使ってチューニングする程度で抑えたいところ
2015/08/31(月) 07:10:09.59ID:kH1QDWTh
Vexclの開発が止まってる
誰か引き継ぐ人はいないのか?
2015/09/02(水) 06:58:53.31ID:VNDyXTKC
早く2.0を使えるようにしてくれ
2015/09/03(木) 00:02:12.18ID:iQnjIkb4
NVIDIA無視すりゃ幸せになれるぞ
2015/09/03(木) 01:44:07.69ID:cb/ef9ik
>>840
こんなに対応が遅いと思わなかったんだよ
次からはAMDを信じるよ、あればだけど
842デフォルトの名無しさん
垢版 |
2015/12/19(土) 10:21:19.84ID:7/8YsZOJ
プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
2015/12/19(土) 10:23:37.79ID:qfRCvKdP
単なる世間知らずが踊らされてそう言ってるだけ
2015/12/19(土) 12:49:21.08ID:BBUxwf4S
マルチコピペだぞそれ
2015/12/19(土) 15:25:38.18ID:iG82T79N
100スレ以上にレスしてNGにならないのは運営が公認してるマルチってことか
2015/12/19(土) 16:25:03.85ID:2xl0Mjgh
GeForceはOpenCL2.xに対応した?
CUDAに同様の機能が在るから技術的に無理という事はないだろうけど
2015/12/19(土) 18:13:33.83ID:LGhGH2LK
358でやっと1.2正式サポートしたところ。
2015/12/19(土) 19:06:17.07ID:2xl0Mjgh
サンクス。IntelですらOpenCL2.0に対応しているのに業界最大手のnVIDIAがやらないのはなぁ
CUDAを使えという事なんだろうけど、それではnVIDIA専用になってしまうからそれは避けたい。
かといってnVIDIAを無視する訳にもいかないというジレンマ
そろそろOpenCL2.xをメインにしていきたいのだが
2015/12/20(日) 00:20:21.34ID:ujiFhYYe
VGAはいまAMDがすごく伸びてきているんだろ
来年の後半にはVGAの販売数シェアではAMDがNvidiaを上回るんじゃないのか
再来年には一般グラフィックではIntel、AMDが2強ってなるんじゃないか
2015/12/20(日) 00:47:13.59ID:14eB8c4R
NVIDIAのOpenCL対応はちょうどAppleが採用やめたあたりから停滞したな。
結局のところNVIDIAにとって、そういうOpenCLを望む大口の顧客でもいない限り
OpenCLに力を入れる理由はないんだろうな。
2015/12/20(日) 01:02:38.32ID:XNwlDZDb
nvidiaはopenAMP+だっけ?あっちに力いれてんじゃないのかね?
2015/12/20(日) 04:40:12.37ID:oUoqwn36
AMDもCUDAに対応するみたいなニュースをみたけど、どうなったんだろう?
GPGPUの技術も速く落ち着いて欲しい
2015/12/20(日) 07:41:04.82ID:MpbNAZoy
CUDAが各社GPU共通のならいいけどそうじゃないからなぁ
Intel iGPUでも使えないと困る
2015/12/20(日) 07:47:22.55ID:14eB8c4R
AMDのあれは、HSAをターゲットにしたHalideやvexclのような並列計算APIで、
それがNVIDIA向けにもコンパイルできるって話だな。既存のCUDAコードからも
コンバートできるというのは目新しいが。
855デフォルトの名無しさん
垢版 |
2016/03/29(火) 10:04:21.74ID:/c8bAcK4
サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
2016/05/30(月) 13:15:08.40ID:27ORFIrk
CUDA8.0RCでも1.2どまり
2016/05/31(火) 02:00:22.72ID:tLbBjsj4
CUDAが強すぎて、なかなか広がらないイメージ
2016/05/31(火) 15:24:04.45ID:o40hgVi5
あまり最適化されてない(できない、ifがそれなりに多い)プログラムをCPUとGPUで動かしてみて、
早い方を採用するには都合がいい。
2016/08/08(月) 11:44:01.40ID:OeTPyxgg
CUDAは強い強い言われてるけど結局一社独占の技術だから過渡期の産物で終わってメインストリームにはなれんよ
nvidia自体x86やARM関係なくCPUを締め出しにかかって古い仕様を拡張する気がなさそうだし
2016/08/08(月) 23:41:36.48ID:FOEjBVJr
しかしOpenCLも最近失速気味だしなぁ。規格は2.2まで出てるのにいまだに2.1のまともな実装すら出てないし。
AMDが体力続かなくて手を引いたりしたらOpenVXみたいにフェードアウトするんじゃないか?
2016/08/13(土) 04:34:37.27ID:C6tpwDrS
物理レンダリングが出たばっかりなのに失速とは
2016/10/29(土) 09:17:30.79ID:W9gQheBG
AppleがGeForce採用すりゃNVIDIAもOpenCLをアップデートすると期待してたが、今回も採用なしか。
それとも逆に、いつまでもOpenCL 2.0対応しないから採用しないのかな。
2016/10/29(土) 12:19:11.69ID:YsxFht0u
OpenCLはオワコン
2016/10/29(土) 15:09:52.99ID:0Cs4HSkt
HIPだっけ?
あれでCUDAを汎用的に使えるようになるんじゃないの?
2016/10/29(土) 18:46:14.19ID:vjtn6SxB
>>863
C/C++使いはOpenCLも使えないと駄目ってなりつつあるんじゃないのか?
2016/10/30(日) 01:49:24.70ID:IKgBO44W
それはOpenMPでは
2017/01/08(日) 01:47:50.25ID:qDa6npPv
Vexcl難しい
サンプルコード少なすぎる
2017/02/12(日) 09:50:54.30ID:fljd0HzI
vexclは挫折してviennacl使ってる
使えるスキルある人ならvexcl良いと思うけど
自分には無理だった
2017/02/12(日) 14:41:00.16ID:VBfSC62c
boost.computeなら、どうだろうか?
2017/02/16(木) 11:11:01.71ID:sX4bqSJb
Boost.computeはcudaに対応してない
2017/02/17(金) 01:28:52.49ID:LtwBLUnB
OpenCLの話題だし、CUDA対応とかより、いかにOpenCLのコードが書きやすいかのほうが大切だと思うんだ
2017/02/28(火) 20:15:03.56ID:514SeM49
ここ1年くらい停滞気味で話題が少なかったけど、これはめでたい。

NVIDIA 378.66 drivers for Windows offer OpenCL 2.0 evaluation support
https://www.khronos.org/news/permalink/nvidia-378.66-drivers-for-windows-offer-opencl-2.0-evaluation-support

一方で、前にいろいろぶち上げたAMDは何してるんだ?Ryzenで忙しいってか?
2017/03/17(金) 02:02:00.80ID:YSidBwLT
Vexclで行列計算したいけど行列掛け算のexampleしかない
qr分解とかライブラリ使って出来ないの?
Vienaclにはqr分解とか例が沢山あるのに
874デフォルトの名無しさん
垢版 |
2017/03/17(金) 11:56:23.09ID:ol/nseXL
できる
2017/03/30(木) 08:07:31.22ID:sSr9ORWQ
過疎ってるところ恐縮ですが、質問です。

通常のCプログラムの中で、コプロ的な使い方でOpenCLをインラインアセンブラのように使うような使い方は可能なのでしょうか?
もしくは、その様な使い方を実現する方法はないでしょうか。
2017/04/04(火) 23:25:23.65ID:d4Y6801f
Openmpでgpuの並列計算も出来るようになってから
Viennaclは更新も止まって、もう実質一年ぐらい更新ない

Openmpがgpu計算の標準になるのかな
2017/10/25(水) 09:29:08.47ID:h/b8kKiY
開発環境自体もOpenCL 2.0で止まっている感じはするな
鈍足になった感じはする
878デフォルトの名無しさん
垢版 |
2018/04/03(火) 04:40:48.84ID:mPevnajZ
cudaだと毎回計算結果違うとかビットエラーで整数計算も間違うことあるらしい
OpenCLをamdで動かすとどうなの?
879デフォルトの名無しさん
垢版 |
2018/04/03(火) 11:25:01.62ID:R6gDm2yr
えっ
880デフォルトの名無しさん
垢版 |
2018/04/03(火) 23:11:05.85ID:RICRRaNn
マイニング終了でRädeonの中古が格安で大量に売られてるので
何か使えないか
Openclってひょっとして再帰できない?
881デフォルトの名無しさん
垢版 |
2018/04/06(金) 09:28:13.93ID:Z8wP2fEV
>>878
科学計算用のやつだと、ちゃんとエラー補正してくれるよ
2018/05/18(金) 19:25:23.10ID:RN2l/52Z
再帰できないってことはないだろ。
確認まではしてないけど、小さいの書けばすぐわかるからよろしくです
2018/05/18(金) 23:22:29.85ID:z36hYsyi
たしか昔はcudaも再帰できなかったと思う
ある時期までの規格なら再帰できないとかもありえる
あるいは製品依存とか?
2018/05/19(土) 10:52:19.90ID:iBGlap+k
再帰って、例えば階乗(n!)を関数内で1引いて乗算して、また自身を呼び出すみたいなことでしょ?
できないわけないよな……と脳内で思ってます。

色々な階乗をパラでやっても大丈夫だと思うし、一つの階乗をパラでやっても排他きちんとやれば大丈夫だと…

もしかして全く勘違いなこと言ってるのかな…
(最近CL書いてない、というか、並列プログラム自体ネタがなくて書いてないorz)
2018/05/19(土) 12:28:46.68ID:BjCA6AhS
再帰するにはスタックが必須になるから
そんな暗黙の領域管理をGPUにやらせるのかってことでしょ
再帰がなければ関数ごとに固定領域を決めればいいので楽できる
2018/05/19(土) 13:45:59.07ID:iBGlap+k
普通に関数呼んでreturnで帰って来るんだから、スタックなんて意識しなくていいんじゃない?
(関数の戻り先は、勝手にスタックに積んでreturnで勝手に取り出してくる)

スタック容量が少ないから別途管理しないといけないってこと?
2018/05/19(土) 14:22:31.54ID:7qbCVCh9
ふつう、関数はインライン展開される。

再帰だと原則それができない。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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