解説 ドメイン固有言語とコンパイラを活用した次世代の高速化プログラミング

電子情報通信学会 - IEICE会誌 試し読みサイト
Vol.103 No.4 (2020/4) 目次へ

前の記事へ次の記事へ


解説

ドメイン固有言語とコンパイラを活用した次世代の高速化プログラミング

Next Generation of High Performance Programming Using Domain Specific Languages and Compiler Optimizations

丸岡 晃

丸岡 晃 (株)フィックスターズSaaS事業推進室

Akira MARUOKA, Nonmember (SaaS Platform Development Department, Fixstars Corporation, Tokyo, 141-0032 Japan).

電子情報通信学会誌 Vol.103 No.4 pp.437-441 2020年4月

©電子情報通信学会2020

abstract

 高速なアプリケーションの開発のためにはマルチコアやSIMD命令,キャッシュなどのプロセッサのハードウェアリソースを高効率に利用するようなプログラムを実装する必要がある.またGPUやDSP,FPGAなどのアクセラレータを有効活用する必要がある.一方でプログラムの最適化には多大な実装工数がかかってしまい,またソースコードのマルチバージョン化などの品質面での問題も存在する.本稿ではHalideというDSLを用いた高速化プログラミングについて紹介する.DSLとその制約を用いたコンパイラ最適化によって,プログラムの最適化が容易に行える事例を解説する.

キーワード:DSL,コンパイラ,高性能計算,画像処理,Deep Learning

1.は じ め に

 現代のプロセッサにはマルチコアやSIMD命令(注1),キャッシュといった性能向上を図るハードウェアが用意されており,ソフトウェアを高速に処理させるためにはこれらのハードウェアを高効率に利用する実装を行う必要がある.図1は周辺3×3の画素を用いて画像のぼかしを適用するBlurフィルタをC++でナイーブに実装したソースコードである.このプログラムをIntel x86アーキテクチャ向けに並列化(注2)やベクトル化(注3),キャッシュブロッキング(注4)などの最適化を適用すると図2のようなソースコードとなる.両方とも同一のアルゴリズムを処理するプログラムであるが,最適化後のコードサイズはとても長くなっており可読性が低下してしまっている.また,このソースコードはIntel SSE拡張命令を利用するように実装されているが,より長いベクトル長を持つAVXやAVX-512のSIMD命令を利用する場合にはそれぞれの命令セット用のプログラムを実装する必要がある.

図1 C++による3×3 Blurフィルタ処理のナイーブ実装

図2 C++による3×3 Blurフィルタ処理のx86向け最適化実装


続きを読みたい方は、以下のリンクより電子情報通信学会の学会誌の購読もしくは学会に入会登録することで読めるようになります。 また、会員になると豊富な豪華特典が付いてきます。


続きを読む(PDF)   バックナンバーを購入する    入会登録

  

電子情報通信学会 - IEICE会誌はモバイルでお読みいただけます。

電子情報通信学会誌 会誌アプリのお知らせ

電子情報通信学会 - IEICE会誌アプリをダウンロード

  Google Play で手に入れよう

本サイトでは会誌記事の一部を試し読み用として提供しています。