(57)【要約】【課題】プログラムの適切な実行条件を効率的に算出する。【解決手段】処理部１２は、ノード数とプロセス数とを示す第１サンプル点４に従って第１プログラム２を計算ノード群に実行させ、第１サンプル点４それぞれの間の評価値の変動率に基づく第１統計量とを算出する。処理部１２は、第１統計量が第１閾値以下になるまで第１プログラム２をランダムに生成する。処理部１２は、第１サンプル点４から所定距離内に第２サンプル点５を追加し、第２サンプル点５に従って第１プログラム２を実行したときの評価値を用いて、第１サンプル点４ごとの第２統計量を算出する。処理部１２は、第２統計量が第２閾値以下になるまで、第２サンプル点５を生成する。そして処理部１２は、第１サンプル点４と第２サンプル点５との評価値を補間して、推奨するノード数とプロセス数とを決定する。【選択図】図１
2018120387.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１プログラムの実行に使用するノード数と、前記第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第１サンプル点をランダムに複数生成し、
前記第１サンプル点に示されるノード数とプロセス数とに従って前記第１プログラムを計算ノード群に実行させて、実行時に収集した情報に基づいて前記第１サンプル点の評価値を算出し、
複数の前記第１サンプル点から２つの前記第１サンプル点を選択して生成される複数の第１サンプル対それぞれにおける前記第１サンプル点間の距離に対する前記評価値の変動率が大きいほど大きな値となる第１統計量を算出し、
前記第１統計量が第１閾値以下になるまで、ランダムな前記第１サンプル点の生成と前記評価値の算出、および前記第１統計量の算出を繰り返し、
前記第１プログラムの実行に使用するノード数と、前記第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第２サンプル点を、前記第１サンプル点から所定距離内に生成し、
前記第２サンプル点に示されるノード数とプロセス数とに従って前記第１プログラムを前記計算ノード群に実行させて、実行時に収集した情報に基づいて前記第２サンプル点の前記評価値を算出し、
複数の前記第１サンプル点それぞれを対象として、対象の前記第１サンプル点と、対象の前記第１サンプル点から前記所定距離内の他の前記第１サンプル点および前記第２サンプル点それぞれとの間の距離に対する前記評価値の変動率が大きいほど大きな値となる第２統計量を算出し、
複数の前記第１サンプル点それぞれの前記第２統計量が第２閾値以下になるまで、前記第２統計量が前記第２閾値を超えている前記第１サンプル点から前記所定距離内への前記第２サンプル点の生成と前記評価値の算出、および前記第２統計量の算出を繰り返し、
前記第１サンプル点と前記第２サンプル点との前記評価値の補間結果に基づいて、前記第１プログラムを実行する際に推奨するノード数とプロセス数とを決定する、
処理を実行させる並列処理パラメータ決定プログラム。
【請求項２】
前記第１統計量の算出では、複数の前記第１サンプル対それぞれについて、２つの前記第１サンプル点間の前記評価値の差分を前記第１サンプル点間の距離で除算し、除算結果の絶対値の平均を前記第１統計量とする、
請求項１記載の並列処理パラメータ決定プログラム。
【請求項３】
前記第２統計量の算出では、対象の前記第１サンプル点と他の前記第１サンプル点または前記第２サンプル点との間の前記評価値の差分を、対象の前記第１サンプル点と他の前記第１サンプル点または前記第２サンプル点との間の距離で除算し、他の前記第１サンプル点および前記第２サンプル点それぞれについて得られた除算結果の絶対値の平均を、前記第２統計量とする、
請求項１または２記載の並列処理パラメータ決定プログラム。
【請求項４】
前記第１サンプル点または前記第２サンプル点の前記評価値の算出では、前記第１サンプル点または前記第２サンプル点に示されるノード数とプロセス数とに従って前記第１プログラムを前記計算ノード群に実行させたときの処理時間、演算効率、または消費電力のうちの２つ以上を変数とする計算式に基づいて、前記評価値を算出する、
請求項１ないし３のいずれかに記載の並列処理パラメータ決定プログラム。
【請求項５】
前記第１サンプル点または前記第２サンプル点の前記評価値の算出では、前記処理時間、前記演算効率、または前記消費電力のうちの２つ以上を変数とし、前記変数それぞれに重み付けを行って前記評価値を算出する、
請求項４記載の並列処理パラメータ決定プログラム。
【請求項６】
推奨するノード数とプロセス数との決定では、補間処理によって、前記第１サンプル点および前記第２サンプル点における前記評価値を通る曲面を生成し、前記曲面における前記評価値の最大値または最小値となる位置のノード数とプロセス数とを、前記第１プログラムを実行する際に推奨するノード数とプロセス数とに決定する、
請求項１ないし５のいずれかに記載の並列処理パラメータ決定プログラム。
【請求項７】
前記第１サンプル点の生成では、前記第１プログラムの実行に使用するノード数、前記第１プログラムを実行する際の１ノード当たりのプロセス数、および前記第１プログラムを実行する際の１プロセス当たりのスレッド数を座標値とする前記第１サンプル点をランダムに複数生成し、
前記第１サンプル点の前記評価値の算出では、前記第１サンプル点に示されるノード数、プロセス数、およびスレッド数に従って前記第１プログラムを計算ノード群に実行させて、実行時に収集した情報に基づいて前記第１サンプル点の評価値を算出し、
前記第２サンプル点の生成では、前記第１プログラムの実行に使用するノード数、前記第１プログラムを実行する際の１ノード当たりのプロセス数、および前記第１プログラムを実行する際の１プロセス当たりのスレッド数を座標値とする第２サンプル点を、前記第１サンプル点から所定距離内に生成し、
前記第２サンプル点の前記評価値の算出では、前記第２サンプル点に示されるノード数、プロセス数、およびスレッド数に従って前記第１プログラムを計算ノード群に実行させて、実行時に収集した情報に基づいて前記第２サンプル点の評価値を算出し、
前記決定では、前記第１サンプル点と前記第２サンプル点との前記評価値の補間結果に基づいて、前記第１プログラムを実行する際に推奨する、ノード数、プロセス数、およびスレッド数を決定する、
請求項１ないし６のいずれかに記載の並列処理パラメータ決定プログラム。
【請求項８】
コンピュータが、
第１プログラムの実行に使用するノード数と、前記第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第１サンプル点をランダムに複数生成し、
前記第１サンプル点に示されるノード数とプロセス数とに従って前記第１プログラムを計算ノード群に実行させて、実行時に収集した情報に基づいて前記第１サンプル点の評価値を算出し、
複数の前記第１サンプル点から２つの前記第１サンプル点を選択して生成される複数の第１サンプル対それぞれにおける前記第１サンプル点間の距離に対する前記評価値の変動率が大きいほど大きな値となる第１統計量を算出し、
前記第１統計量が第１閾値以下になるまで、ランダムな前記第１サンプル点の生成と前記評価値の算出、および前記第１統計量の算出を繰り返し、
前記第１プログラムの実行に使用するノード数と、前記第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第２サンプル点を、前記第１サンプル点から所定距離内に生成し、
前記第２サンプル点に示されるノード数とプロセス数とに従って前記第１プログラムを前記計算ノード群に実行させて、実行時に収集した情報に基づいて前記第２サンプル点の前記評価値を算出し、
複数の前記第１サンプル点それぞれを対象として、対象の前記第１サンプル点と、対象の前記第１サンプル点から前記所定距離内の他の前記第１サンプル点および前記第２サンプル点それぞれとの間の距離に対する前記評価値の変動率が大きいほど大きな値となる第２統計量を算出し、
複数の前記第１サンプル点それぞれの前記第２統計量が第２閾値以下になるまで、前記第２統計量が前記第２閾値を超えている前記第１サンプル点から前記所定距離内への前記第２サンプル点の生成と前記評価値の算出、および前記第２統計量の算出を繰り返し、
前記第１サンプル点と前記第２サンプル点との前記評価値の補間結果に基づいて、前記第１プログラムを実行する際に推奨するノード数とプロセス数とを決定する、
並列処理パラメータ決定方法。
【請求項９】
第１プログラムを記憶する記憶部と、
前記第１プログラムの実行に使用するノード数と、前記第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第１サンプル点をランダムに複数生成し、前記第１サンプル点に示されるノード数とプロセス数とに従って前記第１プログラムを計算ノード群に実行させて、実行時に収集した情報に基づいて前記第１サンプル点の評価値を算出し、複数の前記第１サンプル点から２つの前記第１サンプル点を選択して生成される複数の第１サンプル対それぞれにおける前記第１サンプル点間の距離に対する前記評価値の変動率が大きいほど大きな値となる第１統計量を算出し、前記第１統計量が第１閾値以下になるまで、ランダムな前記第１サンプル点の生成と前記評価値の算出、および前記第１統計量の算出を繰り返し、前記第１プログラムの実行に使用するノード数と、前記第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第２サンプル点を、前記第１サンプル点から所定距離内に生成し、前記第２サンプル点に示されるノード数とプロセス数とに従って前記第１プログラムを前記計算ノード群に実行させて、実行時に収集した情報に基づいて前記第２サンプル点の前記評価値を算出し、複数の前記第１サンプル点それぞれを対象として、対象の前記第１サンプル点と、対象の前記第１サンプル点から前記所定距離内の他の前記第１サンプル点および前記第２サンプル点それぞれとの間の距離に対する前記評価値の変動率が大きいほど大きな値となる第２統計量を算出し、複数の前記第１サンプル点それぞれの前記第２統計量が第２閾値以下になるまで、前記第２統計量が前記第２閾値を超えている前記第１サンプル点から前記所定距離内への前記第２サンプル点の生成と前記評価値の算出、および前記第２統計量の算出を繰り返し、前記第１サンプル点と前記第２サンプル点との前記評価値の補間結果に基づいて、前記第１プログラムを実行する際に推奨するノード数とプロセス数とを決定する、処理部と、
を有する並列処理管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理パラメータ決定プログラム、並列処理パラメータ決定方法、および並列処理管理装置に関する。
【背景技術】
【０００２】
高性能計算機（ＨＰＣ：High-Performance Computing）では、多数の計算ノードを用いて高度な計算が行われる。各計算ノードは、多数のプロセッサコアを有している。このようなＨＰＣでアプリケーションプログラム（以下、単に「アプリ」と呼ぶ）を実行する場合、アプリを実行するジョブで使用する計算ノードの数（ノード数）や、生成するプロセス数が、実行条件として指定される。
【０００３】
適切な実行条件は、処理速度や消費電力などの様々な要因を考慮して決定される。例えばいくら処理速度が速くても、過剰な電力を消費するようでは、適切な実行条件とは言えない。すなわち、複数の判断指標についてバランスの取れた値を得ることができる実行条件が、適切な実行条件となる。
【０００４】
適切な実行条件を求めることは、最適化問題の一種である。コンピュータシステムに関する最適化問題については、様々な解決手法が考えられている。例えば最適設計、システム同定、画像再構成、最適制御などの分野において、最適解を効率的にかつ信頼性良く探索することの可能な解探索装置が開示されている。また、遺伝的アルゴリズムを用いた最適化調整方法において、ユーザにとって最適と思われる機器の調整を効率よく行う方法に関する技術も開示されている。さらに、計算負荷の高いＷｅｂサービス等の処理サービスを提供するシステムにおいて、パフォーマンスを保証した公平なサービスを実現するネットワークシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０６−１４９８６６号公報
【特許文献２】特開２００３−０５０９８７号公報
【特許文献３】特開２００３−０５８５１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
アプリを実行する際に並列度を上げることで、どの程度、実行時間が短縮できるのかは、アプリごとに異なる。そのため適切な実行条件についても、アプリごとに異なってくる。そこで、特定のアプリの適切な実行条件（ノード数、プロセス数、スレッド数などの指定項目の値の組み合わせ）を求める場合、アプリを実際に実行させて、適切な実行条件を求め出すこととなる。このとき使用可能なノード数すべてを用い、考えられるすべての実行条件でアプリを実行して、処理時間や処理効率を比較すれば、アプリの性能を高めることができる適切な実行条件を見つけることが可能である。しかし、近年、ノード数の増加、マルチコアの主流化に伴い、実行条件として指定される指定項目の値の組み合わせが増大しているため、大規模なシステムにおいてすべての実行条件について実際にアプリを実行するのは困難である。なお、このような問題はアプリに限ったことではなく、並列処理が可能なすべてのプログラムにおいて生じる問題である。
【０００７】
１つの側面では、本発明は、プログラムの適切な実行条件を効率的に算出することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、以下の処理をコンピュータに実行させる並列処理パラメータ決定プログラムが提供される。
コンピュータは、第１プログラムの実行に使用するノード数と、第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第１サンプル点をランダムに複数生成する。次にコンピュータは、第１サンプル点に示されるノード数とプロセス数とに従って第１プログラムを計算ノード群に実行させて、実行時に収集した情報に基づいて第１サンプル点の評価値を算出する。次にコンピュータは、複数の第１サンプル点から２つの第１サンプル点を選択して生成される複数の第１サンプル対それぞれにおける第１サンプル点間の距離に対する評価値の変動率が大きいほど大きな値となる第１統計量を算出する。次にコンピュータは、第１統計量が第１閾値以下になるまで、ランダムな第１サンプル点の生成と評価値の算出、および第１統計量の算出を繰り返す。次にコンピュータは、第１プログラムの実行に使用するノード数と、第１プログラムを実行する際の１ノード当たりのプロセス数とを座標値とする第２サンプル点を、第１サンプル点から所定距離内に生成する。次にコンピュータは、第２サンプル点に示されるノード数とプロセス数とに従って第１プログラムを計算ノード群に実行させて、実行時に収集した情報に基づいて第２サンプル点の評価値を算出する。次にコンピュータは、複数の第１サンプル点それぞれを対象として、対象の第１サンプル点と、対象の第１サンプル点から所定距離内の他の第１サンプル点および第２サンプル点それぞれとの間の距離に対する評価値の変動率が大きいほど大きな値となる第２統計量を算出する。次にコンピュータは、複数の第１サンプル点それぞれの第２統計量が第２閾値以下になるまで、第２統計量が第２閾値を超えている第１サンプル点から所定距離内への第２サンプル点の生成と評価値の算出、および第２統計量の算出を繰り返す。そしてコンピュータは、第１サンプル点と第２サンプル点との評価値の補間結果に基づいて、第１プログラムを実行する際に推奨するノード数とプロセス数とを決定する。
【発明の効果】
【０００９】
１態様によれば、プログラムの適切な実行条件を効率的に算出する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る並列処理管理装置の構成の一例を示す図である。
【図２】第２の実施の形態のシステム構成の一例を示す図である。
【図３】管理ノードのハードウェア構成の一例を示す図である。
【図４】管理ノードが有する機能の一例を示すブロック図である。
【図５】サンプル情報の一例を示す図である。
【図６】サイジング処理の手順を示すフローチャートの前半である。
【図７】サイジング処理の手順を示すフローチャートの後半である。
【図８】大域的な変動率と局所的な変動率との計算状況を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず、第１の実施の形態に係る並列処理管理装置について説明する。並列処理管理装置は、プログラムの並列処理における適切なパラメータを決定する並列処理パラメータ決定方法を実現する装置である。
【００１２】
図１は、第１の実施の形態に係る並列処理管理装置の構成の一例を示す図である。並列処理管理装置１０は、複数の計算ノード１ａ，１ｂ，・・・を含む計算ノード群に対して実行させるジョブを管理する。実行させるジョブには、第１プログラム２の並列実行が含まれる。また並列処理管理装置１０は、第１プログラム２を実行する際の適切なパラメータを決定することができる。パラメータには、第１プログラム２の実行に使用するノード数と、第１プログラム２を実行する際の１ノード当たりのプロセス数とが含まれる。なお、パラメータとして、第１プログラム２を実行する際の１プロセス当たりのスレッド数を含めることもできる。
【００１３】
並列処理管理装置１０は、記憶部１１と処理部１２とを有する。記憶部１１は、第１プログラム２とサンプル情報３とを記憶する。記憶部１１は、例えば並列処理管理装置１０が有するメモリまたはストレージ装置である。
【００１４】
第１プログラム２は、適切なパラメータの解析対象となるプログラムである。サンプル情報３は、第１プログラム２の実行に使用するノード数と、第１プログラム２を実行する際の１ノード当たりのプロセス数とを座標値とするサンプル点に関する情報である。例えばサンプル情報３には、サンプル点のＩＤごとの、ノード数、プロセス数、処理時間、演算効率、および評価値が設定されている。サンプル情報３に、サンプル点ごとの消費電力を含めてもよい。サンプル点ごとの処理時間、演算効率、および消費電力は、そのサンプル点に示されるノード数およびプロセス数で第１プログラムを実行することで収集される情報である。
【００１５】
評価値は、サンプル点に示されるノード数とプロセス数とによる第１プログラム２の実行が、処理速度、低消費電力、資源の有効利用などの観点から適切かどうかを示す数値である。評価値は、例えば処理時間、演算効率、消費電力のうちの２つを変数とする評価式によって算出される。評価式に用いる変数それぞれには重みを設定することができる。
【００１６】
処理部１２は、適切なパラメータを決定するための処理を実行する。例えば処理部１２は、並列処理管理装置１０が有するプロセッサである。処理部１２は、例えば並列処理パラメータ決定プログラムを実行することで、適切なパラメータを決定することができる。処理部１２が実行する処理は、以下の通りである。
【００１７】
まず処理部１２は、第１プログラム２の実行に使用するノード数と、第１プログラム２を実行する際の１ノード当たりのプロセス数とを座標値とする第１サンプル点４をランダムに複数生成する。次に処理部１２は、第１サンプル点４に示されるノード数とプロセス数とに従って第１プログラム２を計算ノード群に実行させる。これにより、処理部１２は、第１サンプル点４に従った第１プログラム２の実行時の処理時間、演算効率、消費電力などの情報を得ることができる。
【００１８】
処理部１２は、実行時に取得した情報に基づいて、複数の第１サンプル点４それぞれの評価値を算出する。例えば処理部１２は、処理時間と演算効率とのそれぞれに重み付けを行った所定の評価式によって、評価値を算出する。
【００１９】
また処理部１２は、複数の第１サンプル点４から２つの第１サンプル点４を選択して生成される複数の第１サンプル対それぞれについての変動率に基づいて、第１統計値を算出する。変動率は、例えば第１サンプル対に含まれる２つの第１サンプル点４間の評価値の差分を、第１サンプル点４間の距離で除算した値の絶対値である。処理部１２は、例えば複数の第１サンプル対それぞれの変動率の平均を第１統計量とする。
【００２０】
処理部１２は、第１統計量が第１閾値以下になるまで、ランダムな前記第１サンプル点４の生成と評価値の算出、および第１統計量の算出を繰り返す。
また処理部１２は、第１プログラム２の実行に使用するノード数と、第１プログラム２を実行する際の１ノード当たりのプロセス数とを座標値とする第２サンプル点５を、第１サンプル点４から所定距離内に生成する。例えば処理部１２は、注目する第１サンプル点４から所定距離内の他の第１サンプル点４または第２サンプル点５の中から、注目する第１サンプル点４の評価値の差が最も大きい第１サンプル点４または第２サンプル点５を特定する。そして処理部は、注目する第１サンプル点４と、特定した第１サンプル点４または第２サンプル点５との中間点に、新たな第２サンプル点５を生成する。
【００２１】
そして処理部１２は、第２サンプル点５に示されるノード数とプロセス数とに従って第１プログラム２を計算ノード群に実行させる。これにより処理部１２は、第２サンプル点５に従った第１プログラム２の実行時の処理時間、演算効率、消費電力などの情報を得ることができる。
【００２２】
処理部１２は、第１プログラム２実行時に取得した情報に基づいて、第２サンプル点５の評価値を算出する。また処理部１２は、複数の第１サンプル点４それぞれを対象として、対象の第１サンプル点４と、対象の第１サンプル点４から所定距離内の他の第１サンプル点４および第２サンプル点５それぞれとの間の距離に対する評価値の変動率を算出する。そして処理部１２は、他の第１サンプル点４および第２サンプル点５それぞれの変動率に基づいて第２統計量を算出する。第２統計量は、評価値の変動率が大きいほど大きな値となる。例えば処理部１２は、対象の第１サンプル点４の評価値と、その第１サンプル点４から所定距離内にある他の第１サンプル点４または第２サンプル点５の評価値との差分を、第１サンプル点４と第２サンプル点５との間の距離で除算する。処理部１２は、除算結果の絶対値を、対象の第１サンプル点４に対する他の第１サンプル点４または第２サンプル点５の変動率とする。そして処理部１２は、対象の第１サンプル点４から所定距離内にある他の第１サンプル点４および第２サンプル点５それぞれの変動率の平均を、対象の第１サンプル点４の第２統計量とする。
【００２３】
処理部１２は、複数の第１サンプル点４それぞれの第２統計量が第２閾値以下になるまで、第２統計量が第２閾値を超えている第１サンプル点４から所定距離内への第２サンプル点５の生成と評価値の算出、および第２統計量の算出を繰り返す。
【００２４】
そして処理部１２は、第１サンプル点４と第２サンプル点５との評価値の補間処理を行い、補間結果に基づいて、第１プログラム２を実行する際に推奨するノード数とプロセス数（準最適解）を決定する。例えば処理部１２は、補間処理によって、第１サンプル点４および第２サンプル点５における評価値を通る評価値曲面６を生成する。そして処理部１２は、評価値曲面６における評価値の最大値または最小値となる位置のノード数とプロセス数とを、第１プログラム２を実行する際に推奨するノード数とプロセス数とに決定する。
【００２５】
このような並列処理管理装置１０によれば、第１統計量が第１閾値以下になるまで第１サンプル点４が追加される。第１サンプル点４の数が少ないうちは、第１サンプル点４の評価値の多くが、極大値または極小値となる。この場合、第１サンプル対の変動率が大きくなり、第１統計量も大きくなる。このような状況では、他にも評価値が極大値または極小値となるノード数とプロセス数の組が多数存在することが予想できる。
【００２６】
第１サンプル点４の数を増加させていき、評価値が極大値や極小値となる第１サンプル点４の割合が減ってくれば、変動率が小さい第１サンプル対が増加し、第１統計量が低下する。そして、第１統計量が第１閾値以下になった後は第１サンプル点４を追加しないことで、余分な第１サンプル点４の追加、およびその第１サンプル点４に従った第１プログラム２の実行を抑止することができ、処理が効率化される。
【００２７】
並列処理管理装置１０は、さらに第１サンプル点４の周囲に、第２統計量が第２閾値以下になるまで第２サンプル点５を追加している。そのため、第１サンプル点４の周囲に、第１サンプル点４よりもよい評価値の点（プロセス数とノード数）が存在しているとき、そのような点を見つけ出すことができる。これにより評価値曲面６の精度が向上し、適切な準最適解を決定することができる。すなわち、プログラムの適切な実行条件を効率的に算出することができる。
【００２８】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態では、プログラムの実行条件を示すパラメータとして、ノード数、プロセス数、およびスレッド数を用いる。そして、コンピュータによって、ノード数、プロセス数、およびスレッド数の準最適解を求める。
【００２９】
図２は、第２の実施の形態のシステム構成の一例を示す図である。ネットワーク２０を介して、複数の計算ノード３１，３２，・・・が管理ノード１００に接続されている。複数の計算ノード３１，３２，・・・は、アプリを実行するコンピュータである。第２の実施の形態におけるシステムは大規模なシステムであり、例えば計算ノード３１，３２，・・・の数が１００万台程度となる。
【００３０】
管理ノード１００は、複数の計算ノード３１，３２，・・・に対して、アプリの実行を指示する。また管理ノード１００は、複数の計算ノード３１，３２，・・・を利用して、アプリを実行するに当たり、使用する計算ノード数、プロセス数、およびスレッド数の適切な値を算出することができる。
【００３１】
図３は、管理ノードのハードウェア構成の一例を示す図である。管理ノード１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３２】
メモリ１０２は、管理ノード１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３３】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３４】
ストレージ装置１０３は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００３５】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３６】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３７】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３８】
機器接続インタフェース１０７は、管理ノード１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３９】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４０】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した装置も、図３に示した管理ノード１００と同様のハードウェアにより実現することができる。
【００４１】
管理ノード１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。管理ノード１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理ノード１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また管理ノード１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４２】
次に、使用する計算ノード数、プロセス数、スレッド数の適切な値を算出することの困難性について、詳細に説明する。
管理ノード１００は、複数の計算ノード３１，３２，・・・に対して、アプリの実行を指示する際、２以上の計算ノードで並列に実行させることができる。アプリの実行に使用する計算ノードの数（ノード数）が多いほど、アプリを短時間で実行することができる。その一方、ノード数が多いほど、単位時間当たりの消費電力が多くなる。また計算ノード数が多いほど、計算ノード間の通信が多く発生すると共に、他の計算ノードからのデータを待つ時間が発生し、１台当たりのプロセッサの使用効率が低下する。プロセッサの使用効率が低下すると、ノード数を増加させても、アプリ実行の所要時間はあまり短縮されない。そこで資源の有効利用や消費電力削減の観点から、アプリごとに適切なノード数が存在する。
【００４３】
また管理ノード１００からいずれかの計算ノードにアプリの実行を指示するとき、１台の計算ノードでアプリを実行する際のプロセス数を指定することができる。計算ノード内のすべてのプロセッサコアを使用する場合、計算ノード内のプロセス数が決まれば、スレッド数も一意に確定する。例えば、１台の計算ノードにプロセッサコアが３２個ある場合、指定したプロセス数が１であれば、その計算ノードにおいてプロセスが１つ生成され、そのプロセス内で３２個のスレッドが生成される。そしてプロセッサコア１つ当たり、１つのスレッドが実行される。指定したプロセス数が２であれば、２個のプロセスが生成され、各プロセス内で１６個スレッドが生成される。このように、プロセス数が多くなるほど、１プロセス当たりのスレッド数は少なくなる。１つの計算ノードで実行するプロセス数が多いほど、並列して実行する処理の独立度が高くなるが、メモリの消費が多くなるなどの弊害もある。そして、どの程度のプロセス数が適切なのかは、アプリによって異なる。
【００４４】
このように、アプリを実行するのに適切なノード数とプロセス数との組み合わせを、ユーザ個人が判断するのは困難である。しかも、計算ノード内のプロセッサコアの一部しか使用しない場合もあり得る。例えば一部のプロセッサコアを使用せずに停止させることで、消費電力を抑えることができる。プロセッサコアの一部しか使用しない場合、１台の計算ノードで実行するプロセス数が決まっても、スレッド数は一意には決まらない。すなわち、スレッド数の増加と消費電力との関係とを勘案して、適切なスレッド数を決定することになる。そうすると、適切な実行条件として、ノード数とプロセス数に加え、スレッド数を決定することとなる。そのため、適切な実行条件をユーザ個人が判断するのは、さらに困難となる。
【００４５】
そこで、第２の実施の形態では、管理ノード１００が有するサイジング機能によって、適切な実行条件を決定する。
サイジングとは、アプリの性能要件をできる限り高いレベルで満たすノード数、プロセス数、スレッド数を選択する処理である。性能要件は、アプリの実行性能の善し悪しの判断指標である。一般的に、実行時間が速いこと、演算効率が高いことが、実行性能がよいことになる。性能要件は、処理時間や演算効率を変数として含む評価関数で表される。
【００４６】
例えば、サイジングにおいて、ノード数、プロセス数、およびスレッド数のすべての組み合わせについてアプリを実行し、処理時間や演算効率を比較すれば、アプリケーション性能要件を最も高いレベルで満たすノード数、プロセス数、およびスレッド数の組み合わせを見つけることが可能である。しかし、システム内のノード数が膨大であり、計算ノード内のプロセッサコア数も多いと、ノード数、プロセス数、およびスレッド数の組み合わせの数が非常に多くなり、サイジングに要する時間も非常に長くなる。ここでノード数とプロセス数との組み合わせだけを考えても、システム内の全ノード数が１００、各計算ノード内のプロセッサコア数が２０の場合、２０００（＝１００×２０）通りのノード数とプロセス数の組み合わせがある。すると、２０００通りの組み合わせを実行して最適なノード数とプロセス数の組み合わせを見つけ出すこととなる。選択する値としてスレッド数を追加すると、最適な実行条件の組み合わせ数はさらに増大する。そのため、ノード数が１００万台にまでなると、すべての組み合わせについて、アプリを実行させるのは困難である。
【００４７】
また、アプリも複雑化し１回当たりの実行時間も増加する傾向にある。そのため、アプリの性能要件を高いレベルで満たす組み合わせを見つけ出すまでの時間がさらに長くなっている。そこで、最適なノード数、プロセス数、およびスレッド数の構成を効率的に見つけ出し、見つけ出したノード数とプロセス数の構成で性能評価や改善を行うことが重要となってきている。
【００４８】
なお、サイジングの効率化策として、アプリケーションの実行ステップ数を削減し、１回あたりの実行時間を短くすることにより、サイジングにかかる時間を削減することが考えられる。しかし、この場合、正確な結果が得られない場合があり得る。すなわち、サイジングのためにアプリケーションの実行ステップを削減すると、相対的に初期化の時間が占める比率が大きくなり、ノード数が増えても初期化の時間は変わらず、実行時間のみが短くなる。そのため、アプリ全体の正確な演算効率を求めることができない。また、実行の途中でアプリの挙動が変わる場合、挙動が変わる前と後で実行効率が異なることから、実行ステップ数の削減で行った結果のみでは、正確な演算効率が得られない場合がある。
【００４９】
また、使用できるノード数、プロセス数、およびスレッド数の中から試行錯誤的に適当なノード数、プロセス数、およびスレッド数の組み合わせを決めて処理を実行することも考えられる。この場合、続けて、先に決めたノード数などの値の周辺のノード数、プロセス数、およびスレッド数の組み合わせで処理を実行し、より性能の良い組み合わせに絞り込む。このような絞り込みでは、真の最適な組み合わせではなく、局所的な最適解を選んでしまい、グローバルな最適値が得られない可能性がある。ここで、局所最適解を選択することを避けるためにできるだけ多くのノード数、プロセス数、およびスレッド数の組み合わせを試すと、実行時間が最大ノード数×最大プロセス数×最大スレッド数に比例して増加し、ノード数が大きい大規模なシステムでは膨大な時間がかかる。
【００５０】
そこで、局所最適解になる可能性があるとしても、できるだけ評価値の高い準最適解を求めることが考えられる。その場合、例えばノード数、プロセス数、およびスレッド数の組み合わせをランダムに選択して実行し、その結果（評価値）をもとに補間関数を用いて補間して準最適なノード数、プロセス数、およびスレッド数の組み合わせを求めることができる。以下、ランダムに選択するノード数、プロセス数、およびスレッド数の組み合わせを、「サンプル点」と呼ぶ。
【００５１】
ランダムにサンプル点を選択するとき、選択するサンプル点の数をどの程度にすべきなのかの判断が難しい。例えばランダムに選択するサンプル点の数が少なすぎ、偶然に偏りが大きいサンプル点が選ばれてしまった場合、準最適な組み合わせを求めることができない可能性が高くなる。ランダムに選択するサンプル点の数が多すぎれば、サイジングにかかる処理時間が過大となる。
【００５２】
以上のことより、できるだけ少ないサンプル点による評価値からの補間で、「適切に」求めることが重要となる。「適切に」とは「サンプル点の数不足が原因で評価値の関数の形を実際の形とは大きく異なるものに想定してしまわないこと」を意味する。
【００５３】
第２の実施の形態における管理ノード１００は、サイジングに要する時間を短縮しながらも、適切な準最適解を得るため、まず、大域的な変動率を変動関数で表し、大域的な変動関数の値がユーザ指定の閾値以下になるまでサンプル点を増加させる。そして管理ノード１００は、局所的な変動率を変動関数として、局所的な変動関数の値がユーザ指定の閾値以下になるまでサンプル点を増加させる。このように変動関数が閾値以下になるまでサンプル点を増加させるようにすることで、偏りの少ないように配置されたサンプル点に基づいて準最適解を算出することができる。
【００５４】
なお第２の実施の形態における大域的な変動率は、第１の実施の形態に示した第１統計量の一例である。また第２の実施の形態における局所的な変動率は、第１の実施の形態に示した第２統計量の一例である。
【００５５】
図４は、管理ノードが有する機能の一例を示すブロック図である。管理ノード１００は、記憶部１１０、大域的変動率計算部１２０、局所的変動率計算部１３０、準最適解算出部１４０、およびアプリ実行指示部１５０を有する。
【００５６】
記憶部１１０は、アプリケーションプログラム（アプリ）１１１、システム構成情報１１２、およびサンプル情報を有する。アプリ１１１は、サイジングにより最適なノード数、プロセス数、およびスレッド数の探索を行う対象となるプログラムである。システム構成情報１１２は、計算ノード３１，３２，・・・の構成を示す情報である。システム構成情報１１２には、計算ノード３１，３２，・・・の総数と、１ノード当たりのプロセッサコア数とが含まれる。サンプル情報１１３は、サイジング処理の過程で選択されたサンプル点の情報である。
【００５７】
図５は、サンプル情報の一例を示す図である。サンプル情報１１３には、サンプル点のサンプル情報を示す複数のレコードが含まれる。各レコードには、サンプル点を一意に識別するＩＤに対応付けて、ノード数、プロセス数、スレッド数、処理時間、演算効率、および評価値が設定されている。
【００５８】
以下、図４の説明に戻る。
大域的変動率計算部１２０は、ランダムに設定したサンプル点の大域的な変動率を計算する。例えば大域的変動率計算部１２０は、サンプル点を設定したとき、アプリ実行指示部１５０に、サンプル点に対応する条件でのアプリの実行を依頼する。大域的変動率計算部１２０は、アプリの実行結果として、アプリ実行指示部１５０から処理時間と、演算効率とを取得する。処理時間は、アプリの実行に要した時間である。演算効率は、アプリを実行した計算ノード内のプロセッサコアの実行効率である。演算効率は、例えばプロセッサコアで単位時間当たりに実行した命令（インストラクション）数を、そのプロセッサコアの単位時間当たりの最大実行命令数で除算した値である。単位時間当たりの最大実行命令数としては、例えばＭＩＰＳ（Million Instructions Per Second）が用いられる。
【００５９】
大域的変動率計算部１２０は、アプリの実行結果に基づいて、評価値を算出する。サンプル点のＩＤがｉ（ｉは１以上の整数）のとき、そのサンプル点の評価値は、以下の式で計算される。
ｆ（ｉ）＝ａ×ｔ（ｉ）＋ｂ×１／efficiency（ｉ）    ・・・（１）
式（１）において、ｆ（ｉ）は、ｉ番目のサンプル点の評価関数である。ｔ（ｉ）は、ｉ番目のサンプル点のノード数、プロセス数、およびスレッド数の組み合わせによる処理時間である。efficiency（ｉ）は、サンプル点ｉのノード数、プロセス数、およびスレッド数の組み合わせによる演算効率である。ａは、処理時間に対する重みである。ｂは、演算効率に対する重みである。
【００６０】
式（１）は、評価値が小さいほど性能がよいことを示す。重みａ，ｂは、０以上１以下の実数である。重みａ，ｂはユーザにより予め入力された値が用いられる。ユーザは、例えば「ａ＋ｂ＝１」となるように、ａ，ｂの入力を行う。ユーザは、アプリの処理時間を重視するとき、つまりターンアラウンドを速くしたいときはａの値を小さく設定する。またユーザは、演算効率を重視するとき、つまりスループット重視のときは、ｂの値を小さく設定する。
【００６１】
大域的変動率計算部１２０は、複数のサンプル点の評価値に基づいて、大域的な変動率を計算する。そして大域的変動率計算部１２０は、大域的な変動率が第１の閾値（ｔｈ１）以下になるまで、サンプル点を追加する。
【００６２】
局所的変動率計算部１３０は、大域的変動率計算部１２０が設定したサンプル点それぞれについての局所的な変動率を計算する。そして局所的変動率計算部１３０は、大域的変動率計算部１２０が設定したすべてのサンプル点の局所的な変動率が第２の閾値（ｔｈ２）以下になるまで、局所的な変動率が第２の閾値（ｔｈ２）を超えているサンプル点の周囲に他のサンプル点を追加する。局所的変動率計算部１３０は、特定のサンプル点の周囲に別のサンプル点を追加したとき、アプリ実行指示部１５０に、追加したサンプル点に対応する条件でのアプリの実行を依頼する。局所的変動率計算部１３０は、アプリの実行結果として、アプリ実行指示部１５０から処理時間と、演算効率とを取得する。そして局所的変動率計算部１３０は、追加したサンプル点の評価値を用いて、特定のサンプル点の局所的変動率を再計算する。
【００６３】
以下、変動率の計算方法について詳細に説明する。
第２の実施の形態における変動率には、２つのサンプル点間の変動率、局所的な変動率、および大域的な変動率の３つがある。
【００６４】
２つのサンプル点間の変動率は、２つのサンプル点の評価値の差を、サンプル点間の距離で除算したものである。ｉ番目のサンプル点とｊ番目のサンプル点（ｉ，ｊは１以上の整数であり、ｉ≠ｊ）間の変動率は、以下の式（２）で表される。
【００６５】
【数１】
2018120387.tif 000003
【００６６】
ｉ番目のサンプル点を基準としたときの局所的な変動率は、ｉ番目のサンプル点と他のサンプル点それぞれとの間の変動率の平均である。局所的な変動率は、以下の式（３）で表される。
【００６７】
【数２】
2018120387.tif 000004
【００６８】
そして大域的な変動率は、すべてのサンプル点それぞれを基準とした局所的な変動率の平均である。大域的な変動率は、以下の式（４）で表される。
【００６９】
【数３】
2018120387.tif 000005
【００７０】
式（２）〜式（４）において、ｉ，ｊは、サンプル点のＩＤである。Ｎは、サンプル数を示す１以上の整数である。Ｎiは、ｉ番目のサンプル点の周囲のサンプル点の数である。ｘiは、ｉ番目のサンプル点のノード数である。ｘjは、ｊ番目のサンプル点のノード数である。ｙiは、ｉ番目のサンプル点のプロセス数である。ｙjは、ｊ番目のサンプル点のプロセス数である。ｚiは、ｉ番目のサンプル点のスレッド数である。ｚjは、ｊ番目のサンプル点のスレッド数である。
【００７１】
以上のような計算式のうち、大域的変動率計算部１２０は、式（４）を用いて大域的な変動率を計算する。この際、ｉ番目のサンプル点についてのΣjNiの計算において、ｉ番目のサンプル点を除くすべてのサンプル点を周囲のサンプル点とする。他方、局所的変動率計算部１３０は、基準となるサンプル点から半径ｒ以内にある他のサンプル点を周囲のサンプル点として、式（３）により局所的変動率を計算する。
【００７２】
準最適解算出部１４０は、設定されたサンプル点の評価値に基づいて、準最適解を算出する。例えば準最適解算出部１４０は、ノード数をｘ軸、プロセス数をｙ軸、スレッド数をｚ軸、評価値をｆ軸に採った４次元の空間上にサンプル点を配置し、各サンプル点を通る曲面を生成する。曲面は、例えばスプライン曲面である。そして、準最適解算出部１４０は、生成した曲面におけるｚ軸の値が最小となる点に最も近いノード数、プロセス数、およびスレッド数の組み合わせを、準最適解とする。準最適解算出部１４０は、算出した準最適解を、サイジングの結果として出力する。
【００７３】
アプリ実行指示部１５０は、サンプル点に応じた実行環境でのアプリの実行を、計算ノード３１，３２，・・・に指示する。例えばアプリ実行指示部１５０は、大域的変動率計算部１２０または局所的変動率計算部１３０からサンプル点に応じたアプリ１１１の実行要求を受け取ると、アプリ１１１を実行するジョブを生成する。次にアプリ実行指示部１５０は、生成したジョブに対して、そのサンプル点に示されるノード数分の計算ノードを割り当てる。そしてアプリ実行指示部１５０は、割り当てたノードに対して、アプリ１１１を実行するジョブを並列で実行させる。この際、アプリ実行指示部１５０は、ジョブの実行条件として、サンプル点に示されるプロセス数とスレッド数とを、そのジョブを実行する計算ノードに指示する。これにより、サンプル点に示されるノード数分の計算ノードにより、サンプル点に示されるプロセス数およびスレッド数でアプリ１１１が実行される。
【００７４】
また、アプリ実行指示部１５０は、アプリ１１１を実行する計算ノードに対して、単位時間当たりの実行命令数を記録するように指示する。計算ノードは、アプリ１１１の実行が終了すると、実行結果をアプリ実行指示部１５０に送信する。アプリ実行指示部１５０は、アプリ１１１の実行を指示してから、実行結果を受信するまでの時間を、アプリ１１１実行時に生成したジョブの生成元となったサンプル点の処理時間とする。またアプリ実行指示部１５０は、アプリ１１１を実行した計算ノードから、アプリ１１１実行中の単位時間当たりの実行命令数の情報を取得する。アプリ実行指示部１５０は、アプリ１１１実行期間中の単位時間当たりの実行命令数の平均値を、計算ノードのプロセッサコアのＭＩＰＳ値で除算した値を、ジョブの生成元となったサンプル点における演算効率とする。アプリ実行指示部１５０は、サンプル点における処理時間と演算効率とを、アプリ１１１の実行を依頼した大域的変動率計算部１２０または局所的変動率計算部１３０に送信する。
【００７５】
以上のような構成の管理ノード１００によって、サイジングを行うことができる。例えばアプリ１１１を作成したユーザは、そのアプリを記憶部１１０に格納し、管理ノード１００にサイジングの実行を指示する。すると、管理ノード１００がサイジングを実行する。
【００７６】
次に、サイジング処理の具体的な手順について説明する。
図６は、サイジング処理の手順を示すフローチャートの前半である。以下、図６に示す処理をステップ番号に沿って説明する。
【００７７】
［ステップＳ１０１］大域的変動率計算部１２０は、ノード数、プロセス数、およびスレッド数の組み合わせ（サンプル点）を、所定数だけ決定する。例えば大域的変動率計算部１２０は、モンテカルロ法に用いられる乱数選択技術により、ランダムなサンプル点を決定する。なお、ステップＳ１０１における初期のサンプル点の数は、ユーザによって予め指定されている。計算ノードの総数が１００万台あるような場合、ユーザは、例えば初期のサンプル点の数を１０点決定するように指定する。
【００７８】
［ステップＳ１０２］大域的変動率計算部１２０は、決定したサンプル点に従ったアプリ１１１をアプリ実行指示部１５０に指示し、実行結果に基づいてサンプル点の評価値を計算する。例えば大域的変動率計算部１２０は、ステップＳ１０１で決定したサンプル点に応じたアプリの実行をアプリ実行指示部１５０に指示し、アプリ実行指示部１５０からサンプル点における処理時間と演算効率とを取得する。さらに大域的変動率計算部１２０は、取得した処理時間と演算効率とを用いて、式（１）に基づいて、サンプル点の評価値を計算する。そして大域的変動率計算部１２０は、評価値を計算したサンプル点についてＩＤを付与し、そのサンプル点のサンプル情報をサンプル情報１１３内に設定する。設定されるサンプル情報には、例えばノード数、プロセス数、スレッド数、処理時間、演算効率、および評価値が含まれる。
【００７９】
［ステップＳ１０３］大域的変動率計算部１２０は、評価値が求められているすべてのサンプル点のサンプル情報を用いて、式（４）に基づいて大域的な変動率を計算する。
［ステップＳ１０４］大域的変動率計算部１２０は、大域的な変動率が第１の閾値（ｔｈ１）以下か否かを判断する。大域的変動率計算部１２０は、大域的な変動率が第１の閾値（ｔｈ１）以下であれば、処理をステップＳ１１１（図７参照）に進める。大域的変動率計算部１２０は、大域的な変動率が第１の閾値（ｔｈ１）を超えていれば、処理をステップＳ１０５に進める。
【００８０】
［ステップＳ１０５］大域的変動率計算部１２０は、サンプル点をランダムに複数追加する。ステップＳ１０５において追加するサンプル点の数は、ユーザによって予め指定されている。ステップＳ１０５では、例えば１０点のサンプル点が追加される。
【００８１】
［ステップＳ１０６］大域的変動率計算部１２０は、追加したサンプル点に従ったアプリ１１１の実行をアプリ実行指示部１５０に指示し、実行結果に基づいて評価値を計算する。その後、大域的変動率計算部１２０は、処理をステップＳ１０３に進める。
【００８２】
図７は、サイジング処理の手順を示すフローチャートの後半である。以下、図７に示す処理をステップ番号に沿って説明する。
［ステップＳ１１１］局所的変動率計算部１３０は、大域的変動率計算部１２０によって決定されたサンプル点の１つを選択する。
【００８３】
［ステップＳ１１２］局所的変動率計算部１３０は、式（３）に基づいて、選択したサンプル点の局所的な変動率を計算する。局所的な変動率の計算に用いる周囲のサンプル点とは、選択したサンプル点から距離ｒ以内にある他のサンプル点である。
【００８４】
［ステップＳ１１３］局所的変動率計算部１３０は、局所的な変動率が第２の閾値（ｔｈ２）以下か否かを判断する。局所的変動率計算部１３０は、局所的な変動率が第２の閾値（ｔｈ２）以下であれば、処理をステップＳ１１６に進める。局所的変動率計算部１３０は、局所的な変動率が第２の閾値（ｔｈ２）を超えていれば、処理をステップＳ１１４に進める。
【００８５】
［ステップＳ１１４］局所的変動率計算部１３０は、選択したサンプル点の周囲に、サンプル点を１点追加する。例えば局所的変動率計算部１３０は、選択したサンプル点から距離ｒ以内にある他のサンプル点のうち、選択したサンプル点との間の変動率（式（２）の値）が最も大きいサンプル点を特定する。そして局所的変動率計算部１３０は、特定したサンプル点と選択したサンプル点との中間点に、新たなサンプル点を追加する。新たなサンプル点のノード数は、特定したサンプル点と選択したサンプル点とのノード数の平均値となる。新たなサンプル点のプロセス数は、特定したサンプル点と選択したサンプル点とのプロセス数の平均値となる。新たなサンプル点のスレッド数は、特定したサンプル点と選択したサンプル点とのスレッド数の平均値となる。
【００８６】
このように変動率が最も大きいサンプル点との中間点に新たなサンプル点を追加することで、選択したサンプル点の周囲のうち、評価値の変動が激しい方向に新たなサンプル点が追加される。評価値の変動が激しい方向は、新たなサンプル点の評価値が、周囲と大きく異なり、極大値または極小値となる可能性がある。そのような位置に新たなサンプル点を追加していくことで、評価値が極大値または極小値となるサンプル点を効率よく検出できる。
【００８７】
新たに追加したサンプル点の評価値が極大値または極小値とならないのであれば、選択したサンプル点と追加したサンプル点との間の変動率は低くなる。その結果、局所的な変動率が低下する。局所的な変動率が第２の閾値（ｔｈ２）以下になるまで低下した場合、選択したサンプル点の周囲には、これ以上、評価値が極大値または極小値を採る点は存在しないものと予想できる。
【００８８】
［ステップＳ１１５］局所的変動率計算部１３０は、追加したサンプル点に従ったアプリ１１１の実行をアプリ実行指示部１５０に指示し、実行結果に基づいて評価値を計算する。その後、局所的変動率計算部１３０は、処理をステップＳ１１２に進める。
【００８９】
［ステップＳ１１６］局所的変動率計算部１３０は、大域的変動率計算部１２０によって決定されたサンプル点のすべてについての局所的な変動率を調べたか否かを判断する。局所的変動率計算部１３０は、すべてのサンプル点についての調査が終了していれば、処理をステップＳ１１７に進める。局所的変動率計算部１３０は、未調査のサンプル点があれば、処理をステップＳ１１１に進める。
【００９０】
［ステップＳ１１７］準最適解算出部１４０は、補間関数によって各サンプル点の評価値の間を補間し、評価値曲面を作成する。
［ステップＳ１１８］準最適解算出部１４０は、評価値曲面において評価値が最小値となる点に最も近いノード数、プロセス数、およびスレッド数の組み合わせを選択する。
【００９１】
［ステップＳ１１９］準最適解算出部１４０は、選択したノード数、プロセス数、およびスレッド数に従ったアプリ１１１の実行をアプリ実行指示部１５０に指示し、実行結果に基づいて評価値を計算する。
【００９２】
［ステップＳ１２０］準最適解算出部１４０は、選択したノード数、プロセス数、およびスレッド数の組み合わせについての評価値が、既に算出されたサンプル点の評価値との比較において、最小値となるか否かを判断する。準最適解算出部１４０は、最小値となる場合、処理をステップＳ１２２に進める。準最適解算出部１４０は、ステップＳ１１９で算出した評価値よりも評価値の小さい（評価が高い）サンプル点が存在する場合、処理をステップＳ１２１に進める。
【００９３】
［ステップＳ１２１］準最適解算出部１４０は、局所的な変動率の第２の閾値（ｔｈ２）を再設定する。例えば準最適解算出部１４０は、第２の閾値（ｔｈ２）の値を低下させる。これにより、局所的変動率計算部１３０に対して、適切な評価値曲面が生成できるようになるまでサンプル点を追加させることができる。ステップＳ１２１の終了後、準最適解算出部１４０は、処理をステップＳ１１１に進める。
【００９４】
［ステップＳ１２２］準最適解算出部１４０は、ステップＳ１１８で最後に選択したノード数、プロセス数、およびスレッド数の組み合わせを、準最適解として出力する。例えば準最適解算出部１４０は、準最適解となるノード数、プロセス数、およびスレッド数をモニタ２１に表示する。
【００９５】
このようにして、大域的な変動率が第１の閾値（ｔｈ１）以下となり、かつ局所的な変動率が第２の閾値（ｔｈ２）以下になるまで、サンプル点が追加される。このようにして設定されたサンプル点を用いて適切な準最適解を求めることができる。その理由を、図８を参照して説明する。
【００９６】
図８は、大域的な変動率と局所的な変動率との計算状況を示す図である。なお図８では、説明を分かりやすくするために、スレッド数を示す軸については省略している。
図８では、左側に大域的な変動率の計算状況を示しており、右側に局所的な変動率の計算状況を示している。図８に示すように、サンプル点は、プロセス数とノード数とを軸とした平面上の点で表される。そして各サンプル点の評価値は、サンプル点を配置した平面に垂直な軸方向の高さで表される。大域的な変動率を計算する際には、すべてのサンプル点を用いて変動率が計算される。それに対して、局所的な変動率を計算する際には、計算対象となるサンプル点から半径ｒの円内にあるサンプル点を用いて、変動率が計算される。
【００９７】
第２の実施の形態では、図８に示した空間にスレッド数の軸を追加して、評価値を補間した評価値曲面を作成することで、ノード数、プロセス数、およびスレッド数の組み合わせの評価値が推定され、準最適な組み合わせのノード数とプロセス数が求められる。しかし、補間する前の評価値が大きくばらついていると、補間して得られた解の精度が低下することが予想される。つまり、サンプル数不足が原因で評価値曲面が、実際の形とは大きく異なるものとなってしまう。
【００９８】
ここで変動率は、式（２）で表されている。式（２）は、２つのサンプル点の評価値の差を、サンプル点間の距離で除算し、絶対値を採っている。この変動率は、２つのサンプル点間の評価値の平均変化率の絶対値と言い換えることもできる。変動率が大きいと評価値を補間して得られる曲面は、大きな傾きの斜面による凸凹した曲面になる。大域的な変動率が第１の閾値（ｔｈ１）を超える状況下では、最大値や最小値の候補となるサンプル点が多数存在することになる。最大値や最小値の候補となるサンプル点の割合が大きい状況では、他にも最大値や最小値の候補が存在する可能性が高い。そのため、このまま準最適解を求めても、誤った準最適解を選択する可能性が高くなり、準最適解の精度が落ちる。
【００９９】
このような精度低下を避けるために、第２の実施の形態では、まず大域的変動率計算部１２０により、式（４）により全空間に対して変動の度合いが調べられる。大域的な変動率の値がユーザ指定の第１の閾値（ｔｈ１）よりも大きい場合は、全空間が変動している（ばらついている）と判断できるため、サンプル点が追加される。そして、追加したサンプル点に対してもアプリを実行して評価値が求められ、再度大域的な変動率が計算される。新しいサンプル点が追加されたことによって大域的な変動率が更新され、この大域的な変動率がユーザ指定の第１の閾値（ｔｈ１）以下になると、大域的な見知での評価値のばらつきが十分小さくなったものと判断される。
【０１００】
大域的な変動率が閾値以下になった場合でも、サンプル点の中には、周囲の他のサンプル点との間の平均変化率が大きいものが残っている可能性がある。このようなサンプル点があると、そのサンプル点の周囲において評価値曲面が正しく作成されない可能性があり、準最適解の精度が落ちる要因となる。そこで第２の実施の形態では、個々のサンプル点に関して、周囲の他のサンプル点との間の局所的な変動率が計算され、個々のサンプル点の局所的な変動率が第２の閾値（ｔｈ２）以下になるまで、計算対象のサンプル点の周囲にサンプル点が追加される。
【０１０１】
このように、大域的な変動率と局所的な変動率との両方が閾値以下まで低下した段階で補間関数によって評価値を補間し、評価値曲線を作成することで、局所解に陥ることがなく網羅的に探索し準最適な組み合わせを求めることができる。
【０１０２】
しかもノード数、プロセス数、およびスレッド数のすべての組み合わせについて実際にアプリ１１１を実行して評価値を求める場合に比べて、処理量が格段に少なくなる。その結果、効率的に性能評価作業を行うことができ、短時間で準最適なノード数とプロセス数を選び出すことができる。
【０１０３】
〔その他の実施の形態〕
第２の実施の形態では、最適なノード数、プロセス数、およびスレッド数を決定しているが、決定するパラメータの数を４以上とすることもできる。
【０１０４】
また第２の実施の形態では、処理時間と演算効率に基づいて評価値を計算しているが、他の情報を用いて評価値を計算してもよい。例えば消費電力を加味して評価値を計算するようにしてもよい。その場合、評価値の計算式に、消費電力を表す変数が追加される。
【０１０５】
また第２の実施の形態では、評価値の値が低い程、評価がよいものとしているが、逆に、評価値の値が高いほど評価がよい評価式を用いてもよい。その場合、評価値曲面の最大値となるノード数、プロセス数、およびスレッド数の組が、準最適解となる。
【０１０６】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１０７】
１ａ，１ｂ，・・・  計算ノード
２  第１プログラム
３  サンプル情報
４  第１サンプル点
５  第２サンプル点
６  評価値曲面
１０  並列処理管理装置
１１  記憶部
１２  処理部
【図１】
2018120387.tif 000006
【図２】
2018120387.tif 000007
【図３】
2018120387.tif 000008
【図４】
2018120387.tif 000009
【図５】
2018120387.tif 000010
【図６】
2018120387.tif 000011
【図７】
2018120387.tif 000012
【図８】
2018120387.tif 000013