研究課題/領域番号 |
26540031
|
研究機関 | 国立研究開発法人理化学研究所 |
研究代表者 |
橋本 政朋 国立研究開発法人理化学研究所, 計算科学研究機構, 研究員 (60357770)
|
研究期間 (年度) |
2014-04-01 – 2018-03-31
|
キーワード | 計算カーネル同定 / 実行効率予測 / 計算カーネル分類 / 機械学習 / 大規模調査 / コード理解支援 |
研究実績の概要 |
今年度は前年度に引き続き、性能チューニングの対象となるループ構造の同定と、それに対する目標実行効率を推定する手法の研究を行った。 性能チューニングを実施する際、まずチューニング対象となるループ(計算カーネルと呼ぶ)を同定し、それに対して目標とすべき実行効率を見積もる。専門家による京コンピュータ向けの性能チューニングにおいては、カーネルを大まかな推定実行効率の範囲毎に6つのクラスに分類するということが行われている。この分類をモデル化するために、GitHubから科学技術計算と思しきFortranアプリケーションを1020個収集し、そこに含まれる175,963個のループ構造中から無作為抽出した100個について2名の専門家が行った分類の結果に基づき、ループ分類データセットを作成した。これにより、ループの母集団において、70-85%はカーネルであり、その中でM5と呼ばれるクラスに属するものが45-70%と突出して多いことが統計的に推定された。M5クラスのカーネルは浮動小数点演算に対するメモリアクセス要求量の比率が比較的大きく、京コンピュータにおける実行効率は高々15%ほどである。また、このデータセットを機械学習の訓練データとして用い、カーネル判定モデルとM5クラス判定モデルの構築も行った。このモデルを交差検証により評価したところ、ループに対するカーネルか否かの判定正解率は81%、カーネルのM5クラスか否かの判定正解率は94%という結果が得られた。これらの成果を論文としてまとめ、それが国際会議において採択された。 今回、専門家による分類作業を支援するために、プログラム構造や副プログラム呼び出しツリーのアウトラインを、ループ構造の特徴値と共に表示するためのツールを開発したが、これに対し、上記のカーネル判定モデルを用いたカーネル予測機能の実装を行い、オープンソースソフトウェアとして公開した。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
当初予定していた研究項目である、性能チューニングにおけるソースコード書き換えの正当性の検証については、予備的な調査以上の進展は無かったが、ループ構造の事例横断的な分類については、論文が国際会議に採択されるなど、一定の成果を得ることができた。また、当初は予定していなかった、ループ分類データセット作成作業支援のためのコード理解支援並びに分類結果収集を行うweb applicationの開発も行ったが、性能チューニングの現場に対する成果還元という観点から、これを単体のアプリケーションとして動作するように改修し、オープンソースソフトウェアとして公開した。 以上を総合的に勘案し、おおむね順調な進展と評価した。
|
今後の研究の推進方策 |
今年度はループ分類データセット作成のため、2名の性能チューニングの専門家より100個のループの分類が行われたが、この作業を支援するために開発したコード理解支援ツールを基として、本研究課題の成果を可能な限り盛り込み、実際の性能チューニングの現場、例えば、京コンピュータ後継機向け性能チューニング等で活用できるようなツールとして開発を継続し、現場からフィードバックを得ることで研究成果の普及促進と、より精緻な目標達成とを狙いたい。
|
次年度使用額が生じた理由 |
今年度の成果をまとめた論文について、投稿先国際会議Reviewerによる校閲が非常に丁寧であったため、英文校閲サービスを利用する必要が無くなった。また、その会議の開催が次年度4月末であるため、外国旅費の使用が持ち越された。さらに、論文について、オープンアクセス(所謂、gold road)を利用せず、ACMのAuthor-Izerサービス利用による公開、または所属機関や自身のweb siteにおける著者版の公開(所謂、green road)を行うこととしたため、論文掲載料の支出が無かった。
|
次年度使用額の使用計画 |
成果論文が採択された国際会議への参加に必要な旅費等の諸費用、開発したツールに関してフィードバックを得るためのミーティングに関する諸費用、等に充当したい。
|
備考 |
(1)はループ分類実験の生データ、(2)はコード理解支援ツール、(3)はコード理解支援ツールのdocker image、(4)はコード理解支援ツールのdocker imageを利用するためのヘルパースクリプト、をそれぞれ公開するためのURL。
|