ガジェット通信 GetNews

見たことのないものを見に行こう

MITの開発した、画像処理用プログラミング言語「Halide」【サイエンスニュース】

DATE:
  • ガジェット通信 GetNewsを≫

パソコンを始めとして、様々な電子機器で、高度な画像処理が求められるようになってきている。

スマートフォンのアプリやデジカメでも、本格的なフォトレタッチ機能が搭載されており、これらを利用している人も多いだろう。
こうした画像処理プログラムの開発でキーとなるのが「並列化」だ。画像を処理する場合、大量のデータに対して同じ変換処理を行っていくことが多い。こうした処理を行う際、画像を細かな単位に分割して、同時に処理を行うことができれば実行時間を短くできる。今ではスマートフォンにも搭載されているGPUは、処理を同時並列的に、実行するために設計された画像処理用のプロセッサだ。しかし、並列処理に最適化されたプログラムコードを書くのは、非常に手間がかかる。プログラマーは、どのようなアルゴリズム(計算方法)で画像処理を行うかということに加え、それをどう並列化するかということまで考えないといけないからだ。

MITはこうした問題を解決するために、画像処理専用のプログラミング言語「Halide」をスタンフォード大学やアドビと開発し、オープンソースとして公開した。

Halideの特徴は、画像処理のアルゴリズム部分と、並列化の実行手順部分を分離したことにある。プログラマーは画像をどう処理するかを考えることに専念できるので、プログラムコードの作成効率が上がる。また、開発者本人以外にもとっても理解しやすいコードになるためメンテナンスもしやすくなる。加えて、実行効率がよいことも大きなアドバンテージだ。MITの論文によれば、画像処理として広く使われているC++(汎用プログラミング言語の一つ)とHalideを比較したところ、C++のプログラムコードは262行で、実行時間は335ミリ秒。これに対してHalideのコードは62行で、実行時間は158ミリ秒だった。その他の処理についても、Halideは半分程度のコード分量、実行時間もC++の数分の1になるケースが多い。

Halideは、パソコンやサーバーで標準的に使われているインテルのx86プロセッサのほか、スマートフォンやタブレットで主流になっているARMプロセッサに対応している。アプリなどの生産効率、性能の向上が期待できそうだ。

写真:同じ処理をC++とHalideで記述して、コード分量と実行時間を比較する。Photo Credit: Jonathan Ragan-Kelley, Andrew Adams, Sylvain Paris, Marc Levoy, SamanAmarasinghe, Fredo Durand.

(文/山路達也)

記事提供:テレスコープマガジン

?N???G?C?e?B?u?E?R?????Y

外部サイト

MITの開発した、画像処理用プログラミング言語「Halide」【サイエンスニュース】
露出高めの健康美にテンション急上昇!岡田菜摘さんのかっこいい1枚 【プロが撮影する美女撮影テクニック】
ナレーションは水樹奈々!セガトイズが発売の次世代家庭用プラネタリウム「アースシアター」

(http://news.livedoor.com/article/detail/7105723/)
※表示 – 改変禁止 2.1 日本 (CC BY-ND 2.1)

livedoor ニュースの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。