(57)【要約】【課題】より高い保証値レベルを実現する。【解決手段】条件設定支援装置２は、第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付ステップと、統計情報にもとづいて、複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出ステップと、を実行する。【選択図】図１
2006031605.tif 000002
【特許請求の範囲】
【請求項１】
第１のパラメータと、第２のパラメータと、を含むプログラムの実行条件の設定を支援する実行条件設定支援方法において、
前記第１のパラメータは、前記プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れないパラメータであって、
前記第２のパラメータは、前記プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れるパラメータであって、
情報処理装置は、
前記第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、前記第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、前記プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付ステップと、
前記統計情報にもとづいて、前記複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出ステップと、を実行し、
前記保証値は、前記グループの第１のパラメータ値各々と、前記複数の第２のパラメータ値各々との組み合わせを前記プログラムの実行条件とした場合における、前記第２のパラメータ値毎の前記プログラムの実行結果の平均と標準偏差とに基づいて算出されること
を特徴とする実行条件設定支援方法。
【請求項２】
請求項１記載の実行条件設定支援方法であって、
前記選択された複数の第１のパラメータ値は、ｎ個であって、
前記情報処理装置は、前記プログラムの最大同時実行数であるＪを受け付ける実行数受付ステップを、をさらに実行し、
前記検出ステップは、ｎ個の前記第１のパラメータ値の中からｋ個の第１のパラメータ値を選択した少なくとも１つのグループについて、前記保証値が最大となるグループを検出する処理を、ｋの値を１からＪまで変えて繰り返し実行すること
を特徴とする実行条件設定支援方法。
【請求項３】
第１のパラメータと、第２のパラメータと、を含むプログラムの実行条件の設定を支援する実行条件設定支援方法において、
前記第１のパラメータは、前記プログラムの計算精度に影響を与え、かつ、ユーザインタフェースに現れないパラメータであって、
前記第２のパラメータは、前記プログラムの計算精度に影響を与え、かつ、ユーザインタフェースに現れるパラメータであって、
情報処理装置は、
前記第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、前記第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、前記プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付ステップと、
前記統計情報にもとづいて、前記複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出ステップと、を実行し、
前記保証値は、前記グループの第１のパラメータ値各々と、前記複数の第２のパラメータ値各々との組み合わせを前記プログラムの実行条件とした場合における、前記第２のパラメータ値毎の前記プログラムの実行結果の平均と標準偏差とに基づいて算出されること
を特徴とする実行条件設定支援方法。
【請求項４】
第１のパラメータと、第２のパラメータと、を含むプログラムの実行条件の設定を支援する実行条件設定支援方法において、
前記第１のパラメータは、前記プログラムの複数の属性に影響を与え、かつ、ユーザインタフェースに現れない複数のパラメータであって、
前記第２のパラメータは、前記プログラムの複数の属性に影響を与え、かつ、ユーザインタフェースに現れる少なくとも１つのパラメータであって、
情報処理装置は、
前記第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、前記第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、前記プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付ステップと、
前記統計情報にもとづいて、前記複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出ステップと、を実行し、
前記保証値は、前記グループの第１のパラメータ値各々と、前記複数の第２のパラメータ値各々との組み合わせを前記プログラムの実行条件とした場合における、前記第２のパラメータ値毎の前記プログラムの実行結果の平均と標準偏差とに基づいて算出されること
を特徴とする実行条件設定支援方法。
【請求項５】
第１のパラメータと、第２のパラメータとを含むプログラムの実行条件を設定する実行条件設定装置と、前記プログラムの実行を管理する実行管理装置と、前記プログラムを実行する少なくとも１つの実行装置とを有するシステムにおいて、プログラムの実行条件を設定する方法であって、
前記第１のパラメータは、前記プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れないパラメータであって、
前記第２のパラメータは、前記プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れるパラメータであって、
前記実行条件設定装置は、
前記第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、前記第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、前記プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付ステップと、
前記統計情報にもとづいて、前記複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出ステップと、
前記検出ステップにおいて検出したグループの第１のパラメータ値を、前記実行管理装置に送信する送信ステップと、を実行し、
前記保証値は、前記グループの第１のパラメータ値各々と、前記複数の第２のパラメータ値各々との組み合わせを前記プログラムの実行条件とした場合における、前記第２のパラメータ値毎の前記プログラムの実行結果の平均と標準偏差とに基づいて算出され、
前記実行管理装置は、
前記実行条件設定装置から、前記検出したグループの第１のパラメータ値を受信する受信ステップと、
前記受信した第１のパラメータ値各々を前記実行装置各々に設定し、前記プログラムの同時実行を前記実行装置各々に指示する指示ステップと、
前記実行装置各々から送信される実行結果の中で、最速の実行結果のみを受け付ける実行結果受付ステップと、を実行し、
前記実行装置各々は、
前記実行管理装置からの前記実行指示を受け付けて、前記プログラムを実行する実行ステップを実行すること
を特徴とする実行条件設定方法。
【請求項６】
第１のパラメータと、第２のパラメータと、を含むプログラムの実行条件の設定を支援する実行条件設定支援装置において、
前記第１のパラメータは、前記プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れないパラメータであって、
前記第２のパラメータは、前記プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れるパラメータであって、
前記実行条件設定支援装置は、
前記第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、前記第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、前記プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付手段と、
前記統計情報にもとづいて、前記複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出手段と、を有し、
前記保証値は、前記グループの第１のパラメータ値各々と、前記複数の第２のパラメータ値各々との組み合わせを前記プログラムの実行条件とした場合における、前記第２のパラメータ値毎の前記プログラムの実行結果の平均と標準偏差とに基づいて算出されること
を特徴とする実行条件設定支援装置。
【請求項７】
第１のパラメータと、第２のパラメータと、を含む業務プログラムの実行条件の設定を支援する実行条件設定支援プログラムであって、
前記第１のパラメータは、前記業務プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れないパラメータであって、
前記第２のパラメータは、前記業務プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れるパラメータであって、
情報処理装置に、
前記第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、前記第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、前記業務プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付ステップと、
前記統計情報にもとづいて、前記複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出ステップと、を実行させ、
前記保証値は、前記グループの第１のパラメータ値各々と、前記複数の第２のパラメータ値各々との組み合わせを前記業務プログラムの実行条件とした場合における、前記第２のパラメータ値毎の前記業務プログラムの実行結果の平均と標準偏差とに基づいて算出されること
を特徴とする実行条件設定支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの性能保証技術に関する。
【背景技術】
【０００２】
プログラム（ソフトウェア）の性能を向上させるために、様々な技術が存在する。例えば、特許文献１には、プログラムの実行時間に影響を与えるパラメータを用いて性能予測モデルを作成し、プログラムの実行時間を最小とするパラメータの値を特定するソフトウェアの構成方法が開示されている。
【０００３】
【特許文献１】特開２０００−２７６４５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
プログラムの性能を向上させるため、さまざまな高性能化技術が開発されている。しかしながら、高性能化技術を用いた場合であっても、メモリ、キャッシュ、ネットワーク、ストレージなどの計算資源の競合を引き起こし、性能の不安定化を招く事態が多くなっている。この最も端的な例が、メモリバンク競合とキャッシュカラム競合である。
【０００５】
メモリバンク競合とは、次のような性能不安定現象である。メモリのデータ転送を高速化するために、同時に複数の番地のデータにアクセスし、同時並行で読み書きを行なう。しかしながら、違う番地のデータであっても、同じメモリバンクにあるデータを同時にアクセスする場合（すなわち、メモリバンク競合が発生する場合）がある。メモリバンク競合が発生すると、データの安全性を確保するためのペナルティの待ち時間が常に発生する。したがって、メモリバンク競合が発生すると、性能に大きな影響を与え、性能劣化を引き起こす原因となる。
【０００６】
キャッシュカラム競合もメモリバンク競合と同様の現象である。すなわち、キャッシュのデータ転送を高速化するために、同時に複数の番地のデータにアクセスし、同時並列で読み書きを行う。しかしながら、違う番地のデータであっても、同じキャッシュカラムにあるデータを同時にアクセスする場合（すなわち、キャッシュカラム競合が発生する場合）がある。キャッシュカラム競合が発生すると、データの安全性を確保するためのペナルティの待ち時間が常に発生し、かえって性能が劣化する。
【０００７】
このような性能不安定化現象は、プログラムの性能向上、チューニングが多種多様になるにつれ、頻繁に起きるようになっている。たとえば、キャッシュカラム競合による性能劣化現象は、「直野健、今村俊幸： 自動チューニング型固有値ソルバについて, SWoPP2002, 情報処理学会研究報告, Vol. 2002, No. 91, pp. 49-54.」および「今村俊幸、直野健: 性能安定化を目指した自動チューニング型固有値ソルバーについて, SACSIS (Symposium on Advanced Computing Systems and Infrastructures) 2003, pp.145-152.」に固有値計算の主要ループについて報告されている。これは、ループアンローリングという性能向上方法が、キャッシュカラム競合によって性能不安定化を招く例を提示している。
【０００８】
なお、図１３は、プログラムの性能の実測結果を示したものである。図示するグラフは、縦軸に性能（Mflop/s）を、横軸に行列サイズを示している。そして、ループアンローリングの各パラメータ（アンローリング段数）毎に、各行列サイズで実測した結果を示している。例えば、（５−５−２）のパラメータの場合、行列サイズが３０００から３０５０までは、安定しているが、３０５０から３０８０までは、キャッシュカラム競合により性能が急激に劣化している。
【０００９】
このように、様々なデータ競合による待ち時間のために、本来は高速化を目的とした技術が、かえって性能劣化を招いてしまうケースがあり、性能を保証することが容易ではない。
【００１０】
本発明は上記事情を鑑みてなされたものであり、本発明の目的は、性能保証レベルを向上する技術を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明では、保証値が最大となる少なくとも１つのパラメータ値を含むグループを検出する。
【００１２】
例えば、本発明では、第１のパラメータと、第２のパラメータと、を含むプログラムの実行条件の設定を支援する実行条件設定支援方法において、第１のパラメータは、プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れないパラメータであって、第２のパラメータは、プログラムの実行性能に影響を与え、かつ、ユーザインタフェースに現れるパラメータである。そして、情報処理装置が、第１のパラメータがとり得る値の中から選択された複数の第１のパラメータ値各々と、第２のパラメータがとり得る値の中から選択された複数の第２のパラメータ値各々との組合せ毎に、プログラムの実行結果が記憶された統計情報を受け付ける統計情報受付ステップと、統計情報にもとづいて、複数の第１のパラメータ値の中から、保証値が最も大きくなる、少なくとも１個の第１のパラメータ値を含むグループを検出する検出ステップと、を実行する。そして、保証値は、グループの第１のパラメータ値各々と、複数の第２のパラメータ値各々との組み合わせをプログラムの実行条件とした場合における、第２のパラメータ値毎のプログラムの実行結果の平均と標準偏差とに基づいて算出される。
【発明の効果】
【００１３】
本発明では、より高い性能保証レベルを実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明の実施の形態を説明する。
【００１５】
図１は、本発明の一実施形態が適用された実行条件設定支援システムの概略図である。図示するように、本システムは、情報収集装置１と、条件設定支援装置２と、実行管理装置３と、少なくとも１つの実行装置４とを有する。そして、情報収集装置１と、条件設定支援装置２と、実行管理装置３とは、インターネットまたはＬＡＮなどのネットワーク５により接続されている。また、実行管理装置３と、実行装置４各々とは、専用線６により接続されている。
【００１６】
情報収集装置１は、所定のプログラムを複数の実行条件で実行し、複数の実行条件毎に当該プログラムの実行時間を実測するための装置である。条件設定支援装置２は、情報収集装置１が実測した実測結果を用いて、性能保証値が最大となる実行条件の決定を支援するための装置である。実行管理装置３は、各実行装置４にそれぞれ異なる実行条件を入力し、所定のプログラムを同時に並列実行させるための装置である。各実行装置４は、それぞれ異なる実行条件で、所定のプログラムを実行する装置である。すなわち、実行管理装置３は、各実行装置４を用いてパラメータサーベイを行う。
【００１７】
なお、本実施形態におけるプログラムの実行条件は、プログラムの計算結果（実行結果）には影響を与えないが、プログラムの実行性能に影響を与えるクリティカルパラメータ（Ｃritical ＰaraMeter）（以下、「ＣＰ」）とする。また、ＣＰは、ユーザーインターフェイスに現れるユーザークリティカルパラメータ（Ｕsers' Ｃritical ＰaraMeter）（以下、「ＵＣＰ」）と、ユーザーインターフェイスに現れない内部のパラメータである内部クリティカルパラメータ（Ｉnertial Ｃritical ＰaraMeter）（以下、「ＩＣＰ」）とに分類される。
【００１８】
具体的なＩＣＰとしては、ループ計算におけるアンローリング段数、行列計算におけるＡ（Ｎ、Ｎ）を例えばＡ（Ｎ＋１、Ｎ＋１）として計算するサイズ追加パラメータ、行列計算における分割ブロックサイズなどである。なお、アンローリング段数については、例えば、「自動チューニング型固有値ソルバーについて」（直野健、今村俊幸，情報処理学会研究報告, Vol. 2002, No. 91, pp. 49-54、）に、記載されている。本実施形態では、ＩＣＰとしてアンローリング段数を例に以下説明する。
【００１９】
ＵＣＰは、ユーザがプログラムの実行時にパラメータの値を指定する（すなわち、ユーザーインターフェイスに現れる）ＣＰである。具体的なＵＣＰとしては、行列計算における行列サイズなどである。本実施形態では、ＵＣＰとして行列サイズを例に以下説明する。
【００２０】
情報収集装置１は、図示するように、入力受付部１１と、処理部１２と、通信処理部１３と、記憶部１４とを有する。入力受付部１１は、プログラム開発者からＩＰＣおよびＵＣＰのパラメータの値の入力を受け付ける。処理部１２は、入力受付部１１が受け付けたＩＰＣおよびＵＣＰのそれぞれの値を指定して所定のプログラムを実行し、後述する統計情報テーブルを作成する。通信処理部１３は、ネットワーク５を介して他の装置とデータの送受信を行う。記憶部１４には、処理部１２が実行する所定のプログラムが記憶されている。また、記憶部１４には、後述する統計情報テーブルが記憶される。
【００２１】
条件設定支援装置２は、図示するように、入力受付部２１と、処理部２２と、出力部２３と、通信処理部２４と、記憶部２５と、を有する。入力受付部２１は、プログラムの実行条件を設定するユーザから、後述する最大同時実行数の入力を受け付ける。処理部２２は、後述する保証値が最大となるＩＣＰのグループを特定する。通信処理部１３は、ネットワーク５を介して他の装置とデータの送受信を行う。記憶部２５には、情報収集装置１が作成した統計情報テーブル、後述する保証値テーブル、および後述する対応テーブルが記憶される。
【００２２】
実行管理装置３は、図示するように、実行管理部３１と、通信処理部３２と、記憶部３３とを有する。実行管理部３１は、各実行装置４にプログラムの実行またはキャンセルを指示する。通信処理部３２は、ネットワーク５または専用線６を介して他の装置とデータの送受信を行う。記憶部３３には、条件設定支援装置２が特定したプログラムの実行条件および、プログラムの実行結果が記憶される。
【００２３】
以上説明した、情報収集装置１、条件設定支援装置２、実行管理装置３、および、実行装置４は、いずれも例えば図２に示すようなＣＰＵ９０１と、ＲＡＭ等のメモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、キーボードやマウスなどの入力装置９０４と、ディスプレイやプリンタなどの出力装置９０５と、ネットワーク接続するための通信制御装置９０６と、これらの各装置を接続するバス９０７と、を備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することにより、各装置の各機能が実現される。
【００２４】
例えば、情報収集装置１、条件設定支援装置２、実行管理装置３、および、実行装置４の各機能は、情報収集装置１用のプログラムの場合は情報収集装置１のＣＰＵ９０１が、条件設定支援装置２用のプログラムの場合は条件設定支援装置２のＣＰＵ９０１が、実行管理装置３用のプログラムの場合は実行管理装置３のＣＰＵ９０１が、そして、実行装置４用のプログラムの場合は実行装置４のＣＰＵ９０１が、それぞれ実行することにより実現される。また、情報収集装置１の記憶部１４には、情報収集装置１のメモリ９０２または外部記憶装置９０３が用いられる。また、条件設定支援装置２の記憶部２５には、条件設定支援装置２のメモリ９０２または外部記憶装置９０３が用いられる。また、実行管理装置３の記憶部３３には、実行管理装置３のメモリ９０２または外部記憶装置９０３が用いられる。
【００２５】
次に、情報収集装置１の処理の流れについて説明する。なお、所定のプログラムを開発したプログラム開発者が、情報収集装置１を使用する。
【００２６】
図３は、情報収集装置１の処理フローを示した図である。まず、入力受付部１１は、入力装置９０４から入力されたＩＣＰ識別情報と、当該ＩＣＰ識別情報により識別されるＩＣＰがとり得る少なくとも１つのＩＣＰ値（パラメータの値）を受け付ける（Ｓ３１）。ＩＣＰ識別情報は、ＩＣＰを識別するための情報（例えば、ＩＣＰ名称など）である。プログラム開発者は、自ら開発した所定のプログラムにおける、計算結果には影響を与えないが性能分布に影響を与えるＩＣＰを特定する。そして、プログラム開発者は、当該特定したＩＣＰのＩＣＰ値を、少なくとも１つ特定する。そして、プログラム開発者は、特定したＩＣＰ識別情報と、特定した各ＩＣＰ値とを、入力装置９０４を用いて入力受付部１１に入力する。なお、本実施形態では、ＩＣＰは、アンローリング段数とする。また、入力されたＩＣＰ値は、ＩＣＰ={ＩＣＰ−１，ＩＣＰ−２，…ＩＣＰ−ｎ}とする。
【００２７】
そして、入力受付部１１は、入力装置９０４から入力されたＵＣＰ識別情報と、当該ＵＣＰ識別情報により識別されるＵＣＰの少なくとも１つのＵＣＰ値（パラメータの値）を受け付ける（Ｓ３２）。なお、ＵＣＰ識別情報は、ＵＣＰを識別するための情報（例えば、ＵＣＰ名称など）である。プログラム開発者は、自ら開発した所定のプログラムにおける、計算結果には影響を与えないが性能分布に影響を与えるＵＣＰを特定する。そして、プログラム開発者は、当該特定したＵＣＰの取り得る区間（範囲）を特定し、当該区間内で複数のＵＣＰの値をランダムに選択する。そして、プログラム開発者は、特定したＵＣＰ識別情報と、選択した各ＵＣＰ値とを、入力装置９０４を用いて入力受付部１１に入力する。なお、本実施形態では、ＵＣＰは、行列計算における行列サイズとする。また、入力されたＵＣＰ値は、ＵＣＰ={ＵＣＰ（１），ＵＣＰ（２），…ＵＣＰ（ｍ）}とする。
【００２８】
そして、処理部１２は、入力受付部１１が受け付けた、各ＩＣＰ値および各ＵＣＰ値に基づいて後述する統計情報テーブルを作成し、記憶部１４に記憶する（Ｓ３３）。すなわち、処理部１２は、各ＩＣＰ値を統計情報テーブルの横（または縦）の各項目（フィールド）に設定し、また、各ＵＣＰ値を統計情報テーブルの縦（または横）の各項目（フィールド）に設定したクロス表を作成する。そして、処理部１２は、統計情報テーブルのセル毎に、当該セルに対応するＩＣＰ値およびＵＣＰ値を指定して、記憶部１４に記憶された所定の（同一の）プログラムをそれぞれ実行し、当該プログラムの性能を測定する。以下に詳細に説明する。
【００２９】
すなわち、処理部１２は、「ＩＣＰ−１」から「ＩＣＰ−ｎ」まで、以下に説明するＳ３５からＳ３７の処理を繰り返す（Ｓ３４）。なお、繰り返しは、「ＩＣＰ＝ＩＣＰ−１，ＩＣＰ−ｎ」で表すものとする。そして、処理部２２は、「ＵＣＰ−１」から「ＵＣＰ−ｍ」まで、以下に説明するＳ３６およびＳ３７の処理を繰り返す（Ｓ３５）。そして、処理部１２は、Ｓ３４で設定された所定のＩＣＰ値、および、Ｓ３５で設定された所定のＵＣＰ値を設定し、所定の記憶部１４に記憶された所定のプログラムを実行して、性能を測定する（Ｓ３６）。そして、処理部は、測定した性能値を記憶部１４に記憶された統計情報テーブルの対応するセルに記憶する（Ｓ３７）。なお、性能値は、Perf（ｋ、IPC）とする。
【００３０】
以上により統計情報テーブルの全てのセルに実測した性能値を設定した後、処理部１２は、当該統計情報テーブルを、通信処理部１４を用いて、条件設定支援装置２に送信する（Ｓ３８）。
【００３１】
次に、統計情報テーブルについて説明する。
【００３２】
図４は、統計情報テーブルの一例を示したものである。図示するように、統計情報テーブル４００は、列（横方向）として、複数のＩＣＰ番号４１０と、当該ＩＣＰ番号４１０各々に対応する複数のＩＣＰ値４２０と、を有する。また、統計情報テーブル４００は、行（縦方向）として、複数のＵＣＰ値４３０と、を有する。図示する例では、ＩＣＰ値４２０には、Ｓ３１において入力された、７つのアンローリング段数のパラメータ値が設定されている。
【００３３】
また、図示する例では、ＵＣＰは行列サイズである。ＵＣＰ値４３０には、Ｓ３２において入力された、１０個の行列サイズが設定されている。すなわち、ＵＣＰ値４３０には、行列サイズＮ＝３００１からＮ＝３１００までの１００個の区間において、１０区間ごとに区間内はランダムに選択された行列サイズが設定されている。
【００３４】
また、各セル４４０には、各ＩＣＰ値および各ＵＣＰ値を指定してプログラムを実測した性能値が設定されている。本実施形態では、性能値としてプログラムの実行時間の逆数（演算量÷プログラムの実行時間）を用いるものとする。したがって、性能値が大きいほど、プログラムの実行時間が短いこと（高性能であること）を示している。例えば、ＩＣＰ番号が「７」（すなわち、ＩＰＣ値が「６−６−２」）４４１においては、ＵＣＰ値がＮ＝３，００６の場合の性能値「１，１７５」４４２が、もっとも大きい。なお、性能値の単位はMflop/Sである。
【００３５】
次に、条件設定支援装置２の処理の流れについて説明する。なお、所定のプログラムの実行条件を設定するユーザが、条件設定支援装置２を使用する。
【００３６】
図５は、条件設定支援装置２の処理フローを示した図である。図示する処理は、統計情報テーブルに設定された各ＩＣＰの値｛ＩＣＰ−１〜ＩＣＰ−Ｎ｝の中から、保証値を最大化するＩＣＰ値をｋ個選択する処理である。保証値（QoS）は、プログラムの利用者に、性能を保証する、すなわち、所定の時間内でプログラムを完了し計算結果を出力することを保証する値である。例えば、図４に示す統計情報テーブルのＩＰＣ番号が「７」（すなわち、ＩＰＣ値が「６−６−２」）４４１においては、ＵＣＰ値によって性能値にばらつきがある。すなわち、ＵＣＰ値が「Ｎ＝３００６」の場合が最大の性能値（１，１７５）４４２であって、ＵＣＰ値が「Ｎ＝３０５７」の場合が最低の性能値（１，０９９）４４３である。したがって、保証値は、性能値のばらつきを考慮し、性能値の平均値からそのぶれ幅（標準偏差など）を差し引いた値とする。なお、保証の度合いに応じて平均値（M）から、標準偏差（σ）もしくはその数倍の値を引けばよい。以下に説明する本実施形態においては、M−２×σを保証値とすることにする。
【００３７】
まず、処理部２２は、通信処理部２４を用いて、情報収集装置１から統計情報テーブルを受信する（Ｓ１００）。そして、処理部２２は、統計情報テーブルを、記憶部２５に記憶する。次に、入力受付部２１は、入力装置９０４から入力された、最大同時実行数およびＵＣＰ値を受け付ける（Ｓ２００）。最大同時実行数は、異なるＩＰＣ値をそれぞれ指定して、同一のプログラムを同時実行する実行装置４の最大数である。ユーザは、使用可能な実行装置４の数などリソース上の制限により最大同時実行数を決定する。そして、ユーザは、入力装置９０４を用いて最大同時実行数を入力受付部２１に入力する。なお、最大同時実行数を「Ｊ」とし、本実施形態では、「Ｊ＝４」として以降の説明をする。また、Ｓ２００において受け付けたＵＣＰ値は、実行装置４がプログラムを実行する際に設定される。
【００３８】
そして、処理部２２は、「１」から最大同時実行数までの各同時実行数（ｋ）において、以下に説明するＳ３１０からＳ３３０の処理を繰り返し行う（Ｓ３００）。なお、繰り返しは、「ｋ＝1，Ｊ」で表わすものとする。Ｊ＝４の場合、ｋ＝１と、ｋ＝２と、ｋ＝３と、ｋ＝４の４回の繰り返し（ループ処理）を行う。
【００３９】
まず、処理部２２は、統計情報テーブルに設定されたＩＣＰ値の数であるｎ個からｋ個を選択する場合の、全ての組合せを作成する（Ｓ３１０）。図４に示す統計情報テーブルの場合、ｎ＝７である。そして、例えばｋ＝３の場合、ｎ(=７)個からｋ(=３)個を選択したグループをＧ（１），…，Ｇ（ｚ）とすると、７個中３個を選ぶ組合せの数は、ｎＣｋ=７Ｃ３=３５である。したがって、ｚ=３５となる。
【００４０】
次に、処理部２２は、Ｓ３１０で作成したグループのＧ（１）からＧ（ｚ）まで、各グループの性能値の平均および標準偏差と、各グループの保証値とを算出する。すなわち、処理部２２は、kk＝１からｚ（ｋ＝３の場合は３５）まで、以下に説明するＳ３２１からＳ３２４を実行する。
【００４１】
まず、処理部２２は、各グループ内において、ＵＣＰ値毎に最大の性能値を特定する（Ｓ３２１）。第kkグループのＩＣＰ値が「(5-5-2)と(5-5-4)と(6-6-1)」のグループとする。この場合、ＵＣＰ値の１番目について、Perf(1, (5-5-2))とPerf(1, (5-5-4))とPerf(1, (6-6-1))の中で最大の値をとるものをMax-Perf(1)とする。これを各ＵＣＰ値について行う。これにより第kkグループのMax-Perf(1)からMax-Perf（ｍ）が特定される。
【００４２】
具体的に、図４に示す統計情報テーブルにおいて、ＩＣＰ番号が「４(5-5-2)と５(5-5-4)と６(6-6-1)」のグループの場合を例に説明する。処理部２２は、ＵＣＰ値が「Ｎ＝３，００６」の場合、最大の性能値であるＩＣＰ番号が「５」の性能値（１，２６３）４４４を特定する。また、処理部２２は、ＵＣＰ値が「Ｎ＝３，０３８」の場合、最大の性能値であるＩＣＰ番号が「４」の性能値（１，２３２）４４５を特定する。
【００４３】
そして、処理部２２は、ＵＣＰ値毎に特定した最大の性能値、すなわち、Max-Perf(1)からMax-Perf（ｍ）のｍ個の値の平均（M）と標準偏差（σ）とを算出する（Ｓ３２２）。なお、第kkグループの平均（M）をM（kk）、また、第kkグループの標準偏差（σ）をσ（kk）とする。
【００４４】
そして、処理部２２は、算出した平均（M）と標準偏差（σ）とに基づいて、保証値（QoS）を算出する（Ｓ３２３）。上記保証値の説明の通り、保証値（QoS）は、「平均（M）−２×標準偏差（σ）」により算出される。なお、第kkグループの保証値（QoS）をQoS（kk）とし、QoS（kk）＝M（kk）−２σ（kk）とする。そして、処理部は、Ｓ３２１からＳ３２３において、特定または算出したMax-Perf（ｍ）、平均（M）、標準偏差（σ）、および、保証値（QoS）を、後述する保証値テーブルに設定する（Ｓ３２４）。
【００４５】
次に、保証値テーブルについて説明する。
【００４６】
図６は、同時実行数がｋ＝１の場合において、ｎ(=７)個からｋ(=１)個を選択した保証値テーブルの例を示したものである。この場合、処理部２２は、Ｇ（１）からＧ（７）の７個のグループを作成する。保証値テーブルは、図示するように、グループ番号（当該グループ番号に対応するＩＣＰ値を含む）６１０、ＵＣＰ値６２０、平均（M）６３０、標準偏差（σ）６４０、および、保証値６５０を有する。処理部２２は、記憶部２５に記憶された統計情報テーブルを読み出し、グループ毎およびＵＣＰ値毎に、特定した最大性能値（Max-Perf（ｍ））を特定し、保証値テーブルの所定のセル（エリア）に設定する。なお、同時実行数がｋ＝１の場合は、統計情報テーブルの各性能値が、そのまま最大性能値となる。また、処理部２２は、グループ毎に算出した平均（M）６３０、標準偏差（σ）６４０、および、保証値６５０を、当該グループの各セルに設定する。
【００４７】
図７は、同時実行数がｋ＝２の場合において、ｎ(=７)個からｋ(=２)個を選択した保証値テーブルの例を示したものである。この場合、処理部２２は、ｎＣｋ=７Ｃ２
=２１により、２１個のグループを作成する。なお、図７に示す保証値テーブルは、図６で説明した保証値テーブルと同様である。処理部２２は、統計情報テーブルを読み出し、グループ毎およびＵＣＰ値毎に特定した最大の性能値（Max-Perf（ｍ））を設定する。例えば、ＩＰＣ番号が「４」と「５」のグループ７１１の場合、処理部２２は、記憶部２５に記憶された統計情報テーブルのＩＰＣ番号が「４」の性能値と「５」の性能値とをＵＣＰ値に各々比較する。そして、処理部２２は、大きい方の性能値を保証値テーブルの当該グループ７１１の対応するＵＣＰ値のセルに設定する。具体的には、統計情報テーブル（図４参照）のＵＣＰ値が「Ｎ＝３００６」の場合、ＩＣＰ番号「４」の性能値は「１，２４２」４４６でＩＣＰ番号「５」の性能値は「１，２６３」４４４である。処理部２２は、性能値が大きいＩＣＰ番号「５」の値「１，２６３」４４４を特定し、保証値テーブルの当該グループ７７１のＵＣＰ値「Ｎ=３００６」のセル７１２に設定する。これによって、各グループおよび各ＵＣＰ値において最大の性能値（Max-Perf）が特定される。
【００４８】
図８は、同時実行数がｋ＝３の場合において、ｎ(=７)個からｋ(=３)個を選択した保証値テーブルの例を示した図である。この場合、処理部２２は、ｎＣｋ=７Ｃ３
=３５により、３５個のグループを作成する。なお、図８に示す保証値テーブルは、図６および図７で説明した保証値テーブルと同様である。
【００４９】
図９は、同時実行数がｋ＝４の場合において、ｎ(=７)個からｋ(=４)個を選択した保証値テーブルの例を示した図である。この場合、処理部２２は、ｎＣｋ=７Ｃ４
=３５により、３５個のグループを作成する。なお、図９に示す保証値テーブルは、図６から図８で説明した保証値テーブルと同様である。
【００５０】
以上説明したように、処理部２２は、kk=１からｚまで、Ｓ３２１からＳ３２４の処理を繰り返し実行し、保証値テーブルを作成する。次に、処理部２２は、記憶部２５記憶された保証値テーブルを読み出し、最大の保証値（QoS）を有するグループを特定する（Ｓ３３０）。すなわち、処理部２２は、M(kk)-2σ(kk)：kk=1,…,zの中で、最大の保証値を有するkkを特定する。なお、特定したグループをMax-kkとし、当該グループ（Max-kk）の保証値をQoS（ｋ）とする。また、Max-kkのグループの要素である各ＩＰＣ値を、S-IPC-1からS-IPC-kとする。具体的には、図８に示す保証値テーブルの場合、保証値が最も大きいＩＰＣ番号が「４」と「５」と「７」のグループ８６１がMax-kkであって、QoS（ｋ）が「１，１５５．００７」８６０である。また、S-IPC-1はＩＣＰ番号「４」の(5-5-2)、S-IPC-2はＩＣＰ番号「５」の(5-5-4)、S-IPC-3はＩＣＰ番号「７」の(6-6-2)である。
【００５１】
このように、処理部２２は、ｋ＝１からJまでＳ３１０からＳ３３０を繰り返し実行し、ｋ＝１からＪまでの各々の最大保証値を算出する（Ｓ３００）。そして、処理部２２は、同時実行数と最大保証値とを対応付けた対応テーブルを作成し、記憶部２５に記憶する（Ｓ４００）。なお、対応テーブルは、図１０において後述する。そして、出力部２３は、記憶部２５に記憶された対応テーブルをグラフ化した同時実行数決定グラフを、出力装置９０５に出力する（Ｓ５００）。なお、同時実行決定グラフは、図１１において後述する。
【００５２】
そして、処理部２２は、対応テーブルまたは同時実行決定グラフに基づいて、同時実行数および当該同時実行数における各ＩＣＰ値を決定する（Ｓ６００）。すなわち、処理部２２は、対応テーブルを参照し、あらかじめ定められた要求保証値より大きな最大保証値を有する同時実行数を抽出する。そして、処理部２２は、抽出した同時実行数の中で、最小の同時実行数を決定する。そして、処理部２２は、対応テーブルを参照して、決定した同時実行数の各ＩＣＰ値を特定する。そして、処理部２２は、通信処理部２３を用いて、実行管理装置３に決定した同時実行数と、各ＩＣＰ値とを送信する（Ｓ７００）。また、処理部２２は、通信処理部２３を用いて、Ｓ２００で受け付けたＵＣＰ値を実行管理装置３に送信する。
【００５３】
次に、対応テーブルおよび同時実行数決定グラフについて説明する。
【００５４】
図１０は、対応テーブルの一例を示した図である。図示するように、対応テーブルは、同時実行数（ｋ）１０１と、最大保証値（QoS(ｋ)）１０２と、ＩＣＰ番号およびＩＰＣ値１０３と、を有する。例えば、同時実行数が「１」の場合、処理部２２は、図６に示す保証値テーブルを参照し、最大保証値である「１１３２．０５８」６６０を、対応テーブルの所定のセル１０４に設定する。また、処理部２２は、図６に示す保証値テーブルを参照し、最大保証値のグループのＩＣＰ番号およびＩＣＰ値を、所定のエリア１０５に設定する。同様に、処理部２２は、同時実行数が「２」の場合、図７に示す保証値テーブルを参照し、最大保証値である「１１５１．７６４」７６０を、また、最大保証値のグループのＩＣＰ番号およびＩＣＰ値を、対応テーブルの所定のセルに設定する。
【００５５】
図１１は、同時実行数決定グラフの一例を示した図である。図示するように、本グラフの縦軸は保証値（Mflop/s）を、横軸は同時実行数を示している。そして、本グラフには、図１０に示す各最大保証値をグラフ化した折れ線１１１と、あらかじめ定められた要求保証値を示す直線１１２と、が表示されている。なお、図示する例では、要求保証値は１，１５３Mflop/s１１２である。したがって、処理部２２は、要求保証値より大きな保証値を有する同時実行数「３」と「４」を抽出する。そして、処理部２２は、抽出した同時実行数のうち、最小の同時実行数である「３」を特定する。このように、各最大保証値をグラフ化した折れ線１１１と、要求保証値の直線１１２とを、クラフに表示することのより、条件設定支援装置２を使用するユーザは、最適な同時実行数を容易に把握することができる。
【００５６】
次に、実行管理装置３の処理について説明する。なお、所定のプログラムを利用（実行）するＡＳＰサイトの運用管理者などが、実行管理装置３を使用する。
【００５７】
図１２は、実行管理装置３の処理フロー図である。実行管理装置３の実行管理部３１は、通信処理部３２を用いて、条件設定支援装置２から、同時実行数および各ＩＣＰ値（S-IPC-1からS-IPC-k）を受信する（Ｓ１２１）。また、実行管理部３１は、通信処理部３２を用いて、条件設定支援装置２から、ＵＣＰ値を受信する。
【００５８】
そして、実行管理部３１は、受信した同時実行数、各ＩＣＰ値およびＵＣＰ値を記憶部３１に記憶する。そして、実行管理部３１は、受信した同時実行数の数だけ実行装置４を割り当て、当該割り当てた実行装置４各々に受信したＩＣＰ値をそれぞれ設定する（Ｓ１２２）。図１０に示す対応テーブルにおいて、同時実行数を３とした場合、実行管理部３１は、ＩＣＰ番号「４」のＩＣＰ値(５−５−２)と、ＩＣＰ番号「５」のＩＣＰ値（５−５−４）と、ＩＣＰ番号「７」のＩＣＰ値（６−６−２）を、割り当てた実行装置４各々のプログラムに設定する。また、実行管理部３１は、割り当てた実行装置４各々に、受信したＵＣＰ値を設定する。
【００５９】
そして、実行管理部３１は、各ＩＰＣ値とＵＣＰ値とが設定された実行装置４各々に、同一のプログラムの同時実行を指示する（Ｓ１２３）。これにより、各実行装置４は、同一のプログラムを異なるＩＣＰ値で実行する。そして、各実行装置４は、プログラムの実行終了後、実行結果（計算結果）を実行管理装置３に通知する。なお、各実行装置４が実行するプログラムは、あらかじめ実行装置のメモリ９０２または外部記憶装置９０３に記憶されているものとする。
【００６０】
そして、実行管理部３１は、最も早く通知された実行結果のみを受信し、当該受信結果を、記憶部３３に記憶する。そして、実行管理部３１は、最も早く通知した実行装置４以外の実行装置４のプログラムの実行をキャンセルする（Ｓ１２４）。
【００６１】
以上、本発明の一実施形態を説明した。
【００６２】
本実施形態では、複数のＩＣＰ値を設定し、複数の実行装置で同一のプログラムを同時実行する。これにより、メモリ競合またはカラム競合などにより、プログラムの実行性能にばらつきがある場合であっても、より高い保証値を設定することができる。また、所定の保証値を確保するために有効な同時実行数を決定することができる。
【００６３】
また、本実施形態では、実行するプログラムの処理を変更することなく、最適なＩＣＰ値を特定すること、より高い保証値を設定することができる。
【００６４】
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【００６５】
例えば、本実施形態では、ＩＣＰを、プログラムの計算結果（実行結果）には影響を与えないが、プログラムの実行性能に影響を与えるパラメータとした。しかしながら、本発明はこれに限定されず、ＩＣＰを、プログラムの計算精度に影響を与えるパラメータとしてもよい。この計算精度に影響を与えるＩＣＰにおいて、各ＩＰＣ値を設定してプログラムを実行した場合、所定の時間内に計算結果が出力されるが、その精度にばらつきが生じる。この計算精度に影響を与えるＩＣＰの場合、保証値は精度保証である。情報収集装置１は、各ＩＰＣ値を設定してプログラムを実行し、計算結果を図４に示す統計情報テーブルに設定する。そして、条件設定支援装置２は、図５に示す処理を実行し、同時実行数毎に保証値テーブルを作成し、最大精度保証値を特定する。そして、条件設定支援装置２は、あらかじめ定められた精度保証値を確保するために必要な同時実行数および、ＩＣＰ値を特定する。そして、実行管理装置３は、所定の時間内で、各実行装置４が実行した計算結果にうち、最も高精度の計算結果のみを採用する。
【００６６】
また、本実施形態では、プログラムの実行性能に影響を与える１つのＩＣＰについて、説明した。しかしながら、本発明はこれに限定されず、複数の種類のＩＣＰを用いて、複数の目的関数（指標）に対して最大となる保証値を設定することとしてもよい。例えば、本実施形態で用いたプログラムの実行性能に影響を与えるパラメータ（第１のＩＣＰ）と、プログラムの計算結果には影響を与えないが使用するメモリ量に影響を与えるパラメータ（第２のＩＣＰ）とを用いて、実行時間および使用メモリ量の両方の目的関数に対して保証値のレベルを向上させることとしてもよい。なお、複数の種類のＩＣＰを用いる場合は、組合せ最適化処理を実行することにより、複数の目的関数に対して保証値のレベルを向上させることができる。なお、組合せ最適化処理については、「組合せ最適化とアルゴリズム」（久保幹雄  等著、共立出版）に記載されている。
【図面の簡単な説明】
【００６７】
【図１】図１は、本発明の一実施形態が適用された実行条件設定支援システムの概略図である。
【図２】図２は、各装置のハードウェア構成例を示す図である。
【図３】図３は、情報収集装置の処理フロー図である。
【図４】図４は、統計情報テーブルの一例を示す図である。
【図５】図５は、条件設定支援装置の処理フロー図である。
【図６】図６は、同時実行数が１の場合の保証値テーブルの一例を示す図である。
【図７】図７は、同時実行数が２の場合の保証値テーブルの一例を示す図である。
【図８】図８は、同時実行数が３の場合の保証値テーブルの一例を示す図である。
【図９】図９は、同時実行数が４の場合の保証値テーブルの一例を示す図である。
【図１０】図１０は、対応テーブルの一例を示す図である。
【図１１】図１１は、同時実行数決定グラフの一例を示す図である。
【図１２】図１２は、実行管理装置の処理フロー図である。
【図１３】図１３は、プログラムの実測結果を示すグラフである。
【符号の説明】
【００６８】
１：情報収集装置、１１：入力受付部、１２：処理部、１３：通信処理部、１４：記憶部、２：条件設定支援装置、２１：入力受付部、２２：処理部、２３：出力部、２４：通信処理部、２５：記憶部、３：実行管理装置、３１：実行管理部、３２：通信処理部、３３：記憶部、４：実行装置、５：ネットワーク、５：専用線
【図１】
2006031605.tif 000003
【図２】
2006031605.tif 000004
【図３】
2006031605.tif 000005
【図４】
2006031605.tif 000006
【図５】
2006031605.tif 000007
【図６】
2006031605.tif 000008
【図７】
2006031605.tif 000009
【図８】
2006031605.tif 000010
【図９】
2006031605.tif 000011
【図１０】
2006031605.tif 000012
【図１１】
2006031605.tif 000013
【図１２】
2006031605.tif 000014
【図１３】
2006031605.tif 000015