(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-22
(45)【発行日】2023-05-30
(54)【発明の名称】情報処理装置、情報処理プログラム、及び情報処理方法
(51)【国際特許分類】
G06F 9/448 20180101AFI20230523BHJP
G06F 8/41 20180101ALI20230523BHJP
G06N 99/00 20190101ALI20230523BHJP
【FI】
G06F9/448
G06F8/41 130
G06N99/00 180
(21)【出願番号】P 2019167698
(22)【出願日】2019-09-13
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(72)【発明者】
【氏名】新井 正樹
【審査官】多賀 実
(56)【参考文献】
【文献】特表2016-524748(JP,A)
【文献】米国特許出願公開第2019/0005390(US,A1)
【文献】Adrian Sampson et al.,"ACCEPT: A Programmer-Guided Compiler Framework for Practical Approximate Computing",University of Washington Technical Report UW-CSE-15-01 [online],2015年04月,vol. 1, no. 2,pp.1-14,[検索日 2023.04.13], インターネット:<https://dada.cs.washington.edu/research/tr/2015/01/UW-CSE-15-01-01.pdf>
【文献】石井 潤 ほか,「可変データビット幅を持つDNNとそのアクセラレータアーキテクチャの検討」,電子情報通信学会技術研究報告,一般社団法人電子情報通信学会,2017年07月,第117巻, 第154号,pp. 83-90
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00- 8/77
G06F 9/44- 9/455
G06F 17/10-17/18
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
プログラムを記憶する記憶部と、前記プログラムを実行するプロセッサとを有する情報処理装置であって、
前記プロセッサは、
前記プログラム中の第1位置において前記プログラムを簡略化して実行する、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、前記第1位置よりも後の第2位置において前記プログラムを簡略化して実行する、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成し、
前記第1位置において前記第1集合に含まれる複数の候補値それぞれに基づいて前記プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第1位置において生成された複数の実行結果に対する評価結果に基づいて、前記第1集合に含まれる複数の候補値のうち第1候補値を選択し、
前記第1位置において前記第1候補値に基づいて前記プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記第2集合に含まれる複数の候補値それぞれに基づいて前記プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第2位置において生成された複数の実行結果に対する評価結果に基づいて、前記第2集合に含まれる複数の候補値のうち第2候補値を選択する、
ことを特徴とする情報処理装置。
【請求項2】
前記プロセッサは、前記第1集合に含まれる複数の候補値のうち、前記第1位置において生成された実行結果の精度が許容範囲内であることを示す評価結果を有する候補値を、前記第1候補値として選択することを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記第1集合に含まれる複数の候補値のうち、前記第1候補値以外の第3候補値の評価結果が、前記第1位置において前記第3候補値に基づいて前記プログラムを簡略化して実行することで生成された実行結果の精度が許容範囲外であることを示す場合、前記プロセッサは、前記第1位置において前記第3候補値に基づいて前記プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記プログラムを簡略化して実行することを、抑止することを特徴とする請求項2記載の情報処理装置。
【請求項4】
前記記憶部は、前記プログラム中の複数の位置それぞれにおいて前記プログラムを簡略化して実行する、簡略化処理が適用される度合いを示すパラメータとして用いられた候補値を示すノードと、前記プログラムの高速化率を示す葉ノードとを含む探索木を、さらに記憶し、
前記プロセッサは、前記第1集合に含まれる複数の候補値のうち、前記探索木の第1葉ノードよりも高い高速化率を示す第2葉ノードに到達する辺を持つノードから派生する候補値を、前記第1葉ノードに到達する辺を持つノードから派生する候補値よりも優先的に用いることを特徴とする請求項2又は3記載の情報処理装置。
【請求項5】
前記探索木に含まれる葉ノードは、前記プログラムの処理結果の精度をさらに示し、
前記プロセッサは、前記第1集合に含まれる複数の候補値のうち、前記探索木の第3葉ノードよりも高い精度を示す第4葉ノードに到達する辺を持つノードから派生する候補値を、前記第3葉ノードに到達する辺を持つノードから派生する候補値よりも優先的に用いることを特徴とする請求項4記載の情報処理装置。
【請求項6】
前記プロセッサは、
前記第1集合に含まれる複数の候補値のうち、前記第1位置において生成された実行結果の精度が許容範囲内であることを示す評価結果を有する候補値の集合を、候補値の第3集合として前記記憶部に記憶させ、前記第1簡略化処理のパラメータに前記第1候補値を設定し、前記第2簡略化処理のパラメータに前記第2候補値を設定することで、簡略化された第1プログラムを生成し、
処理対象データを用いて前記第1プログラムを実行し、
前記第1位置において前記第1候補値に基づいて生成された実行結果の精度が許容範囲外である場合、前記第3集合に含まれる複数の候補値のうち、前記第1候補値以外の第4候補値を選択し、前記第1簡略化処理のパラメータに前記第4候補値を設定し、前記第2簡略化処理のパラメータに前記第2候補値を設定することで、簡略化された第2プログラムを生成し、
前記処理対象データを用いて前記第2プログラムを実行する、
ことを特徴とする請求項2乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
対象プログラム中の第1位置において前記対象プログラムを簡略化して実行する、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、前記第1位置よりも後の第2位置において前記対象プログラムを簡略化して実行する、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成し、
前記第1位置において前記第1集合に含まれる複数の候補値それぞれに基づいて前記対象プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第1位置において生成された複数の実行結果に対する評価結果に基づいて、前記第1集合に含まれる複数の候補値のうち第1候補値を選択し、
前記第1位置において前記第1候補値に基づいて前記対象プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記第2集合に含まれる複数の候補値それぞれに基づいて前記対象プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第2位置において生成された複数の実行結果に対する評価結果に基づいて、前記第2集合に含まれる複数の候補値のうち第2候補値を選択する、
処理をコンピュータに実行させるための情報処理プログラム。
【請求項8】
コンピュータによって実行される情報処理方法であって、
前記コンピュータが、
プログラム中の第1位置において前記プログラムを簡略化して実行する、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、前記第1位置よりも後の第2位置において前記プログラムを簡略化して実行する、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成し、
前記第1位置において前記第1集合に含まれる複数の候補値それぞれに基づいて前記プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第1位置において生成された複数の実行結果に対する評価結果に基づいて、前記第1集合に含まれる複数の候補値のうち第1候補値を選択し、
前記第1位置において前記第1候補値に基づいて前記プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記第2集合に含まれる複数の候補値それぞれに基づいて前記プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第2位置において生成された複数の実行結果に対する評価結果に基づいて、前記第2集合に含まれる複数の候補値のうち第2候補値を選択する、
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理プログラム、及び情報処理方法に関する。
【背景技術】
【0002】
近年、プログラムの実行の高速化及び低消費電力化を目的として、実行結果の精度の厳密性をユーザが許容する範囲内で変更する、近似計算(Approximate Computing,AC)技術が多数提案されている。AC技術には、AC並列化、ループパーフォレーション(loop perforation)、タスクスキッピング(task skipping)、ビット数削減等の技術が含まれる。
【0003】
AC並列化は、プログラム中に記述された、並列に実行される複数の処理の待ち合わせを途中で打ち切る処理であり、ループパーフォレーションは、ループ処理の繰り返しの一部をスキップする処理である。タスクスキッピングは、プログラムコードの一部の実行をスキップする処理であり、ビット数削減は、演算に使用される変数のビット数を削減する処理である。プログラムに対する各AC技術の適用の度合いは、パラメータによって指定される。
【0004】
1つのプログラムに対して1つ又は複数のAC技術を適用することができ、複数のAC技術を適用した場合、それらのAC技術の相乗効果によって、そのプログラムの高速化及び低消費電力化の効果を高めることが可能である。
【0005】
プログラムの最適化に関連して、制御モジュールにおける制御パラメータを、直接最適化手法を用いて最適化させる総合特性最適化方法が知られている(例えば、特許文献1を参照)。プラントの状態総合評価における評価構造・パラメータの自動調整装置、及び複数のパラメータの相関に鑑みて対象装置の異常を判定する異常判定装置も知られている(例えば、特許文献2及び特許文献3を参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2000-250603号公報
【文献】特開平11-110367号公報
【文献】特開2019-40431号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
アプリケーションプログラムに対して複数のAC技術を適用する場合、それらのAC技術の相互作用又は相乗効果の制御が難しくなる。
【0008】
なお、かかる問題は、プログラムに対してAC技術を適用する場合に限らず、プログラムを簡略化して実行する様々な簡略化処理を適用する場合において生ずるものである。
【0009】
1つの側面において、本発明は、プログラムに対して複数の簡略化処理それぞれを適用する度合いを効率良く決定することを目的とする。
【課題を解決するための手段】
【0010】
1つの案では、情報処理装置は、プログラムを記憶する記憶部と、プログラムを実行するプロセッサとを有する。
【0011】
プロセッサは、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成する。第1簡略化処理は、プログラム中の第1位置においてプログラムを簡略化して実行する簡略化処理であり、第2簡略化処理は、第1位置よりも後の第2位置においてプログラムを簡略化して実行する簡略化処理である。
【0012】
次に、プロセッサは、第1位置において第1集合に含まれる複数の候補値それぞれに基づいてプログラムを簡略化して実行することで、複数の実行結果を生成する。そして、プロセッサは、第1位置において生成された複数の実行結果に対する評価結果に基づいて、第1集合に含まれる複数の候補値のうち第1候補値を選択する。
【0013】
次に、プロセッサは、第2位置において第2集合に含まれる複数の候補値それぞれに基づいてプログラムを簡略化して実行することで、複数の実行結果を生成する。このとき、プロセッサは、第1位置において第1候補値に基づいてプログラムを簡略化して実行することで生成された実行結果を用いて、プログラムを実行する。そして、プロセッサは、第2位置において生成された複数の実行結果に対する評価結果に基づいて、第2集合に含まれる複数の候補値のうち第2候補値を選択する。
【発明の効果】
【0014】
1つの側面によれば、プログラムに対して複数の簡略化処理それぞれを適用する度合いを効率良く決定することができる。
【図面の簡単な説明】
【0015】
【
図2】パラメータ決定処理のフローチャートである。
【
図3】情報処理装置の具体例を示す機能的構成図である。
【
図7】チェックポイント付きプログラムを示す図である。
【
図9A】手続きRUN(Q,H)のフローチャート(その1)である。
【
図9B】手続きRUN(Q,H)のフローチャート(その2)である。
【
図10】リクエストキューの処理のフローチャートである。
【
図14】情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、実施形態を詳細に説明する。
アプリケーションプログラムに対してAC技術を適用する場合、ユーザは、そのプログラム中のどの部分に対してAC技術をどの程度適用するかを決定する。プログラム中の不適切な部分にAC技術を適用したり、AC技術を過度に適用したりした場合、プログラムの実行結果の精度が、ユーザが許容する以上に劣化したり、実行中にプログラムがエラーで終了したりする可能性がある。また、1つのアプリケーションプログラムに対して複数のAC技術を適用する場合、それらのAC技術の相互作用又は相乗効果の制御が難しくなる。
【0017】
また、アプリケーションプログラムが多数の入力データそれぞれに対して実行される場合、入力データに応じてAC技術の適用結果が異なることがある。例えば、AC技術が適用されたプログラムに、ある入力データが入力されて、ユーザが指定した許容範囲内の精度の実行結果が得られた場合を想定する。この場合、同じプログラムに別の入力データが入力されると、許容範囲外の精度の実行結果が得られたり、実行結果がエラーになったりする、という状況が発生する可能性がある。
【0018】
このような状況が発生した場合は、結果的に、別の入力データに対するAC技術の適用が不適切であることが判明し、その入力データに対して元のアプリケーションプログラムが実行されることになる。このため、AC技術が適用されたプログラムの実行時間が無駄になり、大幅な時間の浪費が発生する。
【0019】
図1は、実施形態の情報処理装置(コンピュータ)の機能的構成例を示している。
図1の情報処理装置101は、プログラム121を記憶する記憶部111、生成部112、実行部113、及び選択部114を含む。
【0020】
図2は、
図1の情報処理装置101が行うパラメータ決定処理の例を示すフローチャートである。まず、生成部112は、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成する(ステップ201)。第1簡略化処理は、プログラム121中の第1位置においてプログラム121を簡略化して実行する簡略化処理であり、第2簡略化処理は、第1位置よりも後の第2位置においてプログラム121を簡略化して実行する簡略化処理である。
【0021】
次に、実行部113は、第1位置において第1集合に含まれる複数の候補値それぞれに基づいてプログラム121を簡略化して実行することで、複数の実行結果を生成する(ステップ202)。そして、選択部114は、第1位置において生成された複数の実行結果に対する評価結果に基づいて、第1集合に含まれる複数の候補値のうち第1候補値を選択する(ステップ203)。
【0022】
次に、実行部113は、第2位置において第2集合に含まれる複数の候補値それぞれに基づいてプログラム121を簡略化して実行することで、複数の実行結果を生成する(ステップ204)。このとき、実行部113は、第1位置において第1候補値に基づいてプログラム121を簡略化して実行することで生成された実行結果を用いて、プログラム121を実行する。そして、選択部114は、第2位置において生成された複数の実行結果に対する評価結果に基づいて、第2集合に含まれる複数の候補値のうち第2候補値を選択する(ステップ205)。
【0023】
図1の情報処理装置101によれば、プログラムに対して複数の簡略化処理それぞれを適用する度合いを効率良く決定することができる。
【0024】
図3は、
図1の情報処理装置101の具体例を示している。
図3の情報処理装置301は、記憶部311、生成部312、実行部313、選択部314、及び出力部315を含む。記憶部311、生成部312、実行部313、及び選択部314は、
図1の記憶部111、生成部112、実行部113、及び選択部114にそれぞれ対応する。
【0025】
記憶部311は、プログラム321、入力ファイル322、許容精度情報323、探索木324、学習用データ325、入力ファイル326を記憶する。プログラム321は、
図1のプログラム121に対応し、必ずしも処理結果の厳密性が要求されない、AC技術の適用対象となる対象プログラムの一例である。AC技術は、プログラム321を簡略化して実行する簡略化処理の一例である。
【0026】
例えば、プログラム321は、ビッグデータ解析、機械学習、情報検索、映像処理等のプログラムであってもよい。AC技術としては、AC並列化、ループパーフォレーション、タスクスキッピング、ビット数削減等が適用される。
【0027】
情報処理装置301は、調整モード及び運用モードの2種類の動作モードを有する。調整モードにおいて、情報処理装置301は、プログラム321に適用される複数のAC技術と、各AC技術のパラメータ値との組み合わせを決定し、決定されたAC技術及びパラメータ値の組み合わせが適用されたAC適用プログラム327を生成する。運用モードにおいて、情報処理装置301は、AC適用プログラム327を実行する。
【0028】
入力ファイル322は、調整モードにおいてプログラム321に入力される調整用データを含み、許容精度情報323は、プログラム321中の各位置において各変数が有する値の精度の許容範囲を示す。探索木324は、調整モードにおいて試行されたAC技術とそのパラメータ値とを記録するためのノードを含む、木構造のデータである。学習用データ325は、探索木324の各ノードに記録されたAC技術及びパラメータ値の組み合わせに対する評価結果を示すデータである。入力ファイル326は、運用モードにおいてプログラム321に入力される処理対象データを含む。
【0029】
調整モードにおいて、情報処理装置301は、並列処理技術を応用し、AC技術及びパラメータ値の最適な組み合わせを探索する探索処理を行う。この探索処理において、情報処理装置301は、入力ファイル322を用いて、AC技術及びパラメータ値の複数の組み合わせそれぞれが適用されたプログラム321を並列に実行して、複数の実行結果を生成する。
【0030】
そして、情報処理装置301は、実行結果の精度が許容範囲から外れたプログラム321の実行を中断する。一方、許容範囲内の精度の実行結果が得られたプログラム321については、情報処理装置301は、適用されるAC技術をさらに増やして実行することで、複数の実行結果を生成する。このような並列処理を繰り返すことで、最適な組み合わせが効率良く探索され、各組み合わせを1つずつ試行する場合よりも、探索処理の処理時間を大幅に短縮することができる。
【0031】
探索処理において、生成部312は、プログラム321中の各位置において適用されるAC技術のパラメータの候補となるパラメータ値(候補値)の集合を生成する。パラメータ値の集合には、AC技術を適用しないことを示すパラメータ値が含まれていてもよい。
【0032】
次に、実行部313は、集合に含まれる複数のパラメータ値それぞれに基づいて、プログラム321にAC技術を適用して実行することで、複数の実行結果を生成する。そして、選択部314は、各位置において生成された複数の実行結果を評価し、実行結果の精度が許容範囲内であるか否かを示す評価結果を生成し、評価結果に基づいて、集合に含まれるいずれかのパラメータ値を選択する。
【0033】
このとき、選択部314は、各位置における実行結果の精度が許容範囲内であることを示す評価結果を有するパラメータ値を選択する。これにより、許容範囲内の精度を有する実行結果を生成したパラメータ値を用いる探索が促進され、最適なパラメータ値の組み合わせを短時間で求めることができる。
【0034】
いずれかのパラメータ値について、実行結果の精度が許容範囲外であることを示す評価結果が得られた場合、選択部314は、そのパラメータ値に基づく実行結果を用いた探索処理を抑止する。これにより、許容範囲外の精度を有する実行結果を生成したパラメータ値を用いる探索が打ち切られ、無駄な探索を省略することができる。
【0035】
探索処理では、探索木324に基づく強化学習が利用される。これにより、AC技術及びパラメータ値の組み合わせの候補が大量に存在する場合であっても、有望な組み合わせを効率良く試行することが可能になる。
【0036】
選択部314は、探索処理により求められたAC技術及びパラメータ値の最適な組み合わせを、プログラム321に適用することで、AC適用プログラム327を生成し、記憶部311に格納する。
【0037】
運用モードにおいて、実行部313は、入力ファイル326を用いて、プログラム321中の各位置にAC技術が適用されたAC適用プログラム327を実行する。入力ファイル326は調整モードで用いられた入力ファイル322とは異なるため、AC技術及びパラメータ値の最適な組み合わせを適用しても、許容範囲外の精度の実行結果が得られたり、実行結果がエラーになったりすることがある。
【0038】
この場合、実行部313は、探索木324のノードに記録された別のパラメータ値を用いて、AC技術を再度適用し、そのAC技術が適用された位置から、AC適用プログラム327を再実行する。別のパラメータ値がAC技術を適用しないことを示している場合、実行部313は、その位置に対してAC技術を適用することなく、AC適用プログラム327を再実行する。
【0039】
これにより、AC技術を適用したことで許容範囲外の精度の実行結果が得られたり、実行結果がエラーになったりした場合に、それまでの実行時間を無駄にせずに、AC適用プログラム327の実行を完了できる可能性が高くなる。したがって、AC適用プログラム327を実行したことによる手戻り時間を大幅に短縮することができる。
【0040】
実行部313は、AC適用プログラム327を実行することで処理結果328を生成し、記憶部311に格納する。そして、出力部315は、処理結果328を出力する。
【0041】
図4は、調整モードにおいて、
図3の情報処理装置301が行う探索処理の例を示すフローチャートである。まず、生成部312は、許容精度情報323に基づいてプログラム321にチェックポイントを付加することで、チェックポイント付きプログラムを生成する(ステップ401)。チェックポイントは、許容精度情報323により指定されたプログラム321中の位置で、変数の精度が許容範囲内であるか否かをチェックする処理を表す。
【0042】
図5は、プログラム321の例を示している。宣言文501は、配列A、配列B、及び配列Cに関する宣言文であり、宣言文502は、変数x、変数y、変数z、及び変数resultに関する宣言文である。実行文503は、変数xの値を定義することを表し、実行文504は、変数yの値を定義することを表し、実行文505は、変数zの値を定義することを表す。実行文506は、配列Aの要素A[k](k=0~N-1)を、配列Bの要素B[k]と配列Cの要素C[k]の積として定義することを表し、実行文507は、変数resultの値を呼び出し元へ返す操作を表す。
【0043】
図6は、
図5のプログラム321に対する許容精度情報323の例を示している。
図6の許容精度情報323は、ユーザによって設定され、名前、変数、行番号、最小値、及び最大値を含む。名前は、チェックポイントの識別情報であり、変数は、チェック対象の変数を表し、行番号は、プログラム321中でチェック対象の変数が記述されている行の番号を表す。最小値は、チェック対象の変数の値の下限値を表し、最大値は、チェック対象の変数の値の上限値を表す。
【0044】
例えば、チェックポイントc1は、
図5のプログラム321の第7行に記述された実行文503に含まれる変数xの値をチェックする処理であり、最小値は-1.0であり、最大値は1.0である。したがって、実行文503により生成される変数xの値が-1.0以上かつ1.0以下である場合は、変数xの値の精度が許容範囲内であると判定され、-1.0よりも小さい場合及び1.0よりも大きい場合は、精度が許容範囲外であると判定される。
【0045】
図7は、
図6のチェックポイントc1~チェックポイントc4が付加されたチェックポイント付きプログラムの例を示している。プラグマ701~プラグマ704は、それぞれ、チェックポイントc1~チェックポイントc4を表す。
【0046】
次に、生成部312は、コンパイラの技術を応用して、プログラム321のソースコードを解析する。これにより、AC技術を適用するプログラム321中の位置cと、位置cに適用するAC技術の種類dと、適用するAC技術のパラメータ値eの集合Eとからなる、3つ組p=(c,d,E)が生成される。そして、生成部312は、複数の3つ組pを含む集合Pを生成する(ステップ402)。3つ組pは、AC技術及びパラメータ値の複数の組み合わせを表す。
【0047】
例えば、AC技術の種類dとしては、AC並列化、ループパーフォレーション、タスクスキッピング、ビット数削減等が用いられる。集合Eの要素であるパラメータ値eは、種類dのAC技術が適用される度合いを表す。
【0048】
集合Eの要素は、事前に、AC技術が適用される度合いの昇順にソートされる。AC技術が適用される度合いが小さい要素は、高速化の効果が低く、かつ、演算精度の劣化が小さい要素であり、AC技術が適用される度合いが大きい要素は、高速化の効果が高く、かつ、演算精度の劣化が大きい要素である。集合Eには、AC技術が適用される度合いが最も小さい要素として、AC技術を適用しないことを示すパラメータ値eも含まれている。
【0049】
次に、生成部312は、チェックポイント付きプログラムに対して、集合Pの各要素を適用するためのプラグマを挿入することで、調整用プログラムを生成する(ステップ403)。
【0050】
図8は、
図7のチェックポイント付きプログラムから生成された調整用プログラムの例を示している。この例では、次のような3つ組が集合Pに含まれる。
p1=(5,parallel,{16,8})
p2=(11,loop perforation,{0,2,3})
p3=(21,precision,{64,32})
【0051】
3つ組p1の“5”は、調整用プログラム中の第5行の位置を表し、“parallel”は、AC並列化を表し、{16,8}は、パラメータ値“16”及びパラメータ値“8”を要素とする集合Eを表す。AC並列化のパラメータ値eは、並列に実行される複数の処理の完了を待ち合せるバリア同期において、e個の処理が完了した時点で、残りの未完了の処理を打ち切ることを示している。したがって、パラメータ値eが小さいほど、AC並列化が適用される度合いが大きくなる。パラメータ値“16”は、AC並列化を適用しないことを示すパラメータ値である。
【0052】
3つ組p2の“11”は、調整用プログラム中の第11行の位置を表し、“loop perforation”は、ループパーフォレーションを表す。{0,2,3}は、パラメータ値“0”、パラメータ値“2”、及びパラメータ値“3”を要素とする集合Eを表す。ループパーフォレーションのパラメータ値eは、ループ処理において間引かれる繰り返し回数を示している。したがって、パラメータ値eが大きいほど、ループパーフォレーションが適用される度合いが大きくなる。パラメータ値“0”は、ループパーフォレーションを適用しないことを示すパラメータ値である。
【0053】
3つ組p3の“21”は、調整用プログラム中の第21行の位置を表し、“precision”は、ビット数削減を表し、{64,32}は、パラメータ値“64”及びパラメータ値“32”を要素とする集合Eを表す。ビット数削減のパラメータ値eは、ビット数削減後の変数のビット数を示している。したがって、パラメータ値eが小さいほど、ビット数削減が適用される度合いが大きくなる。パラメータ値“64”は、ビット数削減を適用しないことを示すパラメータ値である。
【0054】
図8のプラグマ801~プラグマ803は、それぞれ、3つ組p1~3つ組p3を適用することを表している。
【0055】
次に、選択部314は、探索処理の制御に用いられる変数VM、変数PM、及び変数TMの値を設定する(ステップ404)。VMは、探索処理の処理時間の上限値を表し、PMは、探索処理において同時に動作するプロセスの個数の上限値を表し、TMは、1つのプロセスの実行時間の上限値を表す。変数VM、変数PM、及び変数TMの値は、例えば、プログラム321を事前に実行することによって決定することができる。
【0056】
次に、選択部314は、探索木324に対応する探索木Tを初期化する(ステップ405)。これにより、T={}となる。
【0057】
次に、選択部314は、リクエストキューGの実行を開始し(ステップ406)、タイマVを0にリセットして起動することで、経過時間の計測を開始する(ステップ407)。
【0058】
次に、実行部313は、入力ファイル322を用いて調整用プログラムの実行を開始し、プログラムイメージQ及びヒストリHを引数とする、手続きRUN(Q,H)を実行する(ステップ408)。そして、選択部314は、リクエストキューGの実行の終了を待ち合わせる。
【0059】
Qは、プログラムイメージを示す識別情報であり、ヒストリHは、探索処理において採用されたAC技術及びパラメータ値の組み合わせを表す。この時点では、H={⊥}である。⊥は、探索木Tの根ノードを表す。
【0060】
リクエストキューGの実行が終了した時点で、許容精度情報323が示す許容範囲内の精度で、最も高速な演算を行うことが可能なAC技術及びパラメータ値の組み合わせを含む、探索木Tが得られる。
【0061】
そこで、選択部314は、探索木Tの葉ノードに記録された情報をチェックして、高速化の効果が最も高い葉ノードを選択する。そして、選択部314は、その葉ノードから根ノードまでノードを順に辿ることで、AC技術及びパラメータ値の最適な組み合わせを決定する(ステップ409)。
【0062】
次に、選択部314は、決定されたAC技術及びパラメータ値を調整用プログラムに適用することで、AC適用プログラム327を生成する(ステップ410)。そして、選択部314は、探索木Tの各ノードから、実行に成功したパラメータ値又は実行に失敗したパラメータ値の情報を抽出して、学習用データ325に記録することで、学習用データ325を更新する(ステップ411)。
【0063】
図9A及び9Bは、
図4のステップ408における手続きRUN(Q,H)の例を示すフローチャートである。まず、実行部313は、プログラムイメージQを実行し(ステップ901)、実行位置がチェックポイントの位置に到達したか否かをチェックする(ステップ902)。
【0064】
実行位置がチェックポイントの位置に到達した場合(ステップ902,YES)、選択部314は、そのチェックポイントの変数の値の精度を評価し(ステップ907)、精度が許容範囲内であるか否かを判定する(ステップ908)。変数の値が最小値以上かつ最大値以下である場合は、精度が許容範囲内であると判定され、変数の値が最小値よりも小さい場合及び最大値よりも大きい場合は、精度が許容範囲外であると判定される。
【0065】
精度が許容範囲内である場合(ステップ908,YES)、情報処理装置301は、ステップ901以降の処理を繰り返す。一方、精度が許容範囲外である場合(ステップ908,NO)、選択部314は、プログラムイメージQの実行が失敗したと判定して、その実行を抑止し、探索木Tを更新する(ステップ909)。そして、実行部313は、手続きRUN(Q,H)の実行を終了する。探索木Tの更新方法については後述する。
【0066】
実行位置がチェックポイントの位置に到達していない場合(ステップ902,NO)、実行部313は、実行位置が集合Pの新たな要素の位置に到達したか否かをチェックする(ステップ903)。新たな要素は、集合Pに含まれる3つ組pのうち、1度も処理されていない3つ組pを表す。
【0067】
実行位置が集合Pの新たな要素の位置に到達した場合(ステップ903,YES)、生成部312は、その要素の3つ組p=(c,d,E)の集合Eから、試行対象のパラメータ値の部分集合E′⊆Eを生成する(ステップ910)。部分集合E′は、AC技術のパラメータに対する候補値の集合の一例である。部分集合E′の生成方法については後述する。
【0068】
次に、選択部314は、部分集合E′が空集合であるか否かをチェックする(ステップ911)。部分集合E′が空集合である場合(ステップ911,YES)、実行部313は、手続きRUN(Q,H)の実行を終了する。
【0069】
一方、部分集合E′が空集合ではない場合(ステップ911,NO)、選択部314は、部分集合E′に含まれる各パラメータ値eについて、ヒストリHeを生成する(ステップ912)。ヒストリHeは、手続きRUN(Q,H)のヒストリHをコピーして、コピーしたヒストリHの最後に3つ組(c,d,e)を追加することで、生成される。
【0070】
次に、選択部314は、各パラメータ値eについてリクエスト(Q,He)を生成し、リクエストキューGに入力する(ステップ913)。そして、選択部314は、リクエストキューGに入力された各リクエストが少なくとも1つの葉ノードを持つまで待機し、次のパラメータ値を評価するために、ステップ910以降の処理を繰り返す。
【0071】
実行位置が集合Pの新たな要素の位置に到達していない場合(ステップ903,NO)、実行部313は、実行位置が調整用プログラムの終了点に到達したか否かをチェックする(ステップ904)。
【0072】
実行位置が終了点に到達した場合(ステップ904,YES)、選択部314は、プログラムイメージQの実行が成功したと判定して、探索木Tを更新し(ステップ909)、実行部313は、手続きRUN(Q,H)の実行を終了する。
【0073】
一方、実行位置が終了点に到達していない場合(ステップ904,NO)、実行部313は、実行エラーが発生したか否かをチェックする(ステップ905)。実行エラーが発生した場合(ステップ905,YES)、選択部314は、プログラムイメージQの実行が失敗したと判定して、ステップ909以降の処理を行う。
【0074】
一方、実行エラーが発生していない場合(ステップ905,NO)、実行部313は、プログラムイメージQの実行時間をTMと比較する(ステップ906)。実行時間がTMよりも長い場合(ステップ906,YES)、選択部314は、プログラムイメージQの実行が失敗したと判定して、ステップ909以降の処理を行う。
【0075】
一方、実行時間がTM以下である場合(ステップ906,NO)、情報処理装置301は、ステップ901以降の処理を繰り返す。
【0076】
プログラムイメージQの実行が失敗した場合、ステップ909において、選択部314は、次のようなノード及び辺を探索木Tに追加する。
(F1)ヒストリHに含まれる各3つ組(c,d,e)を示すノード(p,e)
(F2)連続する2つのノード(p,e)を結ぶ辺
(F3)実行の失敗を示す葉ノードERROR
(F4)葉ノードERRORの直前のノード(p,e)と、葉ノードERRORとを結ぶ辺
【0077】
一方、プログラムイメージQの実行が成功した場合、ステップ909において、選択部314は、次のようなノード及び辺を探索木Tに追加する。
(F11)ヒストリHに含まれる各3つ組(c,d,e)を示すノード(p,e)
(F12)連続する2つのノード(p,e)を結ぶ辺
(F13)高速化率u及び精度rを含み、実行の成功を示す葉ノードOK(u,r)
(F14)葉ノードOK(u,r)の直前のノード(p,e)と、葉ノードOK(u,r)とを結ぶ辺
【0078】
高速化率uは、プログラム321にAC技術を適用することで、実行速度が高速化された度合いを表し、精度rは、処理結果の精度を表す。
【0079】
ステップ910において、集合Eから最初の部分集合E′を生成する場合、生成部312は、所定の判定器を用いて、集合Eの各要素であるパラメータ値eを部分集合E′に含めるか否かを決定する。例えば、判定器としては、事前に機械学習により生成された学習モデルを用いることができる。
【0080】
この場合、生成部312は、3つ組p=(c,d,E)の位置c以降のソースコード部分をコンパイラにより解析して、ソースコード部分の特徴情報を抽出する。例えば、特徴情報としては、ループ内の文及び変数の個数、式の演算子の種類の個数、データ型の種類の個数、及びデータの依存関係のパターンのような、ソースコード部分の特徴を表す情報の集合が抽出される。
【0081】
次に、生成部312は、抽出された特徴情報及びパラメータ値eを判定器に入力することで、パラメータ値eをプログラム321に適用するか否かを示す判定結果を得る。パラメータ値eを適用することを示す判定結果が得られた場合、生成部312は、そのパラメータ値eを部分集合E′に追加する。
【0082】
一方、集合Eから2番目以降の部分集合E′を生成する場合、生成部312は、探索木Tを利用して、これまでに評価されていない未評価のパラメータ値eを、次のような手順で部分集合E′に追加する。
【0083】
(J1)生成部312は、探索木Tにおいて、実行の成功を示す葉ノードに到達する少なくとも1本の辺を持ち、同じ3つ組pを有する、1つ以上のノード(p,e)を特定する。そして、生成部312は、特定されたノード(p,e)が有するパラメータ値eのうち、AC技術が適用される度合いが最も大きいパラメータ値eを、パラメータ値esに決定する。
【0084】
(J2)生成部312は、探索木Tにおいて、実行の成功を示す葉ノードに到達する辺を持たず、同じ3つ組pを有する、1つ以上のノード(p,e)を特定する。次に、生成部312は、特定されたノード(p,e)が有するパラメータ値eの中から、パラメータ値esよりもAC技術が適用される度合いが大きい1つ以上のパラメータ値eを選択する。そして、生成部312は、選択されたパラメータ値eのうち、AC技術が適用される度合いが最も小さいパラメータ値eを、パラメータ値efに決定する。この時点で、パラメータ値es又はパラメータ値efのうち、少なくとも一方が決定される。
【0085】
(J3)パラメータ値esが存在せず、パラメータ値efが存在する場合、生成部312は、パラメータ値efよりもAC技術が適用される度合いが小さい、未評価のパラメータ値eを特定する。そして、生成部312は、特定されたパラメータ値eのうち、最小値、最大値、及び最小値と最大値から同じ距離だけ離れた中央のパラメータ値を、部分集合E′に追加する。
【0086】
(J4)パラメータ値esが存在し、パラメータ値efが存在しない場合、生成部312は、パラメータ値esよりもAC技術が適用される度合いが大きい、未評価のパラメータ値eを特定する。そして、生成部312は、特定されたパラメータ値eのうち、最小値、最大値、及び中央のパラメータ値を、部分集合E′に追加する。
【0087】
(J5)パラメータ値es及びパラメータ値efが存在する場合、生成部312は、パラメータ値esとパラメータ値efの間に存在する未評価のパラメータ値eを特定する。そして、生成部312は、特定されたパラメータ値eのうち、最小値、最大値、及び中央のパラメータ値を、部分集合E′に追加する。パラメータ値esとパラメータ値efの間に未評価のパラメータ値eが存在しない場合、生成部312は、部分集合E′として空集合を生成する。
【0088】
手順(J3)~手順(J5)において、特定されたパラメータ値eの個数が3個未満である場合、生成部312は、特定されたすべてのパラメータ値eを、部分集合E′に追加する。また、特定されたパラメータ値eの個数が4個以上の偶数であり、中央のパラメータ値が存在しない場合、生成部312は、中央付近の2つのパラメータ値のうち、AC技術が適用される度合いが大きい方のパラメータ値を選択する。
【0089】
例えば、E={0,1,2,3,4,5,6}であり、パラメータ値eが小さいほど、AC技術が適用される度合いが小さく、パラメータ値eが大きいほど、AC技術が適用される度合いが大きい場合を想定する。
【0090】
パラメータ値esが存在せず、ef=5である場合、手順(J3)によって、{0,1,2,3,4}が特定され、E′={0,2,4}となる。パラメータ値efが存在せず、es=1である場合、手順(J4)によって、{2,3,4,5,6}が特定され、E′={2,4,6}となる。
【0091】
es=0であり、ef=6である場合、手順(J5)によって、{1,2,3,4,5}が特定され、E′={1,3,5}となる。es=0であり、ef=5である場合、手順(J5)によって、{1,2,3,4}が特定され、E′={1,3,4}となる。
【0092】
図10は、
図4のステップ406において実行されるリクエストキューGの処理の例を示すフローチャートである。まず、選択部314は、リクエストキューGを受け付け可能状態に設定し(ステップ1001)、
図9Bのステップ913の処理により、新たなリクエスト(Q,He)がリクエストキューGに入力されたか否かをチェックする(ステップ1002)。
【0093】
リクエスト(Q,He)が入力された場合(ステップ1002,YES)、選択部314は、そのリクエスト(Q,He)をリクエストキューGに挿入し(ステップ1008)、情報処理装置301は、ステップ1002以降の処理を繰り返す。リクエスト(Q,He)の挿入位置の決定方法については後述する。
【0094】
リクエスト(Q,He)が入力されていない場合(ステップ1002,NO)、選択部314は、リクエストキューGが空であるか否かをチェックする(ステップ1003)。リクエストキューGが空ではない場合(ステップ1003,NO)、選択部314は、実行中のプログラムイメージの個数をPMと比較する(ステップ1004)。
【0095】
実行中のプログラムイメージの個数がPMよりも小さい場合(ステップ1004,YES)、選択部314は、リクエストキューGの先頭のリクエスト(Q,He)をリクエストキューGから削除する。そして、選択部314は、削除したリクエスト(Q,He)のプログラムイメージQをコピーして、プログラムイメージQeを生成し(ステップ1009)、プログラムイメージQe用にヒストリHeをコピーする(ステップ1010)。
【0096】
次に、実行部313は、手続きRUN(Qe,He)を実行し(ステップ1011)、情報処理装置301は、ステップ1002以降の処理を繰り返す。
【0097】
実行中のプログラムイメージの個数がPMに達した場合(ステップ1004,NO)、選択部314は、タイマVが示す経過時間をVMと比較する(ステップ1005)。経過時間がVM以下である場合(ステップ1005,NO)、情報処理装置301は、ステップ1002以降の処理を繰り返す。リクエストキューGが空である場合(ステップ1003,YES)、情報処理装置301は、ステップ1005以降の処理を行う。
【0098】
経過時間がVMよりも長い場合(ステップ1005,YES)、選択部314は、リクエストキューG内に存在するリクエストをすべて削除する(ステップ1006)。そして、選択部314は、リクエストキューGを受け付け不可状態に設定し(ステップ1007)、すべてのプログラムイメージの実行の終了を待ち合わせる。すべてのプログラムイメージの実行が終了したとき、プロセスリクエストキューGの実行が終了する。
【0099】
図10のリクエストキューGの処理によれば、実行中のプログラムイメージの個数がPMを超えないように、新たな手続きRUN(Qe,He)の実行が抑制される。また、リクエストキューG内において、リクエスト(Q,He)は、次のような優先順位でソートされ、先頭のリクエストから順に処理される。
【0100】
(L1)探索木Tにおいて、ノードβ1よりもノードα1の方が、実行の失敗を示す葉ノードに到達する辺の数が少ない場合を想定する。この場合、ノードα1から派生するパラメータ値についてのリクエストが、ノードβ1から派生するパラメータ値についてのリクエストよりも、先頭に近い位置に挿入される。
【0101】
ノードから派生するパラメータ値とは、そのノードに記録されたAC技術及びパラメータ値が適用された後に、そのノードが示す位置よりも後の位置で適用されるAC技術のパラメータ値を意味する。
【0102】
(L2)探索木Tにおいて、ノードβ2の辺から到達する葉ノードよりも、ノードα2の辺から到達する葉ノードの方が、高い高速化率uを示している場合を想定する。この場合、ノードα2から派生するパラメータ値についてのリクエストが、ノードβ2から派生するパラメータ値についてのリクエストよりも、先頭に近い位置に挿入される。2つの葉ノードの高速化率uが同じである場合は、優先順位(L3)が適用される。
【0103】
(L3)探索木Tにおいて、ノードβ3の辺から到達する葉ノードよりも、ノードα3の辺から到達する葉ノードの方が、高い精度rを示している場合を想定する。この場合、ノードα3から派生するパラメータ値についてのリクエストが、ノードβ3から派生するパラメータ値についてのリクエストよりも、先頭に近い位置に挿入される。
【0104】
(L4)探索木Tにおいて、ノードβ4よりもノードα4の方が、根ノードからの深さが深い場合を想定する。この場合、ノードα4から派生するパラメータ値についてのリクエストが、ノードβ4から派生するパラメータ値についてのリクエストよりも、先頭に近い位置に挿入される。
【0105】
ステップ1008において、選択部314は、優先順位(L1)~優先順位(L4)に基づいて、リクエスト(Q,He)を挿入する位置を決定する。
【0106】
優先順位(L1)を適用することで、実行が失敗する可能性が低いパラメータ値eのリクエストが優先的に実行されるため、そのような可能性が低い探索木Tのパスを優先的に探索することが可能になる。
【0107】
優先順位(L2)を適用することで、高速化の可能性が高いパラメータ値eのリクエストが優先的に実行されるため、そのような可能性が高い探索木Tのパスを優先的に探索することが可能になる。
【0108】
優先順位(L3)を適用することで、高い精度の処理結果が得られる可能性が高いパラメータ値eのリクエストが優先的に実行されるため、そのような可能性が高い探索木Tのパスを優先的に探索することが可能になる。
【0109】
優先順位(L4)を適用することで、終了点に近いAC技術のパラメータ値eのリクエストが優先的に実行されるため、プログラムイメージQの実行を早く終了させて葉ノードを生成することが可能になる。
【0110】
次に、
図8に示した調整用プログラムに対する探索処理の具体例を説明する。この例では、変数VM、変数PM、及び変数TMが、次のような値に設定される。
VM=48(時間)
PM=8(個)
TM=1200(秒)
【0111】
図4のステップ408において、Q=P1000及びH={⊥}として、手続きRUN(P1000,H)が実行される。プログラムイメージP1000の実行中に、実行位置がプラグマ801の位置に到達した場合、プラグマ801が示す3つ組p1は、1度も処理されていないので、E={16,8}から最初の部分集合E′が生成される。
【0112】
この場合、プラグマ801の次の行に記述された、ループを表すソースコード部分から特徴情報が抽出され、抽出された特徴情報と、パラメータ値“16”及びパラメータ値“8”の各々とが、判定器に入力される。そして、判定器は、各パラメータ値に基づくAC並列化を、プログラムイメージP1000に適用するか否かを判定する。パラメータ値“16”及びパラメータ値“8”の両方を適用すると判定された場合、E′={16,8}となる。
【0113】
この場合、H16={⊥,(5,parallel,16)}を含むリクエスト(P1000,H16)と、H8={⊥,(5,parallel,8)}を含むリクエスト(P1000,H8)とが、リクエストキューGに入力される。そして、2つのリクエスト各々が1つの葉ノードを持つまで、手続きRUN(P1000,H)は待ち状態となる。
【0114】
リクエストキューGは受け付け可能状態であるため、リクエスト(P1000,H8)がリクエストキューGに挿入される。また、実行中のプログラムイメージの個数は0個であるため、リクエスト(P1000,H8)がリクエストキューGから削除され、プログラムイメージP1000をコピーすることで、プログラムイメージP1001が生成される。そして、P1001及びヒストリH8を引数として、手続きRUN(P1001,H8)が実行される。
【0115】
プログラムイメージP1001の実行中に、実行位置がプラグマ701の位置に到達した場合、プラグマ701が示すチェックポイントc1が実行される。その結果、変数xの値の精度が許容範囲外であると判定された場合、H8={⊥,(5,parallel,8)}に相当するパスとして、次のようなノード及び辺が探索木Tに追加される。
(F21)根ノードBOT
(F22)ノード(p1,8)
(F23)根ノードBOTとノード(p1,8)を結ぶ辺
【0116】
さらに、実行の失敗を示す葉ノードERRORと、ノード(p1,8)と葉ノードERRORを結ぶ辺とが、探索木Tに追加される。
【0117】
リクエスト(P1000,H16)についても、リクエスト(P1000,H8)と同様に処理され、プログラムイメージP1000をコピーすることで、プログラムイメージP1002が生成されて、手続きRUN(P1002,H16)が実行される。
【0118】
プログラムイメージP1002の実行中に、実行位置がプラグマ701の位置に到達した場合、プラグマ701が示すチェックポイントc1が実行される。その結果、変数xの値の精度が許容範囲内であると判定された場合、プログラムイメージP1002が継続して実行され、プラグマ802及びプラグマ803の位置において、プログラムイメージがコピーされて、新たな手続きRUN(Qe,He)が実行される。そして、プラグマ702、プラグマ703、及びプラグマ704の位置において、チェックポイントc2、チェックポイントc3、及びチェックポイントc4がそれぞれ実行される。
【0119】
こうして、実行位置が実行文507に対応する終了点に到達し、その時点におけるヒストリHとして、{⊥,(5,parallel,16),(11,loop perforation,2),(21,precision,64)}が得られる。このとき、このヒストリHに相当するパスとして、以下のノード及び辺が探索木Tに追加される。
(F31)ノード(p1,16)
(F32)ノード(p2,2)
(F33)ノード(p3,64)
(F34)根ノードBOTとノード(p1,16)を結ぶ辺
(F35)ノード(p1,16)とノード(p2,2)を結ぶ辺
(F36)ノード(p2,2)とノード(p3,64)を結ぶ辺
【0120】
さらに、実行の成功を示す葉ノードOK(5.2,0.98)と、ノード(p3,64)と葉ノードOK(5.2,0.98)を結ぶ辺とが、探索木Tに追加される。葉ノードOK(5.2,0.98)は、u=5.2であり、r=0.98であることを示す。
【0121】
待ち状態であった手続きRUN(P1000,H)において、リクエストキューGに入力されたすべてのリクエストが探索木T上で葉ノードを持つ状態になったときに、次のパラメータ値を評価するために、新たな部分集合E′が生成される。しかし、3つ組p1の集合Eのすべてのパラメータ値が評価済みであり、未評価のパラメータ値が存在しないため、新たな部分集合E′は空集合になり、手続きRUN(P1000,H)の実行が終了する。こうして、タイマVの経過時間がVMを超えた後、実行中のすべてのプログラムイメージの実行が終了したとき、リクエストキューGの実行が終了する。
【0122】
図11は、リクエストキューGの実行が終了したときの探索木Tの例を示している。葉ノードOK(5.2,0.98)及び葉ノードOK(10.7,0.90)は、実行の成功を示す葉ノードである。葉ノードOK(5.2,0.98)の高速化率uは5.2であり、精度rは0.98である。一方、葉ノードOK(10.7,0.90)の高速化率uは10.7であり、精度rは0.90である。
【0123】
したがって、葉ノードOK(10.7,0.90)が示す処理結果の方が、葉ノードOK(5.2,0.98)が示す処理結果よりも、高速化の効果が高い。一方、葉ノードOK(5.2,0.98)が示す処理結果の方が、葉ノードOK(10.7,0.90)が示す処理結果よりも、演算精度の劣化が小さい。
【0124】
この場合、選択部314は、高速化の効果が最も高い葉ノードOK(10.7,0.90)を選択する。次に、選択部314は、その葉ノードから根ノードBOTまでノードを順に辿ることで、3つ組p1、p2、及びp3が示すAC技術のパラメータ値として、“16”、“2”、及び“32”をそれぞれ取得する。そして、選択部314は、3つ組p1、p2、及びp3が示すAC技術と、取得されたパラメータ値との組み合わせを、AC技術及びパラメータ値の最適な組み合わせに決定する。
【0125】
次に、選択部314は、AC技術及びパラメータ値の最適な組み合わせを調整用プログラムに適用することで、AC適用プログラム327を生成する。
【0126】
図12は、
図8の調整用プログラムから生成されたAC適用プログラム327の例を示している。
図12のAC適用プログラム327では、
図8のプラグマ801~プラグマ803が、プラグマ1201~プラグマ1203に置き換えられている。
【0127】
プラグマ1201は、第5行のAC並列化のパラメータ値が“16”であることを示し、プラグマ1202は、第11行のループパーフォレーションのパラメータ値が“2”であることを示す。プラグマ1203は、第21行のビット数削減のパラメータ値が“32”であることを示す。
【0128】
そして、選択部314は、
図11の探索木Tの各ノードから、実行に成功したパラメータ値及び実行に失敗したパラメータ値の情報を抽出して、学習用データ325に記録する。学習用データ325は、プログラム321とは別のプログラムにAC技術を適用する際に、判定器を生成する学習処理の入力データとして用いられる。探索木Tに含まれるパラメータ値及び実行の成否を学習することで、実行の成功率を向上させる判定器を生成することが可能になる。
【0129】
図13は、運用モードにおいて、
図3の情報処理装置301が行うAC適用処理の例を示すフローチャートである。まず、実行部313は、入力ファイル326を用いて、AC適用プログラム327のプログラムイメージを実行し(ステップ1301)、実行位置がAC技術の適用点に到達したか否かをチェックする(ステップ1302)。AC技術の適用点は、AC技術を適用することを示すプラグマが記述された位置を表す。
【0130】
実行位置がAC技術の適用点に到達した場合(ステップ1302,YES)、実行部313は、実行中のプログラムイメージをコピーして、バックアッププロセスのプログラムイメージを生成する(ステップ1303)。そして、実行部313は、バックアッププロセスを休止状態にする。
【0131】
次に、実行部313は、到達した適用点が新たなAC技術の適用点であるか否かをチェックする(ステップ1304)。新たなAC技術の適用点は、AC適用プログラム327の実行開始後に1度も適用されていないAC技術の適用点を表す。
【0132】
到達した適用点が新たなAC技術の適用点である場合(ステップ1304,YES)、実行部313は、AC適用プログラム327に記述されたパラメータ値を用いて、その適用点におけるAC技術をプログラムイメージに適用する。そして、実行部313は、プログラムイメージの実行を継続する。
【0133】
選択部314は、次のAC技術の適用点に到達する前に、1つ又は複数のチェックポイントの変数の値の精度を評価し(ステップ1306)、精度が許容範囲内であるか否かを判定する(ステップ1307)。精度が許容範囲内である場合(ステップ1307,YES)、情報処理装置301は、チェックポイントの位置以降の命令について、ステップ1301以降の処理を繰り返す。
【0134】
一方、精度が許容範囲外である場合(ステップ1307,NO)、実行部313は、実行中のプログラムイメージの実行を中止し、バックアッププロセスを休止状態から実行可能状態に移行させる(ステップ1308)。
【0135】
そして、選択部314は、探索木324に含まれるノードのうち、直前の適用点の3つ組pに対応するノードを参照して、より保守的なパラメータ値が存在するか否かをチェックする(ステップ1309)。より保守的なパラメータ値とは、直前の適用点において使用されたパラメータ値よりも、AC技術が適用される度合いが小さいパラメータ値を表す。
【0136】
参照されたいずれかのノードに、より保守的なパラメータ値が存在する場合(ステップ1309,YES)、選択部314は、そのノードからパラメータ値を取得して、変数sに設定する(ステップ1310)。そして、情報処理装置301は、直前の適用点に戻って、ステップ1303以降の処理を繰り返す。
【0137】
この場合、適用点は新たなAC技術の適用点ではないと判定され(ステップ1304,NO)、実行部313は、変数sに設定されたパラメータ値を用いて、その適用点におけるAC技術をプログラムイメージに適用する(ステップ1312)。ただし、変数sに設定されたパラメータ値がAC技術を適用しないことを示している場合、実行部313は、その適用点におけるAC技術をプログラムイメージに適用しない。そして、情報処理装置301は、ステップ1306以降の処理を行う。
【0138】
実行位置がAC技術の適用点に到達していない場合(ステップ1302,NO)、実行部313は、実行位置がAC適用プログラム327の終了点に到達したか否かをチェックする(ステップ1311)。実行位置が終了点に到達していない場合(ステップ1311,NO)、情報処理装置301は、ステップ1301以降の処理を繰り返し、実行位置が終了点に到達した場合(ステップ1311,YES)、処理を終了する。
【0139】
より保守的なパラメータ値が存在しない場合(ステップ1309,NO)、選択部314は、AC適用プログラム327の実行が失敗したと判定し(ステップ1313)、情報処理装置301は、処理を終了する。
【0140】
例えば、入力ファイル326に含まれる処理対象データによっては、
図12のプラグマ704の位置において、チェックポイントc4の変数resultの値の精度が許容範囲外になることがある。この場合、
図11の探索木Tに含まれるノードのうち、プラグマ1203が示す適用点の3つ組p3に対応するノード(p3,64)が参照され、プラグマ1203に記述されたパラメータ値“32”よりも保守的なパラメータ値“64”が取得される。
【0141】
ノード(p3,64)は、葉ノードOK(5.2,0.98)に到達する辺を持つため、パラメータ値“64”を用いることで、実行が成功する可能性がある。パラメータ値“64”はAC技術を適用しないことを示しているため、プラグマ1203が示すビット数削減を適用することなく、プラグマ1203の位置からAC適用プログラム327が再実行される。
【0142】
このように、調整モードにおいて生成された探索木Tを利用して、より保守的なパラメータ値を選択することで、運用モードにおける処理対象データに対して許容範囲外の精度が得られた場合であっても、実行が失敗する確率を低減することができる。
【0143】
図1の情報処理装置101及び
図3の情報処理装置301の構成は一例に過ぎず、情報処理装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、
図3の情報処理装置301が運用モードの動作を行わない場合は、出力部315を省略することができる。
【0144】
図2、
図4、
図9A、
図9B、
図10、及び
図13のフローチャートは一例に過ぎず、情報処理装置の構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、
図3の情報処理装置301が運用モードの動作を行わない場合は、
図13のAC適用処理を省略することができる。
【0145】
図9Bのステップ910において、生成部312は、判定器を用いることなく、集合Eから最初の部分集合E′を生成することも可能である。例えば、生成部312は、集合Eに含まれるパラメータ値eのうち、最小値、最大値、及び中央のパラメータ値からなる部分集合E′を生成してもよい。
【0146】
図5、
図7、
図8、及び
図12に示したプログラムは一例に過ぎず、プログラムは、情報処理装置301の用途又は条件に応じて変化する。
図6に示した許容精度情報323と
図11に示した探索木Tは一例に過ぎず、許容精度情報323及び探索木Tは、プログラムに応じて変化する。
【0147】
図14は、
図1の情報処理装置101及び
図3の情報処理装置301のハードウェア構成例を示している。
図14の情報処理装置は、CPU(Central Processing Unit)1401、メモリ1402、入力装置1403、出力装置1404、補助記憶装置1405、媒体駆動装置1406、及びネットワーク接続装置1407を含む。これらの構成要素はハードウェアであり、バス1408により互いに接続されている。
【0148】
メモリ1402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ1402は、
図1の記憶部111又は
図3の記憶部311として用いることができる。
【0149】
CPU1401(プロセッサ)は、例えば、メモリ1402を利用してプログラムを実行することにより、
図1の生成部112、実行部113、及び選択部114として動作する。CPU1401は、メモリ1402を利用してプログラムを実行することにより、
図3の生成部312、実行部313、及び選択部314としても動作する。
【0150】
入力装置1403は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置1404は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。処理結果は、AC適用プログラム327又は処理結果328であってもよい。出力装置1404は、
図3の出力部315として用いることができる。
【0151】
補助記憶装置1405は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置1405は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置1405にプログラム及びデータを格納しておき、それらをメモリ1402にロードして使用することができる。補助記憶装置1405は、
図1の記憶部111又は
図3の記憶部311として用いることができる。
【0152】
媒体駆動装置1406は、可搬型記録媒体1409を駆動し、その記録内容にアクセスする。可搬型記録媒体1409は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体1409は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体1409にプログラム及びデータを格納しておき、それらをメモリ1402にロードして使用することができる。
【0153】
このように、画像処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1402、補助記憶装置1405、又は可搬型記録媒体1409のような、物理的な(非一時的な)記録媒体である。
【0154】
ネットワーク接続装置1407は、LAN(Local Area Network)、WAN(Wide Area Network)等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置1407を介して受信し、それらをメモリ1402にロードして使用することができる。ネットワーク接続装置1407は、
図3の出力部315として用いることができる。
【0155】
なお、情報処理装置が
図14のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザとのインタフェースが不要な場合は、入力装置1403及び出力装置1404を省略してもよい。可搬型記録媒体1409又は通信ネットワークを使用しない場合は、媒体駆動装置1406又はネットワーク接続装置1407を省略してもよい。
【0156】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0157】
図1乃至
図14を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
プログラムを記憶する記憶部と、前記プログラムを実行するプロセッサとを有する情報処理装置であって、
前記プロセッサは、
前記プログラム中の第1位置において前記プログラムを簡略化して実行する、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、前記第1位置よりも後の第2位置において前記プログラムを簡略化して実行する、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成し、
前記第1位置において前記第1集合に含まれる複数の候補値それぞれに基づいて前記プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第1位置において生成された複数の実行結果に対する評価結果に基づいて、前記第1集合に含まれる複数の候補値のうち第1候補値を選択し、
前記第1位置において前記第1候補値に基づいて前記プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記第2集合に含まれる複数の候補値それぞれに基づいて前記プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第2位置において生成された複数の実行結果に対する評価結果に基づいて、前記第2集合に含まれる複数の候補値のうち第2候補値を選択する、
ことを特徴とする情報処理装置。
(付記2)
前記プロセッサは、前記第1集合に含まれる複数の候補値のうち、前記第1位置において生成された実行結果の精度が許容範囲内であることを示す評価結果を有する候補値を、前記第1候補値として選択することを特徴とする付記1記載の情報処理装置。
(付記3)
前記第1集合に含まれる複数の候補値のうち、前記第1候補値以外の第3候補値の評価結果が、前記第1位置において前記第3候補値に基づいて前記プログラムを簡略化して実行することで生成された実行結果の精度が許容範囲外であることを示す場合、前記プロセッサは、前記第1位置において前記第3候補値に基づいて前記プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記プログラムを簡略化して実行することを、抑止することを特徴とする付記2記載の情報処理装置。
(付記4)
前記記憶部は、前記プログラム中の複数の位置それぞれにおいて前記プログラムを簡略化して実行する、簡略化処理が適用される度合いを示すパラメータとして用いられた候補値を示すノードと、前記プログラムの高速化率を示す葉ノードとを含む探索木を、さらに記憶し、
前記プロセッサは、前記第1集合に含まれる複数の候補値のうち、前記探索木の第1葉ノードよりも高い高速化率を示す第2葉ノードに到達する辺を持つノードから派生する候補値を、前記第1葉ノードに到達する辺を持つノードから派生する候補値よりも優先的に用いることを特徴とする付記2又は3記載の情報処理装置。
(付記5)
前記探索木に含まれる葉ノードは、前記プログラムの処理結果の精度をさらに示し、
前記プロセッサは、前記第1集合に含まれる複数の候補値のうち、前記探索木の第3葉ノードよりも高い精度を示す第4葉ノードに到達する辺を持つノードから派生する候補値を、前記第3葉ノードに到達する辺を持つノードから派生する候補値よりも優先的に用いることを特徴とする付記4記載の情報処理装置。
(付記6)
前記プロセッサは、
前記第1集合に含まれる複数の候補値のうち、前記第1位置において生成された実行結果の精度が許容範囲内であることを示す評価結果を有する候補値の集合を、候補値の第3集合として前記記憶部に記憶させ、前記第1簡略化処理のパラメータに前記第1候補値を設定し、前記第2簡略化処理のパラメータに前記第2候補値を設定することで、簡略化された第1プログラムを生成し、
処理対象データを用いて前記第1プログラムを実行し、
前記第1位置において前記第1候補値に基づいて生成された実行結果の精度が許容範囲外である場合、前記第3集合に含まれる複数の候補値のうち、前記第1候補値以外の第4候補値を選択し、前記第1簡略化処理のパラメータに前記第4候補値を設定し、前記第2簡略化処理のパラメータに前記第2候補値を設定することで、簡略化された第2プログラムを生成し、
前記処理対象データを用いて前記第2プログラムを実行する、
ことを特徴とする付記2乃至5のいずれか1項に記載の情報処理装置。
(付記7)
前記第1簡略化処理及び前記第2簡略化処理の各々は、並列に実行される複数の処理の待ち合わせを途中で打ち切る処理、ループ処理の繰り返しの一部をスキップする処理、プログラムコードの一部をスキップする処理、又は変数のビット数を削減する処理であることを特徴とする付記1乃至6のいずれか1項に記載の情報処理装置。
(付記8)
対象プログラム中の第1位置において前記対象プログラムを簡略化して実行する、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、前記第1位置よりも後の第2位置において前記対象プログラムを簡略化して実行する、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成し、
前記第1位置において前記第1集合に含まれる複数の候補値それぞれに基づいて前記対象プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第1位置において生成された複数の実行結果に対する評価結果に基づいて、前記第1集合に含まれる複数の候補値のうち第1候補値を選択し、
前記第1位置において前記第1候補値に基づいて前記対象プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記第2集合に含まれる複数の候補値それぞれに基づいて前記対象プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第2位置において生成された複数の実行結果に対する評価結果に基づいて、前記第2集合に含まれる複数の候補値のうち第2候補値を選択する、
処理をコンピュータに実行させるための情報処理プログラム。
(付記9)
前記コンピュータは、前記第1集合に含まれる複数の候補値のうち、前記第1位置において生成された実行結果の精度が許容範囲内であることを示す評価結果を有する候補値を、前記第1候補値として選択することを特徴とする付記8記載の情報処理プログラム。
(付記10)
前記情報処理プログラムは、
前記第1集合に含まれる複数の候補値のうち、前記第1候補値以外の第3候補値の評価結果が、前記第1位置において前記第3候補値に基づいて前記対象プログラムを簡略化して実行することで生成された実行結果の精度が許容範囲外であることを示す場合、前記第1位置において前記第3候補値に基づいて前記対象プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記対象プログラムを簡略化して実行することを、抑止する処理を、
前記コンピュータにさらに実行させることを特徴とする付記9記載の情報処理プログラム。
(付記11)
前記情報処理プログラムは、
前記対象プログラム中の複数の位置それぞれにおいて前記対象プログラムを簡略化して実行する、簡略化処理が適用される度合いを示すパラメータとして用いられた候補値を示すノードと、前記プログラムの高速化率を示す葉ノードとを含む探索木を生成し、
前記第1集合に含まれる複数の候補値のうち、前記探索木の第1葉ノードよりも高い高速化率を示す第2葉ノードに到達する辺を持つノードから派生する候補値を、前記第1葉ノードに到達する辺を持つノードから派生する候補値よりも優先的に用いる処理を、
前記コンピュータにさらに実行させることを特徴とする付記9又は10記載の情報処理プログラム。
(付記12)
コンピュータによって実行される情報処理方法であって、
前記コンピュータが、
対象プログラム中の第1位置において前記対象プログラムを簡略化して実行する、第1簡略化処理が適用される度合いを示すパラメータに対する候補値の第1集合と、前記第1位置よりも後の第2位置において前記対象プログラムを簡略化して実行する、第2簡略化処理が適用される度合いを示すパラメータに対する候補値の第2集合とを生成し、
前記第1位置において前記第1集合に含まれる複数の候補値それぞれに基づいて前記対象プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第1位置において生成された複数の実行結果に対する評価結果に基づいて、前記第1集合に含まれる複数の候補値のうち第1候補値を選択し、
前記第1位置において前記第1候補値に基づいて前記対象プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記第2集合に含まれる複数の候補値それぞれに基づいて前記対象プログラムを簡略化して実行することで、複数の実行結果を生成し、
前記第2位置において生成された複数の実行結果に対する評価結果に基づいて、前記第2集合に含まれる複数の候補値のうち第2候補値を選択する、
ことを特徴とする情報処理方法。
(付記13)
前記コンピュータは、前記第1集合に含まれる複数の候補値のうち、前記第1位置において生成された実行結果の精度が許容範囲内であることを示す評価結果を有する候補値を、前記第1候補値として選択することを特徴とする付記12記載の情報処理方法。
(付記14)
前記コンピュータは、前記第1集合に含まれる複数の候補値のうち、前記第1候補値以外の第3候補値の評価結果が、前記第1位置において前記第3候補値に基づいて前記対象プログラムを簡略化して実行することで生成された実行結果の精度が許容範囲外であることを示す場合、前記第1位置において前記第3候補値に基づいて前記対象プログラムを簡略化して実行することで生成された実行結果を用いて、前記第2位置において前記対象プログラムを簡略化して実行することを、抑止することを特徴とする付記13記載の情報処理方法。
(付記15)
前記コンピュータは、
前記対象プログラム中の複数の位置それぞれにおいて前記対象プログラムを簡略化して実行する、簡略化処理が適用される度合いを示すパラメータとして用いられた候補値を示すノードと、前記プログラムの高速化率を示す葉ノードとを含む探索木を生成し、
前記第1集合に含まれる複数の候補値のうち、前記探索木の第1葉ノードよりも高い高速化率を示す第2葉ノードに到達する辺を持つノードから派生する候補値を、前記第1葉ノードに到達する辺を持つノードから派生する候補値よりも優先的に用いることを特徴とする付記12又は13記載の情報処理方法。
【符号の説明】
【0158】
101、301 情報処理装置
111、311 記憶部
112、312 生成部
113、313 実行部
114、314 選択部
315 出力部
121、321 プログラム
322、326 入力ファイル
323 許容精度情報
324 探索木
325 学習用データ
327 AC適用プログラム
328 処理結果
501、502 宣言文
503~507 実行文
701~704、801~803、1201~1203 プラグマ
1401 CPU
1402 メモリ
1403 入力装置
1404 出力装置
1405 補助記憶装置
1406 媒体駆動装置
1407 ネットワーク接続装置
1408 バス
1409 可搬型記録媒体