電子情報通信学会 - IEICE会誌 試し読みサイト
© Copyright IEICE. All rights reserved.
|
解説
ドメイン固有言語とコンパイラを活用した次世代の高速化プログラミング
Next Generation of High Performance Programming Using Domain Specific Languages and Compiler Optimizations
abstract
高速なアプリケーションの開発のためにはマルチコアやSIMD命令,キャッシュなどのプロセッサのハードウェアリソースを高効率に利用するようなプログラムを実装する必要がある.またGPUやDSP,FPGAなどのアクセラレータを有効活用する必要がある.一方でプログラムの最適化には多大な実装工数がかかってしまい,またソースコードのマルチバージョン化などの品質面での問題も存在する.本稿ではHalideというDSLを用いた高速化プログラミングについて紹介する.DSLとその制約を用いたコンパイラ最適化によって,プログラムの最適化が容易に行える事例を解説する.
キーワード:DSL,コンパイラ,高性能計算,画像処理,Deep Learning
現代のプロセッサにはマルチコアやSIMD命令(注1),キャッシュといった性能向上を図るハードウェアが用意されており,ソフトウェアを高速に処理させるためにはこれらのハードウェアを高効率に利用する実装を行う必要がある.図1は周辺3×3の画素を用いて画像のぼかしを適用するBlurフィルタをC++でナイーブに実装したソースコードである.このプログラムをIntel x86アーキテクチャ向けに並列化(注2)やベクトル化(注3),キャッシュブロッキング(注4)などの最適化を適用すると図2のようなソースコードとなる.両方とも同一のアルゴリズムを処理するプログラムであるが,最適化後のコードサイズはとても長くなっており可読性が低下してしまっている.また,このソースコードはIntel SSE拡張命令を利用するように実装されているが,より長いベクトル長を持つAVXやAVX-512のSIMD命令を利用する場合にはそれぞれの命令セット用のプログラムを実装する必要がある.
続きを読みたい方は、以下のリンクより電子情報通信学会の学会誌の購読もしくは学会に入会登録することで読めるようになります。 また、会員になると豊富な豪華特典が付いてきます。
電子情報通信学会 - IEICE会誌はモバイルでお読みいただけます。
電子情報通信学会 - IEICE会誌アプリをダウンロード