(57)【要約】【課題】  見積もり対象とするプログラムの処理内容を深く理解することなく、当該プログラムを実行する際のプロセッサの統計量や実行時間を高精度で推定することができる統計量推定装置を提供する。【解決手段】  統計量推定装置は、実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、データ数ごと、およびプログラムを構成する部分処理ごとに、当該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行部と、小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、当該部分処理統計量が算出される際のデータ数に基づき、実行予定のデータ数でプログラムの全体が実行される際のプロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成部と、を備えた。【選択図】図１
2010061417.tif 000002
【特許請求の範囲】
【請求項１】
実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行部と、
前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成部と、
を備える統計量推定装置。
【請求項２】
請求項１に記載の統計量推定装置において、さらに、
前記数式作成部によって作成された数式に基づき、前記実行予定のデータ数で前記プログラムを実行した場合の実行推定時間を算出する推定時間算出部を備えることを特徴とする統計量推定装置。
【請求項３】
請求項１に記載の統計量推定装置において、
前記数式作成部は、
前記小規模データ実行部にて算出された部分処理統計量と前記データ数とに基づき、回帰分析を行うためのモデル数式の係数を部分処理ごとに算出し、算出された係数をモデル数式に設定することで回帰式を部分処理ごとに作成する回帰式作成部と、
前記回帰式作成部によって作成された部分処理ごとの回帰式を合算することで前記数式を作成する回帰式合算部と、
を備えることを特徴とする統計量推定装置。
【請求項４】
請求項３に記載の統計量推定装置において、
前記回帰式作成部は、さらに、予め定義された複数のモデル数式から最も適したモデル数式を部分処理ごとに選択し、選択したモデル数式を該部分処理のモデル数式とすることを特徴とする統計量推定装置。
【請求項５】
請求項４に記載の統計量推定装置において、
前記回帰式作成部は、部分処理に対し複数のモデル数式それぞれの決定係数を算出し、算出された決定係数に基づき、該部分処理に最も適したモデル数式を選択することを特徴とする統計量推定装置。
【請求項６】
請求項１に記載の統計量推定装置において、
前記小規模データ実行部、および前記数式作成部は、前記プログラムを構成するサブルーチンによって分割される命令実行区間を部分処理とすることを特徴とする統計量推定装置。
【請求項７】
請求項６に記載の統計量推定装置において、
前記小規模データ実行部は、前記命令実行区間において、サブルーチンの呼び出し深さを判断し、呼び出し深さが所定の深さ以下である命令実行区間のみを部分処理とすることを特徴とする統計量推定装置。
【請求項８】
請求項１に記載の統計量推定装置において、
前記小規模データ実行部、および前記数式作成部は、プロセッサによる実行命令数を所定の統計量とすることを特徴とする統計量推定装置。
【請求項９】
実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行ステップと、
前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成ステップと、
をコンピュータに実行させる統計量推定プログラム。
【請求項１０】
実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行ステップと、
前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成ステップと、
を実行する統計量推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータによって実行されるプログラムの実行時間を推定する統計量推定装置、統計量推定プログラム、統計量推定方法に関する。
【背景技術】
【０００２】
実行時間の長いコンピュータプログラムを実行する場合には、その実行時間を予め見積もることが望まれる。例えばバッチジョブ管理システムを用いる場合、投入するジョブの実行時間に応じて、適切なジョブキューを利用者が選択することを要求されるケースがある。
【０００３】
このようにプログラムの実行時間を見積もりたい場合、実行時間を推定するためのモデルを作成し、当該モデルに実行条件を与えて、実行時間を見積もる方法がある。特に、実行時間が長く、見積もりたい実行条件に類似した過去の実行例が存在しない場合には、このように実行時間推定モデルを用いる方法が必要となる。
【０００４】
尚、本発明の関連ある従来技術として、ベンチマークプログラムのセットに基づいてターゲットプロセッサのモデルを準備し、推定されるソフトウェアとベンチマークプログラムとを相関させ、相関されたソフトウェアをモデルに適用し、ソフトウェアの実行時間の推定値を判定する推定方法が開示されている。
【特許文献１】特表２００４−５３０１９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、実行時間推定モデルを作成するために、対象とするプログラムの処理内容を詳細に理解し把握しようとすると、その作業には少なからぬ労力が掛かる。特に他者が作成したプログラムの場合には、その労力は多大であり、そのコストを無視することはできない。
【０００６】
また、対象とするプログラムで用いられているアルゴリズムが定性的に明らかな場合であっても、実際の実行時間が定量的にどうなるかに関しては一般に定かではない。
【０００７】
そのため、対象とするプログラムの処理内容を深く理解することなく実行時間推定モデルを作成し、指定した実行条件に対する実行時間を容易にかつ精度よく見積もることができる技術の実現が望まれる。
【０００８】
本発明は上述した問題点を解決するためになされたものであり、見積もり対象とするプログラムの処理内容を深く理解することなく、例えばプロセッサの実行命令数等、当該プログラムを実行するプロセッサの統計量を精度高く推定することができる統計量推定装置、統計量推定プログラム、統計量推定方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
統計量推定装置は、実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行部と、前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成部と、を備える。
【００１０】
統計量推定プログラムは、実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行ステップと、前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成ステップと、をコンピュータに実行させる。
【００１１】
統計量推定方法は、実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行ステップと、前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成ステップと、を実行する。
【発明の効果】
【００１２】
見積もり対象とするプログラムの処理内容を深く理解することなく、当該プログラムを実行する際のプロセッサの統計量や実行時間を高精度に推定することができる。
【発明を実施するための最良の形態】
【００１３】
本実施の形態では、対象とするコンピュータプログラムの種類として特に科学技術計算分野のものを想定し、特に、密行列連立一次方程式の解を求めるプログラムを実行時間推定対象のプログラムとして説明する。また、プログラムの実行時間が、例えばパラメータとして入力される項目の数、入力されるデータのバイト数等の入力データ量等、限られた数のパラメータによっておおよそ見積もれる場合を対象とする。さらに、本実施の形態によるプログラムでは、短時間のプログラム実行であれば、小規模データによるプログラム実行を複数回行うことが認められるものとする。
【００１４】
本実施の形態では、上記想定のもとで、小規模データによるプログラム実行における統計データから、大規模データによるプログラム実行の実行時間を推定する。
【００１５】
本実施の形態では具体的には、例えば入力データ量Ｎ＝１００、２００、および３００といった複数の異なる実行条件で、対象とするプログラムを複数パターン実行する。その際、プログラムを構成する部分処理毎に、コンピュータハードウェアによって計測可能な、実行命令数などの論理的な統計量を測定する。ここで測定される実行命令数などの論理的な統計量は、ナノ秒オーダの、現実の経過時間測定値と比べて極めて分解能が高く、かつ、同一の実行条件下であれば、現実の経過時間測定値と比べて再現性が高い、という測定精度面での利点を持つ。
【００１６】
そこでこの論理的な統計量を、プログラムを構成する部分処理毎に回帰分析し、α×Ｎ＋β、α×Ｎ2＋β×Ｎ＋γ、α×log(Ｎ)＋βなどの単純なモデル数式に基づき回帰式を求める。このとき、回帰分析される単位となる部分処理には、サブルーチンや、ＦＯＲ文による繰り返し処理を設定する。このような部分処理は、実行命令数などの論理的な統計量を容易にモデル化できるように適度に細分化されたものであるとする。その結果、サブルーチンやＦＯＲ文による繰り返し処理の単位で精度の高い統計量のモデル化が行われ、さらにモデル化された部分処理毎の統計量を合算することで、プログラム全体としても精度の高い統計量を算出することができる数式を作成する。
【００１７】
このようにして作成された実行時間推定モデルに対して、例えばデータ量Ｎ＝10000のような、見積もりたい実行条件に対応するパラメータを指定することによって、小規模データ時の統計データから、大規模データ時の実行時間を見積もることができる。
【００１８】
（実施の形態１）
実施の形態におけるプログラム実行時間推定装置を図１に示す。プログラム実行時間推定装置１（統計量推定装置）は、小規模データ実行部２、数式作成部３、時間推定部４（推定時間算出部）を備える。
【００１９】
小規模データ実行部２は、実行予定の入力データ量つまりデータ数よりも少ない小規模のデータを用いて実行時間推定対象のプログラムを複数パターン実行させ、小規模データごとに、サブルーチン、つまり部分処理ごとのプロセッサの実行命令数つまり部分処理統計量を算出する。
【００２０】
数式作成部３は、小規模データ実行部２によって算出されたサブルーチンごとの実行命令数と、当該実行命令数が算出される際の入力データ量とに基づき、実行予定の入力データ量で実行時間推定対象のプログラムの全体が実行される際のプロセッサの実行命令数、つまり全体統計量を算出するための数式を作成する。
【００２１】
時間推定部４は、数式作成部３によって作成された数式に基づき、実行予定の規模のデータで実行時間推定対象のプログラムを実行した場合の実行推定時間を算出する。
【００２２】
数式作成部３は、その内部に推定モデル作成部１１（回帰式作成部）、推定モデル合成部１２（回帰式合算部）を備える。
【００２３】
推定モデル作成部１１は、小規模データ実行部２にて算出されたサブルーチンごとの実行命令数と入力データ量とに基づき、回帰分析を行うためのモデル数式の係数をサブルーチンごとに算出する。また推定モデル作成部１１は、算出された係数をモデル数式に設定することで回帰式、即ち推定モデルをサブルーチンごとに作成する。
【００２４】
推定モデル合成部１２は、推定モデル作成部１１によって作成されたサブルーチンごとの回帰式を合算することで、上述の数式を作成する。
【００２５】
尚、上述の各ユニットは、プログラム実行時間推定装置１内に備えられたＣＰＵ、メモリ等のハードウェア資源が、不揮発性な記憶装置に予め記憶されたプログラムを実行することで実現される。
【００２６】
次に、実施の形態１におけるプログラム実行時間推定装置１の動作について説明する。尚、実行時間推定対象のプログラムは、上述通り密行列連立一次方程式の解を求めるプログラムとしているが、プログラムは実行開始時に入力される入力データ量を示すパラメータである問題サイズＮによって、その実行時間が変化する。図２（ａ）に、問題サイズＮに1000から10000を指定した場合のプログラムの実行時間実測値の一例を示す。図２の例では、Ｎの値が増加するほど、実行時間も増加する。
【００２７】
ここで、例えばＮ＝10000の場合の実行時間を見積もりたい状況を想定する。この場合、Ｎ＝1000からＮ＝5000の場合の実行時間の実測値を用いて、モデル数式を例えばα×Ｎ3＋β×Ｎ2＋γ×Ｎ＋δとした回帰分析を行い、モデル数式の係数を算出する。上記の例では、モデル数式の各係数はα＝1.66667E-10、β＝-8.92857E-07、γ＝0.002840476、δ＝-1.96となる。求められた係数を上記のモデル数式に代入した式を用いることによって、問題サイズＮに対する実行時間の推定値を得ることができる。そこで、求められた係数と数式を用いてＮ＝6000からＮ＝10000の場合の実行時間を推定すると、図２（ｂ）に示した「実行時間推定値」のようになる。図２（ｂ）は、問題サイズＮにおける、上述の数式を用いて算出した実行時間推定値、実行時間実測値、および実行時間推定値と実行時間実測値の誤差である推定誤差を示している。Ｎ＝10000の場合には推定誤差が+33.28%となる。
【００２８】
そこで、実施の形態１では、プログラムの実行バイナリに対して改変処理を行い、プログラムの実行に関する論理的な統計量を計測する。図３（ａ）に改変前のプログラムの一部、図３（ｂ）に改変後のプログラムの一部を示す。尚、図３（ｂ）では改変箇所を下線で示している。図３の例に示すように、メインプログラムおよびそこから呼び出される数学ライブラリ内のすべてのサブルーチンにおいて、コンピュータハードウェアによって計測された実行命令数の値を採取しログ出力する機能を有するrecord＿num＿of＿retired＿instruction関数を、サブルーチン先頭およびサブルーチン末尾に追加する。
【００２９】
このような改変処理を行った結果、改変プログラムを実行すると、図４に示すように命令アドレスと実行命令累積数とが対応したログ出力が得られる。尚、図４で示した例は問題サイズＮを100としている。ここで「実行命令累積数」は改変プログラムの実行開始時点からプロセッサが実行した命令の累積数を、「命令アドレス」は実行命令累積数を計測した時点の、実行バイナリにおける命令アドレスをそれぞれ表す。尚、図４では参考として関数名と、各関数の呼び出し／復帰の種別を示している。
【００３０】
図４のログ出力に対して、隣り合う２行同士で実行命令累積数の差を取って命令実行区間当たりの実行命令数を求めると、図５のように集計できる。ここで「命令実行区間開始アドレス」は図４における先行する行の命令アドレスを、「命令実行区間終了アドレス」は図４における後続の行の命令アドレスを、「区間内実行命令数」は「命令実行区間開始アドレス」と「命令実行区間終了アドレス」とで示される命令実行区間における実行命令数、つまり「命令実行区間終了アドレス」における「実行命令累積数」と「命令実行区間開始アドレス」における「実効命令累積数」との差分をそれぞれ表す。尚、図４、図５は膨大な量であるため中略箇所があることに留意する。
【００３１】
さらに図５で示した集計結果を、命令実行区間開始アドレスと命令実行区間終了アドレスの組を単位として累積させると、図６のように集計できる。ここで「区間実行回数」は命令実行区間開始アドレスと命令実行区間終了アドレスの組として示される命令実行区間が実行された回数を、「区間内合計実行命令数」つまり部分処理統計量は当該命令実行区間における実行命令数の合計値を、それぞれ表す。尚、図５にて示した集計と図６の集計とでは、アドレス値および集計値で差異があるが、この差異は図５に中略箇所があることによる。
【００３２】
そこで、問題サイズのパラメータＮを50、100、200、400、800と変化させながら改変プログラムを実行し、同様に各問題サイズＮについて区間内合計実行命令数を集計すると図７の結果を得ることができる。尚、実施の形態１における小規模データ実行部２は、ここまでに示した動作に則して図７の結果を得るための処理を行う。
【００３３】
さらに図７にて示した表の各命令実行区間に対して、区間内合計実行命令数を用いて、各問題サイズＮに対応した区間内合計実行命令数ごとに回帰分析を行い、ユーザにて任意に定義されたモデル数式、例えばα×Ｎ3＋β×Ｎ2＋γ×Ｎ＋δの形のモデル数式における、α、β、γ、δの各係数の値および決定係数(Ｒ2値)を求めるとともに、求められた係数と問題サイズＮとを用いてモデル数式により区間内合計実行命令数の推定値を求めると、図８の値が得られる。なお「決定係数」は、モデル数式による区間内合計実行命令数の推定値と、モデル数式を作成するために用いた実際の区間内合計実行命令数との間のズレの程度を表し、１に近ければズレが小さく、０に近ければズレが大きいことを表す。そのため、「決定係数」が１より大きく離れている場合には、上述のモデル数式の形が不適当であり、他の形のモデル数式を適用する必要がある。尚、実施の形態１における推定モデル作成部１１は、図８の結果を得るまでの上述処理を行い、α、β、γ、δの各係数をモデル数式に設定する。
【００３４】
ここで、図８に示された表の命令実行区間毎の各係数の値を合算すると、プログラム全体の実行命令数つまり全体統計量を推定する以下の数式を得ることができる。
0.598217909×Ｎ3＋1566.910443×Ｎ2＋29580.41737×Ｎ＋2378870.833
(Ｎ: 問題サイズ)
尚、推定モデル合成部１２は、この数式を算出するために、各係数を合算することで合成処理を実施する。
【００３５】
この推定モデル合成部１２の合成処理によって得られた数式を用いてＮ＝1000〜10000の場合のプログラム全体の実行命令数を推定すると図９の結果が得られる。なお、図９には参考として、各問題サイズＮにおける実行命令数の実測値も示されている。この結果を見ると、Ｎ＝1000の場合には実行命令数推定値と実行命令数実測値との推定誤差が＋184.19％と極めて大きいが、問題サイズＮが大きくなるのに伴って推定誤差は小さくなり、Ｎ=10000の場合には＋23.26％まで改善される。以上をまとめると、問題サイズのパラメータＮを高々800までの範囲で変化させながら、推定対象のプログラムをＮ＝50,100,200,400,800とした計５回実行するだけで、Ｎ＝10000の場合のプログラムの実行命令数つまり処理量を誤差23%程度で推定することができる。５回のプログラム実行に要する時間は合計で1秒以下であり、Ｎ＝10000の場合のプログラム実行時間77.9秒と比較すると、推定に必要となる実行時間は極めて短いと言える。
【００３６】
数式作成部３の推定モデル合成部１２によって算出されたモデル数式に基づき、時間推定部４は、プログラム全体の実行推定時間を求める。ここで、実行時間の推定対象としているコンピュータのプロセッサは、図１０のハードウェア仕様に示した通りのものとする。すなわち、実行時間の推定対象となるプロセッサの単位時間当たりの処理量、すなわち１秒あたりの最大実行命令数は106.4億命令となる。
【００３７】
時間推定部４は、数式作成部３によって算出されたモデル数式に実行予定の問題サイズＮを代入することで見積もられるプログラム全体の実行命令数を、１秒あたりの最大実行命令数で除算することによって推定実行時間を得る。例えばＮ＝1000〜10000の場合について推定実行時間を求めると、図１１の結果が得られる。図１１には、各問題サイズＮに対するプログラム実行時間の実測値も示されている。図１１の結果では、-25.99%〜-63.66%の推定誤差が生じているが、実行時間の推定にあたってはハードウェア仕様で規定される１秒あたりの最大実行命令数の値を用いているため、実際の実行時間は上述の推定実行時間を下回らないものと予測できる。
【００３８】
次に、実施の形態１のプログラム実行時間推定装置１の動作について、図１２を参照しつつ説明する。
【００３９】
小規模データ実行部２は、予め複数定義された小規模のデータをパラメータとして、複数の小規模のデータごとに実行時間推定対象のプログラムを複数パターン実行する（Ｓ１）。ここで、小規模データ実行部２は、サブルーチン毎の実行命令数を算出する。
【００４０】
数式作成部３は、小規模データ実行部２によって算出されたサブルーチンごとの実行命令数と、実行命令数が算出される際の小規模のデータとに基づき、実行予定の規模データで実行時間推定対象のプログラムの全体が実行される際のプロセッサの実行命令数を算出するための数式を作成する（Ｓ２、Ｓ３）。
【００４１】
具体的には、推定モデル作成部１１が小規模の入力データ量である問題サイズＮを説明変数として、実行命令数に基づき回帰分析を行うことで、予め定義されたモデル数式の係数をサブルーチン毎に算出し、当該モデル数式に算出した係数を設定することでサブルーチン毎の回帰式を作成する（Ｓ２）。その後、推定モデル合成部１２は、サブルーチンごとの回帰式を、各係数を合算することで合成し、実行予定の規模データで実行時間推定対象のプログラムの全体が実行される際のプロセッサの実行命令数を算出するための回帰式を作成する（Ｓ３）。
【００４２】
時間推定部４は、数式作成部３によって作成された数式、単位時間当たりの実行命令数、および実行予定の規模のデータ等の推定したい実行条件を取得し、実行予定の規模のデータで実行時間推定対象のプログラムを実行した場合の実行推定時間を算出する（Ｓ４）。
【００４３】
（実施の形態２）
実施の形態１では、α×Ｎ3＋β×Ｎ2＋γ×Ｎ＋δをモデル数式の一例とし、使用するモデル数式は当該モデル数式のみであるものとして説明したが、複数のモデル数式を予め定義し、サブルーチン毎にモデル数式を選択可能にする方がより精度の高い結果を得ることができる場合がある。実施の形態２では、実施の形態１の数式作成部３にさらにモデル数式選択機能を付与したプログラム実行時間推定装置について説明する。
【００４４】
実施の形態２におけるプログラム実行時間推定装置は、図１と同様の構成である。実施の形態２におけるプログラム実行時間推定装置１の推定モデル作成部１１は、さらに、予め回帰式のモデルとして定義された複数のモデル数式からサブルーチンに最も適したモデル数式をサブルーチンごとに選択する。また推定モデル作成部１１は、選択された数式モデルの係数をサブルーチンごとに算出することで、区間内合計実行命令数を実行予定の規模データから算出する回帰式をサブルーチンごとに作成する。尚、実施の形態２におけるその他のユニットは、実施の形態１と同様であるためここでの説明を割愛する。
【００４５】
次に、実施の形態２におけるプログラム実行時間推定装置１の処理の動作について、図１３を参照しつつ説明する。例えば、実行時間推定対象のプログラムが初期化サブルーチン、データ入力サブルーチン１、データ入力サブルーチン２、演算サブルーチン、データ出力サブルーチン、終了処理サブルーチンによって構成されているとする。ここで、入力データ量Ｎ＝１００で当該プログラムが実行された場合、プロセッサが実行する実行命令数が初期化サブルーチンでは８００ステップ、データ入力サブルーチン１では１５００ステップ、データ入力サブルーチン２では８００ステップ、演算サブルーチンでは９００ステップ、データ出力サブルーチンでは８００ステップ、終了処理サブルーチンでは６００ステップとなったとする。
【００４６】
次に、入力データ量Ｎ＝２００で当該プログラムが実行された場合、命令実行数は初期化サブルーチンでは８００ステップ、データ入力サブルーチン１では６０００ステップ等、図１３のＮ＝２００の欄にて示した通りとなったとする。入力データ量Ｎ＝３００でも同様に、サブルーチン毎の実行命令数が図１３のＮ＝３００の欄にて示した通りであるとする。
【００４７】
ここで、推定モデル作成部１１は、各入力データ量について求められた各サブルーチンの実行命令数に基づき、サブルーチン毎にデータ量Ｎによる実行命令数推定のためのモデル化を行う。モデル化は、予め定義された複数のモデル数式から、最も適したモデル数式をサブルーチンごとに選択し、モデル数式の係数を算出する処理を指す。
【００４８】
例えば初期化サブルーチンの実行命令数はデータ量Ｎに関係なく８００ステップであるため「８００」とモデル化され、データ入力サブルーチン１の実行命令数は、Ｎ＝１００、Ｎ＝２００およびＮ＝３００による実行結果に基づいて「０．１５×Ｎ2」とモデル化される。その他のサブルーチンの実行命令数に関しても同様に図１３の「モデル化」の欄で示した様にモデル化される。尚、これら「８００」、「０．１５×Ｎ2」等の数式を以降、実行命令数推定モデルと称す。
【００４９】
推定モデル合成部１２は、サブルーチン毎に求められた実行命令数推定モデルを合算し、合成モデルを作成する。図１３の例では、各サブルーチンの実行命令数推定モデルそれぞれを合算することで、「０．２４×Ｎ2＋１６×Ｎ＋１４００」の合成モデルを作成する。
【００５０】
時間推定部４は、作成された合成モデルに実際に実行する入力データ量を代入することで総実行命令数を取得し、プロセッサの性能等を考慮し命令実行の推定時間を得る。
【００５１】
実施の形態１では、回帰分析に用いるモデル数式の形をα×Ｎ3＋β×Ｎ2＋γ×Ｎ＋δとしたが、ここで実施の形態２における、他の形のモデル数式も候補として検討する処理について説明する。
【００５２】
実施の形態１において、モデル数式α×Ｎ3＋β×Ｎ2＋γ×Ｎ＋δの演算結果でＮの数値変更に最も影響を与える係数は、Ｎ3の項の係数であるαである。ここで、実施の形態１における係数αが最も大きい命令実行区間であった、命令実行区間開始アドレスが0x2a95c7255c、命令実行区間終了アドレスが0x2a95ba2fbcの命令実行区間を例に取り上げる。この命令実行区間に関して、Ｎ＝100〜1000の場合の各々の区間内合計実行命令数を求めた場合、例えば図１４のようになったとする。
【００５３】
ここで、複数の形のモデル数式を候補として、回帰分析を行うと、各々の形のモデル数式に対して図１５のようにモデル係数の係数αおよび決定係数が求まる。決定係数が１に近ければ近いほど、モデル数式による実行命令数の推定値と、モデル数式の作成に用いた実際の実行命令数との値のズレが小さいため、図１５の例ではα×Ｎ3＋β×Ｎ2＋γ×Ｎ＋δの形のモデル数式を選択するのが最適であると判断できる。尚、モデル数式の各候補は係数αが数式上最も影響を与える係数として設定されているものとし、よって、実施の形態２では係数αを求めることとする。
【００５４】
このように、回帰分析に用いるモデル数式の形として、プログラムの処理量を表すのに適当と考えられる複数の候補を用意し、推定モデル作成部１１は、それぞれの形のモデル数式に対して算出される決定係数の値を比較することによって、最も適当なモデル数式の形を選択する。
【００５５】
（実施の形態３）
実施の形態２では、命令実行区間毎の区間内合計実行命令数に基づきモデル数式を選択する手法を記したが、実施の形態３では、命令実行区間毎の区間実行回数と、命令実行区間の１回の実行当たりの平均実行命令数とを求め、求めた区間実行回数と平均実行命令数とに対してそれぞれ独立して回帰分析することで、モデル数式を選択する方法について説明する。尚、実施の形態３にて説明する機能は、推定モデル作成部１１に実装されるものとする。
【００５６】
実施の形態２で例示した命令実行区間について、問題サイズＮにおける上述実施の形態１の図６を参照することで言及した区間実行回数と、当該命令実行区間の１回の実行当たりの平均実行命令数である区間内平均実行命令数とを求めると、一例として図１６のようになる。
【００５７】
ここで、区間実行回数および区間内平均実行命令数のそれぞれについて、複数の形のモデル数式を候補として回帰分析を行うと、各々の形のモデル数式に対して図１７のように決定係数と係数αが、区間実行回数と区間内平均実行命令数とのそれぞれに対して求まる。
【００５８】
その結果、区間実行回数および区間内平均実行命令数のそれぞれについて決定係数が１に最も近いものを選ぶことによってモデル数式の形を選択すると、両者共にα×Ｎ3＋β×Ｎ2＋γ×Ｎ＋δの形が選択される。しかしこのとき、対応する係数αの値を参照すると、1.1655E-09や-2.42726E-06のように極めて小さい値となっており、オーバーフィッティングの状況であることが分かる。そこで選択されたモデル数式の次数を下げ、係数αが極めて小さい値であるモデル数式を除去することによってオーバーフィッティングの状態を解消すると、最終的に、区間実行回数にはα×Ｎ＋βの形、区間内平均実行命令数にはα×Ｎ2＋β×Ｎ＋γの形のモデル数式が選択される。
【００５９】
このように、区間実行回数と区間内平均実行命令数に基づいて、モデル数式を選択することで、モデル数式をより確からしく推定することができる。
【００６０】
（実施の形態４）
上述の実施の形態１、２、３では、命令実行区間毎に回帰分析を行って求めたモデル数式を単純に合算することで、当該プログラム全体の実行命令数を推定する数式を作成した。しかしこの方法では、以下のような問題が生じる可能性がある。
・命令実行区間毎のモデル数式に混入したモデル誤差が蓄積し、全体の実行命令数を推定するモデル数式のモデル誤差が大きくなる。
・実行命令累積数を計測するために行ったプログラムの改変処理によって、命令実行区間毎に集計した区間内合計実行命令数に計測誤差が含まれ、全体の実行命令数を推定するモデル数式でモデル誤差が顕在化する。
【００６１】
そこで、実施の形態４では、プログラム全体の実行命令数を推定する合成モデルを導出した後に、プログラム実行時間推定装置１はさらにα×Ｎ3＋β×Ｎ2＋γ×N＋δのようなモデル数式の形を改めて特定する。その後プログラム実行時間推定装置１は、例えば図１８のように計測された、改変処理を行っていない実行バイナリの全体実行命令数に対して、特定されたモデル数式を用いて回帰分析を行う。
【００６２】
その結果、α=0.596712006、β=166.5791458、γ=7797.475833、δ=2318192.952のようにモデル数式の各係数が求まり、このモデル数式を用いてＮ=1000〜10000の場合の当該プログラム全体の実行命令数を推定すると図１９の結果が得られる。なお、図１９の例では各問題サイズＮについて実行命令数の実測値も示されている。
【００６３】
この結果を見ると、図１９では実行命令数の推定値と実行命令数の実測値との誤差である推定誤差は0.2％未満であり、図９にて示した結果よりも極めて高い精度でプログラム全体の処理量を推定できていると言える。
【００６４】
（実施の形態５）
実施の形態１における時間推定部４は、単位時間当たりの処理量をコンピュータのハードウェア仕様から求めたが、実施の形態５における時間推定部４は、単位時間当たりの処理量を実際の測定値から求める。
【００６５】
時間推定部４は、例えば、実行時間の推定対象とするプログラムを最初から５秒間だけ実行し、５秒経過時点におけるプロセッサの内部クロックの１クロックあたりの平均実行命令数を計測し、その結果から１秒あたりの平均実行命令数を問題サイズごとに算出する。図２０(ａ)に、問題サイズごとの１クロック当りの平均実行命令数および１秒当りの平均実行命令数の一例を示す。
【００６６】
そこで、実施の形態５では、実施の形態１と同様に、モデル数式によって見積もられるプログラム全体の実行命令数を、１秒あたりの平均実行命令数で除算すると、命令の推定実行時間が図２０（ｂ）のように求められる。図２０（ｂ）の結果を見ると、推定実行時間と実行時間の実測値との誤差である推定誤差は最大で８％未満であり、高い精度でプログラムの実行時間を推定できていると言える。
【００６７】
（実施の形態６）
実施の形態５では、推定対象のプログラムを最初から５秒間だけ実行することによって、１秒あたりの平均実行命令数を算出した。しかしこの方法では、具体的にどれくらいの時間だけ実行すれば、平均実行命令数を適切に求められるかが自明ではない。
【００６８】
一方で、ある１つのサブルーチンの処理量が、プログラム全体の処理量に対して例えば９５％程度である等、特定サブルーチンが支配的な割合を占める場合には、当該サブルーチンにおける１秒あたりの平均実行命令数を、プログラム全体に対して適用しても妥当な値であると見なすことができる。
【００６９】
そこでそのような場合に、プログラム実行時間推定装置１の数式作成部３は、支配的な割合を占めるサブルーチンの１秒あたりの平均実行命令数を、部分的、すなわち計測結果が十分安定する回数だけ測定し、その結果をプログラム全体に対する１秒あたりの平均実行命令数と見なす。こうすることによって、１秒あたりの平均実行命令数の推定に関して、推定結果の精度と推定のための実行コストの間のトレードオフを明快に検討することができる。
【００７０】
（実施の形態７）
実施の形態６では、プログラム全体の処理量に対して支配的な割合を占める部分処理がただ１つである場合について述べた。さらにここでは、プログラム全体の実行命令数に強く影響するサブルーチンが複数存在する場合についても、例えば図２１にて示すようなサブルーチン毎の実行命令数、１秒間当りの平均実行命令数および全体実行時間の関係式を用いることで容易に拡張できる。尚、図２１において、Ｎは問題サイズ、Ｍはプログラム全体の実行命令数に強く影響するサブルーチンの数を示している。尚、Ｍの値は例えばあるサブルーチンの実行命令数がプログラム全体の実行命令数に対し所定割合以上であるか否かを判定することで決定される。またTime(N)は問題サイズＮにおけるプログラム全体の実行時間、Instr(N,i)は、問題サイズＮにおける、プログラム全体の処理量に強く影響する順位がｉ番目であるサブルーチンの実行命令数、IPS(N,i)は、問題サイズＮにおける、プログラム全体の処理量に強く影響する順位がｉ番目であるサブルーチンの１秒当りの平均実行命令数である。
【００７１】
すなわち、プログラム全体の処理量に強く影響するサブルーチンが複数存在する場合には、数式作成部３、および時間推定部４は、さらに、以下の機能を有することで実施の形態７を実現する。
【００７２】
実施の形態７における数式作成部３は、プログラムを実行する際の実行命令数が所定の割合以上であるサブルーチンを特定する機能を有する。また、実施の形態７における時間推定部４は、数式作成部３にて特定された各サブルーチンの実行命令数、および図２１にて示した式を用いて、プログラムを実行した場合の実行推定時間を算出する機能を有する。
【００７３】
このように、実施の形態７におけるプログラム実行時間推定装置１は、それぞれのサブルーチンについて、実施の形態６と同様に、計測結果が十分安定する回数だけ測定し、それぞれのサブルーチンにおける１秒あたりの平均実行命令数を求める。そして求められた１秒当たりの平均実行命令数で、それぞれのサブルーチンの処理量を個別に除算し、その結果のサブルーチン毎の実行時間を合算することによって、プログラム全体の実行時間を推定することができる。
【００７４】
（実施の形態８）
実施の形態１では、推定対象のプログラムにおいて、メインプログラムおよびそこから呼び出される数学ライブラリ内のすべてのサブルーチンについて、実行命令数の値を採取しログ出力する機能を追加した。しかしこの方法では、サブルーチンの呼び出し回数が多いプログラムを対象とした場合に、
・ログ出力の処理に要する時間が無視できない。
・出力されたログの集計処理に要する時間が長くなる。
といった問題が生じる。
【００７５】
そこでそのような場合には、改変処理によって対象プログラムに追加するログ出力機能に、以下の機能を追加する。
・サブルーチンの呼び出し深さを表す変数を新たに設け、当該改変プログラムの実行開始時に０に初期化する。
・上記変数に対して、サブルーチン先頭で１を加算し、サブルーチン末尾で１を減算する。
そして、実施の形態８では、上記変数の値が閾値以下である場合にのみ、実行命令数の値を採取しログ出力する。
【００７６】
こうすることによって、実行命令数を計測する部分処理の粒度を適度な大きさに保ちつつ、出力されるログの分量を抑制することができ、上述の２つの問題点を回避することができる。
【００７７】
上述の実施の形態では、サブルーチンよって分割される命令実行区間を部分処理の対象とし、命令実行区間ごとに数式を算出し、算出された数式を合算したが、Ｆｏｒ文等の繰り返し処理よって分割される命令実行区間を対象としてもよい。
【００７８】
また、上述の実施の形態では、プロセッサによる実行命令数を求め、実行命令数に基づき処理を行っているが、プロセッサの算術演算の実行回数であってもよい。
【００７９】
また、上述の実施の形態では、プログラムに入力される入力データ量を問題サイズＮとして説明したが、プロセッサの計算処理の空間的解像度、プロセッサの計算処理の時間的解像度、プロセッサの計算処理のタイムステップ繰り返し数、プロセッサの計算処理の反復計算繰り返し数のいずれか一つ、またはこれらを複数組み合わせたものを問題サイズとしてもよい。
【００８０】
上述の実施の形態によって、コンピュータプログラムの実行時間見積もり作業が以下のように改善される。
【００８１】
実施の形態によるプログラム実行時間推定装置によって、見積もり対象とするプログラムの処理内容を深く理解することなく、精度の高い実行時間推定を行うことができる。
【００８２】
また、実施の形態によるプログラム実行時間推定装置によって、プログラム実行全体に関する、実際の経過時間測定値のみから見積もる方法と比較して、格段に精度の高い実行時間推定を行うことができる。
【００８３】
さらに、実施の形態によるプログラム実行時間推定装置によって、実行時間推定モデルを作成しにくいプログラムの場合にも、サブルーチンや、ＦＯＲ文による繰り返し処理といった単位で見積もりの難しい部分を特定でき、プログラム全体を理解する方法と比べて大幅に少ない労力で、人手による見積もり作業を行うことができる。
【００８４】
また、統計量推定装置であるプログラム実行時間推定装置１を構成するコンピュータにおいて上述した各ステップを実行させるプログラムを、統計量推定プログラムとして提供することができる。上述したプログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、統計量推定装置を構成するコンピュータに実行させることが可能となる。ここで、上記コンピュータにより読取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ＣＤ−ＲＯＭやフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
【００８５】
以上、本実施の形態によれば、以下の付記で示す技術的思想が開示されている。
（付記１）  実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの部分処理統計量を算出する小規模データ実行部と、
前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成部と、
前記数式作成部によって作成された数式に基づき、前記実行予定のデータ数で前記プログラムを実行した場合の推定統計量を算出する算出部とを備えることを特徴とする統計量推定装置。
（付記２）  付記１に記載の統計量推定装置において、さらに、
前記数式作成部によって作成された数式に基づき、前記実行予定のデータ数で前記プログラムを実行した場合の実行推定時間を算出する推定時間算出部を備えることを特徴とする統計量推定装置。
（付記３）  付記１に記載の統計量推定装置において、
前記数式作成部は、
前記小規模データ実行部にて算出された部分処理統計量と前記データ数とに基づき、回帰分析を行うモデル数式の係数を部分処理ごとに算出し、算出された係数をモデル数式に設定することで回帰式を部分処理ごとに作成する回帰式作成部と、
前記回帰式作成部によって作成された部分処理ごとの回帰式を合算することで前記数式を作成する回帰式合算部と、
を備えることを特徴とする統計量推定装置。
（付記４）  付記３に記載の統計量推定装置において、
前記回帰式作成部は、さらに、予め定義された複数のモデル数式から最も適したモデル数式を部分処理ごとに選択し、選択したモデル数式を該部分処理のモデル数式とすることを特徴とする統計量推定装置。
（付記５）  付記４に記載の統計量推定装置において、
前記回帰式作成部は、部分処理に対し複数のモデル数式それぞれの決定係数を算出し、算出された決定係数に基づき、該部分処理に最も適したモデル数式を選択することを特徴とする統計量推定装置。
（付記６）  付記１に記載の統計量推定装置において、
前記小規模データ実行部、および前記数式作成部は、前記プログラムを構成するサブルーチンよって分割される命令実行区間を部分処理とすることを特徴とする統計量推定装置。
（付記７）  付記４に記載の統計量推定装置において、
前記回帰式作成部は、モデル数式を部分処理ごとに選択する際、該部分処理を前記プロセッサが実行した実行回数を求め、さらに前記部分処理の１回実行当たりの部分処理統計量を算出し、実行回数および１回実行当たりの部分処理統計量に基づきモデル数式を部分処理ごとに選択することを特徴とする統計量推定装置。
（付記８）  付記２に記載の統計量推定装置において、
前記推定時間算出部は、所定時間経過後の前記プロセッサの１クロック当りの所定の統計量を計測し、計測結果から１秒当りの所定の統計量を算出し、前記全体統計量を前記１秒当りの所定の統計量で除算することで、前記実行予定のデータ数で前記プログラムを実行した場合の実行推定時間を算出することを特徴とする統計量推定装置。
（付記９）  付記１に記載の統計量推定装置において、
前記部分処理は、繰り返し処理によって分割される命令実行区間であることを特徴とする統計量推定装置。
（付記１０）  付記１に記載の統計量推定装置において、
前記所定の統計量は、プロセッサの算術演算の実行回数であることを特徴とする統計量推定装置。
（付記１１）  付記１に記載の統計量推定装置において、
前記小規模データ実行部、および前記数式作成部は、プロセッサによる実行命令数を所定の統計量とすることを特徴とするプログラム統計量推定装置。
（付記１２）  実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行ステップと、
前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成ステップと、
前記数式作成部によって作成された数式に基づき、前記実行予定のデータ数で前記プログラムを実行した場合の推定統計量を算出するステップと
をコンピュータに実行させる統計量推定プログラム。
（付記１３）  付記１２に記載の統計量推定プログラムにおいて、さらに、
前記数式作成ステップによって作成された数式に基づき、前記実行予定のデータ数で前記プログラムを実行した場合の実行推定時間を算出する推定時間算出ステップをコンピュータに実行させることを特徴とする統計量推定プログラム。
（付記１４）  付記１２に記載の統計量推定プログラムにおいて、
前記数式作成ステップは、
前記小規模データ実行ステップにて算出された部分処理統計量と前記データ数とに基づき、回帰分析を行うためのモデル数式の係数を部分処理ごとに算出し、算出された係数をモデル数式に設定することで回帰式を部分処理ごとに作成する回帰式作成ステップと、
前記回帰式作成ステップによって作成された部分処理ごとの回帰式を合算することで前記数式を作成する回帰式合算ステップと、
をコンピュータに実行させることで成ることを特徴とする統計量推定プログラム。
（付記１５）  実行予定のデータ数よりも少ない複数のデータ数を用いて対象のプログラムを前記複数のデータ数ごとに実行させ、前記データ数ごと、および前記プログラムを構成する部分処理ごとに、該部分処理を実行するプロセッサの所定の統計量である部分処理統計量を算出する小規模データ実行ステップと、
前記小規模データ実行部によって算出された部分処理ごとの部分処理統計量と、該部分処理統計量が算出される際のデータ数とに基づき、前記実行予定のデータ数で前記プログラムの全体が実行される際の前記プロセッサの所定の統計量である全体統計量を算出するための数式を作成する数式作成ステップと、
を実行する統計量推定方法。
【図面の簡単な説明】
【００８６】
【図１】本実施の形態に係るプログラム実行時間推定装置の構成の一例を示す図である。
【図２】実施の形態１に係る問題サイズと実行時間の実測値との対応を示す図、および問題サイズ、実行時間推定値、実行時間実測値、推定誤差の対応を示す図である。
【図３】本実施の形態に係るプログラムの改変を説明する図である。
【図４】実施の形態１に係る命令アドレス、実行命令累積数、および関数名と呼び出し／復帰の種別の対応を示す図である。
【図５】実施の形態１に係る命令実行区間開始アドレス、命令実行区間終了アドレス、区間内実行命令数の対応の一例を示す図である。
【図６】実施の形態１に係る命令実行区間開始アドレス、命令実行区間終了アドレス、区間実行回数、区間内実行命令数の対応の一例を示す図である。
【図７】実施の形態１に係る命令実行区間開始アドレス、命令実行区間終了アドレス、問題サイズごとの区間内合計実行命令数の対応の一例を示す図である。
【図８】実施の形態１に係る命令実行区間開始アドレス、命令実行区間終了アドレス、モデル数式の係数値の対応の一例を示す図である。
【図９】実施の形態１に係る問題サイズ、実行命令数推定値、実行命令数実測値、推定誤差の対応の一例を示す図である。
【図１０】実施の形態１に係るプロセッサの仕様の一例を示す図である。
【図１１】実施の形態１に係る問題サイズ、推定実行時間、実行時間実測値、推定誤差の対応の一例を示す図である。
【図１２】本実施の形態に係るプログラム実行時間推定装置の処理動作の一例を説明する図である。
【図１３】実施の形態２の概要を説明する図である。
【図１４】実施の形態２に係る問題サイズ、区間内合計実行命令数の対応の一例を示す図である。
【図１５】実施の形態２に係るモデル数式の一例およびモデル数式、決定係数、係数αの対応の一例を示す図である。
【図１６】本実施の形態３に係る問題サイズ、区間実行回数、区間内平均実行命令数の対応の一例を示す図である。
【図１７】本実施の形態３に係る問題サイズ、区間内実行回数における決定係数および係数α、区間内平均実行命令数における決定係数および係数αの対応の一例を示す図である。
【図１８】実施の形態４に係る問題サイズ、改変処理を行わない場合の全体実行命令数の対応の一例を示す図である。
【図１９】実施の形態４に係る問題サイズ、実行命令数推定値、実行命令数実測値、推定誤差の対応の一例を示す図である。
【図２０】実施の形態５に係る問題サイズ、１クロック当りの平均実行命令数、１秒当りの平均実行命令数の対応例および問題サイズ、推定実行時間、実行時間実測値、推定誤差の対応例を示す図である。
【図２１】実施の形態７に係るプログラム全体の実行時間を算出する式を示す図である。
【符号の説明】
【００８７】
１  プログラム実行時間推定装置、２  小規模データ実行部、３  数式作成部、４  時間推定部、１１  推定モデル作成部、１２  推定モデル合成部。
【図１】
2010061417.tif 000003
【図２】
2010061417.tif 000004
【図３】
2010061417.tif 000005
【図４】
2010061417.tif 000006
【図５】
2010061417.tif 000007
【図６】
2010061417.tif 000008
【図７】
2010061417.tif 000009
【図８】
2010061417.tif 000010
【図９】
2010061417.tif 000011
【図１０】
2010061417.tif 000012
【図１１】
2010061417.tif 000013
【図１２】
2010061417.tif 000014
【図１３】
2010061417.tif 000015
【図１４】
2010061417.tif 000016
【図１５】
2010061417.tif 000017
【図１６】
2010061417.tif 000018
【図１７】
2010061417.tif 000019
【図１８】
2010061417.tif 000020
【図１９】
2010061417.tif 000021
【図２０】
2010061417.tif 000022
【図２１】
2010061417.tif 000023