So-net無料ブログ作成
OS XのOpenCL ブログトップ
前の10件 | -

OS XのOpenCL - その26 [OS XのOpenCL]

OS XでのOpenCLの続き。今日で最後にする。もともとはBayer配列のカメラデータをRGBAに変換したかった。最後にOpenCLを使えばこんなに速く軽くなったぜ、みたいな結論になればカッコよかったんだけど残念ながらそうはならなかった。一応GPU版はできてCPUの負荷を減らすことは(ちょっとだけ)できたので、一応の目的は達したけど、ちっとも速くない。やっぱり地道な最適化しないとダメなんだけどそれはそれ非常に難しい、ということがわかった。

続きを読む


OS XのOpenCL - その25 [OS XのOpenCL]

OS X独自のOpenCL拡張についてずっと見てきた。難しいことを考えずに簡単に使えるように、という配慮がみられる。それはAppleのOS X戦略の一環で、シェアの低いOS Xがシェアを増やすためにするべきことをしているにすぎない。しかしたとえAppleがいろいろ配慮しても、OpenCL、というかGPUのパフォーマンスを十分に引き出して、CPUより速くかつCPUの負荷を下げるには結局、かなりのチューニングが必要で、そのためにはそれなりの知識と、最適化の実験が必要だということがわかってきた。

今日のところはAppleのガイドにも触れられていない、OpenCLのコードがあったときXcodeが自動生成するふたつのファイルが何なのか中身を見てみる。

続きを読む


OS XのOpenCL - その24 [OS XのOpenCL]

これまでやってきて、特にカメラ画像に対する処理を自分でも書いてみて、OpenCLって結構難しいということがわかってきた。コンパイラが最適化するCPU用のコードに比較して十分なメリットを出すのがすごく難しい。原因を知るために自分の書いたコードを詳しく見てみるとどうもメモリアクセスが律速してるとしか思えない。CPUの場合はメモリアクセスのバンド幅が広いのと、最近のコンパイラが間抜けなコードを書き直してくれるのでよほど変な書き方をしない限りほぼ最高のパフォーマンスが得られる(ただしもちろん、間抜けなアルゴリズムまでは書き直してくれない)。確かに、こないだ訳し終わったガイドにあったガウシアンブラーではメモリアクセスの最適化が一番効く、という結論にも読める。このガウシアンブラーのチューニングをもっと詳しく調べて自分の書くコードに応用できるようにしないといけない。

ということでOS XのOpenCLはそろそろおしまいにしようと思うんだけど、ガイドを読んでて面白いと思った分岐処理。ガイドではさらっと書いてあるけど、僕なりに理解したのを書いて未来の自分用に残しておく。

続きを読む


OS XのOpenCL - その23 [OS XのOpenCL]

前回の続きである。もう2ヶ月近くまえのことだけど、ちゃんと覚えているのである。僕にしてはすごいのである。ということでOpenCLのプログラミングガイドに出てくる言葉を僕なりに整理するのである。

続きを読む


OS XのOpenCL - その22 [OS XのOpenCL]

前回はOpenCLが前提にしているハードウェアってどんなものか、というのを自分なりに調べた。そういうハードウェアにOpenCL独特の抽象化と機能付加のための概念が追加されてOpenCLとして動作することになる。こんどはプログラミングガイドにはOpenCL独特の言葉が出てきて、なんとなくスルーして読んでいたけど、これもちゃんと意味を自分なりに調べることにする。

続きを読む


OS XのOpenCL - その21 [OS XのOpenCL]

ということで、AppleによるOS X用のOpenCLプログラミングガイドの抄訳はこれでおしまいにする。まだ部分的に残ってるけど基本的なところはわかった。とくに最後のパフォーマンスチューニングのところは非常に濃かった(最初のナイーブなバージョンより数十倍から百倍速くなる、ということは書き方によってそれだけの差が出てしまうということで、注意しないといけない)が、Appleのガイドによくある、一見冗長なほど親切なくせに、明らかに説明不足と思われるところがある文書になっている(文章構造もおかしなところがあるし)。

ところで、この文書はプログラミングガイドなので、ハードウェアに関する説明が補足程度にしかない。しかし前提となるハードウェアがわかっていないと理解できないところがある。僕はハードウェアは苦手でよくわかっていない。ということで別途勉強することにした....

続きを読む


OS XのOpenCL - その20 [OS XのOpenCL]

今朝はさすがに地下鉄がすいてた。みんな休んでるんだろうなあ。今は設計部部長さんの作業待ち。それが終わると僕の光学測定に入る。

ということでその間に、抄訳の続き。前回ガウシアンブラーのナイーブな実装に対して、効率を上げるためにメモリアクセスの工夫を導入した。今日のところはその改善の度合いと、さらなる高速化のための追加の作業。最終的には前回の最初の状態にくらべて一桁以上速くなる、というもの。

続きを読む


OS XのOpenCL - その19 [OS XのOpenCL]

会社は休みなのに出てる。ところが今日になって設計前提をひっくり返すちょんぼが見つかった。これ以上出ても意味がないので明日善後処理して、残りは休むことにする。結局休みの少なめの人のお盆休みと同じになる。ところで、ダリ風の格言

「光には2種類ある。s-偏光とp-偏光だ」

で、今日発覚した失策を心に刻むことにする。

ということで、前回効率がいいと結論付けたアルゴリズムをナイーブに実装して、その効率を測定する。これを出発点にして効率を上げていく話。

続きを読む


OS XのOpenCL - その18 [OS XのOpenCL]

来週から会社はお盆休みなんだけど、来週月曜に僕が設計したレンズのファーストショットが上がってくる(レンズを成形する連中は今週頑張って、あとはよろしく〜と休みに突入するつもり)ので、僕はその評価のために設計部の部長とふたりで出社することに決定。ちなみに設計部も僕の研究開発部と同じで、構成員は部長ひとり。

ということで、先日の続き。画像にガウシアンブラーをかけるルーチンを例にとって、そいつのOpenCLでのパフォーマンスを上げる話になる。今日のところは、まずどんなアルゴリズムのガウシアンブラーを使うのがいいか、というOpenCLとは関係ない一般的な話。関係ないとはいうものの、普通はガウシアンブラーぐらいで、ここまで真面目にアルゴリズムが違うときのパフォーマンスを比較することはないので、これだけでも結構面白い。

続きを読む


OS XのOpenCL - その17 [OS XのOpenCL]

仕事でお盆休みがなくなりそうな雰囲気を感じつつ、抄訳の続き。今日あたりから佳境に入いってきて、これから徐々に話が濃くなっていく。今日はOpenCLのパフォーマンスをチューニングするときの手順と、アルゴリズムを決めるときの心構えみたいな話。

続きを読む


前の10件 | - OS XのOpenCL ブログトップ
メッセージを送る