著者
後藤隆志 武藤康平 山本英雄 平野智大 見神広紀 木村啓二 笠原博徳
雑誌
研究報告ハイパフォーマンスコンピューティング(HPC)
巻号頁・発行日
vol.2013, no.12, pp.1-7, 2013-12-09

本論文では,スマートフォンやタブレット等で広く用いられる Android において,従来マルチコアプロセッサ上での並列化が困難で,その高速化が望まれていた 2D 描画ライブラリ Skia を,OSCAR 自動並列化コンパイラにより,プロファイラ情報に基づいた自動並列化を行う手法を開発したのでその方法を説明する.OSCAR コンパイラは Parallelizable C により記述された逐次プログラムから様々な粒度で並列化解析を行い,自動的に並列化 C ソースを出力する.しかし,Skia は Android 内のライブラリであり,利用する描画命令ルーチンにより制御フローが大きく変化するため,最適な並列化解析を行うことが困難である.そこで,本論文では Skia のような制御フローがコンパイル時に特定できないプログラムに対し,Oprofile を用いて取得したプロファイル結果を OSCAR コンパイラにフィードバックすることで,並列化対象を特定の領域に絞り,高い性能向上が得られる手法を提案する.なお,並列化対象領域が Parallelizable C コードでない場合でも,解析結果により実行コストが大きい部分から Parallelizable C に変更し,チューニングを施すことで並列化が可能となる.本手法を,描画ベンチマークとして広く使われている 0xbench を NVIDIA Tegra3 チップ (ARM Cortex-A9 4 コア) を搭載した Nexus7 上で評価を行った.並列化 Skia の実行においては,並列化部分の速度向上を正確に評価するため, Android を core0 に割り当て,残り 3 コアを Skia が利用できる形とした.評価の結果として,DrawRect で従来の 1.91 倍である 43.57 [fps],DrawArc で 1.32 倍の 50.98[fps],DrawCircle2 では 1.5 倍の 50.77[fps] といずれも性能向上結果が得られた.