OS XのOpenCL - その6 [OS XのOpenCL]
OPIEでのデモはOpenCLを使わずにCPUを表示に集中させて凌いだので、個人的にはOpenCL熱がちょっと冷めてしまった。でもこれで終わらせるのはもったいないので、抄訳は一応最後までやろう。今日の部分はOpenCLカーネルとのデータの受け渡しのしかたというところ。まずざっくり説明してほしいのに、Appleは例によってダラダラと書いてる...
OS XのOpenCL - その5 [OS XのOpenCL]
OS XでのOpenCLのガイドの抄訳の続き。先週パシフィコであったOPIEに出展して、去年僕が設計したデバイスのデモをやった。実はそこでOpenCLのコードを実装したアプリを使うつもりだった。専用の拡大光学系とカメラで、デバイスが作る光学パターンの微細さを訴えるデモだった。1280x960のカラーカメラの画像を単に表示するのではなく、微細さが強調されるような、むにゃむにゃごにょごにょに細工をした画像を表示する。そこにOpenCLを使って30fpsでさくさくと美しく絵を出すつもりだった。
ところがOpenCLを使ったコードは普通にCPUで計算したのよりはるかに遅くなった。30fpsで表示するとフレーム落ちして、しかも落ちたフレームのメモリはなぜか解放されることがなく、ヒープにどんどん溜まっていった。10分もするとスラッシングで落ちてないフレームの表示さえおぼつかなくなる。
OpenCLを使わずCPUでやると重いけど、僕が普段机で使っているiMacの4コアを全部使えばなんとかなった。OPIEではそのiMacを持ち込んでやり過ごした。
なんでOpenCLが遅いんだろう。もちろんただOpenCLを使えばパフォーマンスが上がるというわけではないことはわかっているつもりだったけど、CPUの何倍も遅いってなんでだろう。というかやっぱりちゃんとわかって使わないとダメ、ってことだよな。
ということで、訳の続きで並列化できる部分を探し出す話。マルチスレッド化にもまったく同じことが言える、並列化の基礎の基礎。
ところがOpenCLを使ったコードは普通にCPUで計算したのよりはるかに遅くなった。30fpsで表示するとフレーム落ちして、しかも落ちたフレームのメモリはなぜか解放されることがなく、ヒープにどんどん溜まっていった。10分もするとスラッシングで落ちてないフレームの表示さえおぼつかなくなる。
OpenCLを使わずCPUでやると重いけど、僕が普段机で使っているiMacの4コアを全部使えばなんとかなった。OPIEではそのiMacを持ち込んでやり過ごした。
なんでOpenCLが遅いんだろう。もちろんただOpenCLを使えばパフォーマンスが上がるというわけではないことはわかっているつもりだったけど、CPUの何倍も遅いってなんでだろう。というかやっぱりちゃんとわかって使わないとダメ、ってことだよな。
ということで、訳の続きで並列化できる部分を探し出す話。マルチスレッド化にもまったく同じことが言える、並列化の基礎の基礎。
OS XのOpenCL - その4 [OS XのOpenCL]
OS XのOpenCL - その2 [OS XのOpenCL]
前回GigE規格のBayer配列カラーカメラのフレームを読み出して、Bayer→RGBの変換をCPUではなくGPUにやらせるために、OpenCLの勉強を始めた。直近、来週にでもカメラを仕事に使いたいのに、全然何もわかってないのでとりあえずAppleのガイドの抄訳を始めることにする(泥縄を絵に描くとこうなります)。またしばらくへんな日本語が続くことになるけど、今日はまず「Hello, World!」んとこから。Appleのガイドに時々あるパターンで、とりあえずXcodeで一番簡単なアプリを作ってみる、詳しい話はそのあとで、という出だしなんだけど、すぐにビルドセッティングの話に突っ込んでいる。順番おかしいぞ、Apple....
OS XのOpenCL - その1 [OS XのOpenCL]
GigE vision規格のカメラの読み出しができるようになって(でもGenICamはハードコードして)、ベイヤ配列のカラーカメラの画像をRGBに変換するのにOpenCLを使おうと思った。調べてみるとOS XのOpenCLは思ったより面白いことがわかった....