(57)【要約】【課題】高効率で並列処理を実行可能なコア数を速やかに求めることができる並列処理最適化プログラム、並列処理最適化方法および情報処理装置を提供する。【解決手段】特定部５０は並列処理を実行可能な複数のコア２４の数の範囲内で、並列して実行する所定数の処理を、割り振る処理数を変えて、同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定する。決定部５１は、特定されたコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する。【選択図】図６
2015022574.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を、割り振る処理数を変えて同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定し、
特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する
処理を実行させることを特徴とする並列処理最適化プログラム。
【請求項２】
前記コアは、並列処理を実行可能な複数のスレッドを有し、
前記特定する処理は、コアの並列処理を実行可能なスレッド数および並列処理を実行可能なコア数の範囲内で、各コアで動作させるスレッド数を変えて、動作させるスレッドに処理を同程度ずつ割り振る場合に、処理が実行されるスレッド数およびコア数を特定し、
前記決定する処理は、特定したスレッド数およびコア数のなかから、処理性能の最も高いスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する
ことを特徴とする請求項１に記載の並列処理最適化プログラム。
【請求項３】
前記特定する処理は、特定したコア数のなかから、コア数の多い順に性能の評価を行って性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を並列処理を実行するコア数と決定する
ことを特徴とする請求項１に記載の並列処理最適化プログラム。
【請求項４】
前記特定する処理は、特定したスレッド数およびコア数をスレッド数が多いものから、スレッド数毎に、コア数の多い順に性能の評価を行って性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を当該スレッド数の最も良い性能のコア数と特定し、少ないスレッド数の最も良い性能が多いスレッド数の最も良い性能を最初に下回った際の多い側のスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する
ことを特徴とする請求項２に記載の並列処理最適化プログラム。
【請求項５】
前記決定する処理は、特定したスレッド数およびコア数のなかから、所定の予測モデルを用いて、並列処理を実行するスレッド数およびコア数を決定する
ことを特徴とする請求項２に記載の並列処理最適化プログラム。
【請求項６】
コンピュータが、
並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を、割り振る処理数を変えて同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定し、
特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する
処理を実行することを特徴とする並列処理最適化方法。
【請求項７】
並列処理を実行可能な複数のコアと、
並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を、割り振る処理数を変えて、同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定する特定部と、
前記特定部により特定されたコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する決定部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理最適化プログラム、並列処理最適化方法および情報処理装置に関する。
【背景技術】
【０００２】
近年、複数のコアを搭載したマルチコア・プロセッサが主流となっている。このようなマルチコア・プロセッサは、複数コアで並列処理を行うことで処理性能を高められる。マルチコア・プロセッサは、微細化技術の進歩とともに、チップに搭載されるコア数が増加する傾向にあり、数十コアが搭載されたものも販売されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２８２５５３号公報
【特許文献２】国際公開第２００４／０４４７４５号
【特許文献３】特開２００６−２４０８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、並列処理を行うプログラムには、マルチコア・プロセッサの全てのコアで並列処理を行うことで高性能化を達成できるものがある。また、一部のコアを停止させる方が、高い性能が得られるプログラムもある。例えば、コア間の同期が多いプログラムや、メモリバンド幅ネックのプログラムでは、一部のコアを停止させる方が高い性能を得られる場合がある。
【０００５】
一側面では、高効率で並列処理を実行可能なコア数を速やかに求めることができる並列処理最適化プログラム、並列処理最適化方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、並列処理最適化プログラムは、コンピュータに、並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を割り振る処理数を変えて同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定する処理を実行させる。また、並列処理最適化プログラムは、コンピュータに、並列処理を実行可能なコア数の範囲内で、特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する処理を実行させる。
【発明の効果】
【０００７】
本発明の一側面によれば、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、情報処理装置の概略的な構成の一例を示した図である。
【図２】図２は、情報処理装置におけるハードウェアとソフトウェアとの関係を説明するための図である。
【図３】図３は、並列処理が可能な処理を示す図である。
【図４】図４は、並列処理プログラムと並列処理最適化プログラムをスタティックリンクさせる一例を示す図である。
【図５Ａ】図５Ａは、ＮＰＢ  ＥＰのコア数毎の性能の評価結果の一例を示す図である。
【図５Ｂ】図５Ｂは、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。
【図６】図６は、実行された並列処理最適化プログラムの機能的な構成を示す図である。
【図７】図７は、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。
【図８】図８は、評価結果の一例を示す図である。
【図９】図９は、実施例１に係る並列処理最適化処理の手順の一例を示すフローチャートである。
【図１０】図１０は、実施例１に係る試行パターン特定処理の手順の一例を示すフローチャートである。
【図１１】図１１は、実施例２に係るプロセッサの構成を模式的に示した図である。
【図１２Ａ】図１２Ａは、ＮＰＢ  ＥＰのコア数毎の性能の評価結果の一例を示す図である。
【図１２Ｂ】図１２Ｂは、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。
【図１３】図１３は、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。
【図１４】図１４は、評価結果の一例を示す図である。
【図１５】図１５は、実施例２に係る並列処理最適化処理の手順の一例を示すフローチャートである。
【図１６】図１６は、実施例２に係る試行パターン特定処理の手順の一例を示すフローチャートである。
【図１７】図１７は、実施例３に係る並列処理最適化処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に、本発明にかかる並列処理最適化プログラム、並列処理最適化方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１０】
［全体構成］
実施例１に係る情報処理装置１０の構成について説明する。図１は、情報処理装置の概略的な構成の一例を示した図である。
【００１１】
情報処理装置１０は、例えば、パーソナルコンピュータやサーバコンピュータ、ワークステーションなどの情報処理を行う装置である。なお、情報処理装置１０は、例えば、スマートフォン、タブレット端末、ＰＤＡ（Personal  Digital  Assistants）などの携帯端末であってもよい。図１に示すように、情報処理装置１０は、プロセッサ２０と、ＤＩＳＫ２１と、ＲＡＭ（Random  Access  Memory）２２とを有する。これらプロセッサ２０、ＤＩＳＫ２１、ＲＡＭ２２は、バス２３を介して接続される。なお、情報処理装置１０は、図１に示した機能部以外にも既知の情報処理装置１０が有する各種の機能部を有することとしてもかまわない。例えば、情報処理装置１０は、通信インタフェースや、キーボード、マウスなどの操作部、表示部などその他の機能部を有することとしてもかまわない。
【００１２】
プロセッサ２０は、複数のコア２４を有し、演算処理を実行するマルチコア・プロセッサである。プロセッサ２０は、各コア２４により並列に演算処理を実行可能とされている。なお、図１の例では、プロセッサ２０が４個のコア２４を有する場合を示したが、コア２４の数はこれに限定されるものではない。マルチコア・プロセッサは、微細化技術の進歩とともに、チップに搭載されるコア数が増加している。例えば、インテル社製のXeon  Phi  Coprocessor  5110Pは、コア２４が６０個の搭載されている。
【００１３】
ＤＩＳＫ２１は、各種の情報を記憶するデバイスである。例えば、ＤＩＳＫ２１は、ＯＳ（Operating  System）３０と、並列処理プログラム３１と、並列処理最適化プログラム３２とを記憶する。このＤＩＳＫ２１としては、例えば、ＨＤＤ(Hard  Disk  Drive)、ＳＳＤ(Solid  State  Drive)などが挙がられる。なお、ＤＩＳＫ２１に代えて、フラッシュメモリなどの不揮発性の半導体メモリを各種の情報を記憶するデバイスとして用いてもよい。
【００１４】
ＯＳ３０は、多くのアプリケーションソフトから共通して利用される基本的な機能を提供し、コンピュータ全体を管理するソフトウェアである。ＯＳ３０は、情報処理装置１０の起動時にプロセッサ２０により実行される。
【００１５】
並列処理プログラム３１は、情報処理装置１０において実行されるアプリケーションソフトである。並列処理プログラム３１には、並列処理が可能な処理が含まれている。例えば、並列処理プログラム３１には、ループ処理など並列処理が可能な処理が含まれている。
【００１６】
並列処理最適化プログラム３２は、並列処理の制御および最適化を行うプログラムである。例えば、並列処理最適化プログラム３２は、並列処理を実行する際に処理を実行させるコア数を最適化する。
【００１７】
ＲＡＭ２１は、各種のデータを一時的に記憶するデバイスである。ＲＡＭ２１には、ＯＳ３０やアプリケーションソフトが利用する各種のデータが展開されて記憶される。
【００１８】
次に、図２を用いて、情報処理装置１０におけるハードウェアとソフトウェアとの関係について説明する。図２は、情報処理装置におけるハードウェアとソフトウェアとの関係を説明するための図である。なお、図２に示す例では、ソフトウェアとして、ＯＳ３０と、並列処理プログラム３１と、並列処理最適化プログラム３２とが示されている。
【００１９】
ＯＳ３０は、コンピュータ全体を管理しており、アプリケーションプログラムおよびハードウェアの監視や、割りこみ処理など、ＯＳ３０としての基本機能を提供する。例えば、ＯＳ３０は、プロセッサ２０の各コア２４の状況の監視やコア２４に対する割りこみ処理などの機能を提供する。
【００２０】
並列処理プログラム３１は、所定のプログラム記述言語で記述されたソースコード４０をコンパイラ４１によりコンパイルすることにより作成される。並列処理プログラム３１は、ループ処理などの並列処理が可能な処理が含まれる。
【００２１】
図３は、並列処理が可能な処理の一例を示す図である。図３の例では、変数ｉの初期値をゼロとし、処理を１回行う毎に変数ｉの値を１つずつ加算し、変数ｉの値がＮよりも小さい間、処理を繰り返すループ処理が示されている。このような処理をＮ回繰り返し行うループ処理は、Ｎ回繰り返す処理をそれぞれ最大でＮ等分に分割して並列に処理させることが可能である。以下では、このようなループ処理などで繰り返し行われる処理の繰り返し回数をイタレーション数とも言う。図３の例は、イタレーション数がＮのループ処理である。
【００２２】
図２に戻り、並列処理最適化プログラム３２は、例えば、ライブラリとして提供される。並列処理最適化プログラム３２は、ソースコード４０をコンパイルする際に並列処理プログラム３１とリンクされる。並列処理最適化プログラム３２は、並列処理プログラム３１が並列処理を実行する際に呼び出され、ＯＳ３０を介してプロセッサ２０の各コア２４への処理の割り振りを制御する。なお、並列処理プログラム３１と並列処理最適化プログラム３２のリンクは、スタティックリンクであってもよく、ダイナミックリンクであってよい。
【００２３】
図４は、並列処理プログラムと並列処理最適化プログラムをスタティックリンクさせる一例を示す図である。例えば、既存の並列処理ライブラリ４２に対して、修正を行って並列処理最適化プログラム３２を作成する。この既存の並列処理ライブラリ４２としては、例えば、ＯｐｅｎＭＰが挙がられる。そして、コンパイラ４１によりソースコード４０をコンパイルする際のリンク先を並列処理最適化プログラム３２に変更してコンパイルを行う。これにより、並列処理最適化プログラム３２では、並列処理を行う際に並列処理最適化プログラム３２が実行される。
【００２４】
ところで、並列処理の性能を評価するベンチマークとしては、ＮＰＢ（NAS  Parallel  Benchmarks）がある。以下では、コア２４が６０個のプロセッサ２０を用いて、ＮＰＢ３．３  ＯｐｅｎＭＰ版のＥＰ,ＦＴにより性能の評価を行った例を説明する。なお、入力サイズは、ＣｌａｓｓＢとする。
【００２５】
図５Ａは、ＮＰＢ  ＥＰのコア数毎の性能の評価結果の一例を示す図である。図５Ａの横軸は、並列処理を実行させたコア数を示す。図５Ａの縦軸は、コア数が１での性能に対する相対性能を示す。相対性能は、例えば、各コア数での性能値を、コア数が１での性能値で除算した値である。図５Ａに示すように、ＮＰＢ  ＥＰでは、並列処理を行うコア数が多いほど高い性能が得られる。図５Ａの例では、コア数が６０の場合に最も高い性能が得られている。
【００２６】
図５Ｂは、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。図５Ｂの横軸は、並列処理を実行させたコア数を示す。図５Ｂの縦軸は、コア数が１での性能に対する相対性能を示す。図５Ｂに示すように、ＮＰＢ  ＦＴでは、コア数に比例して一律に性能が高くならず、特定のコア数で性能が飽和して低下する。例えば、図５Ｂの例では、コア数が３３の場合に性能がピークとなる。このように特定のコア数で並列処理を行った方が高い性能が得られるプログラムもある。例えば、コア間の同期が多いプログラムや、メモリバンド幅ネックのプログラムでは、特定のコア数で並列処理を行った方が高い性能を得られる場合がある。
【００２７】
次に、図６を用いて、実行された並列処理最適化プログラム３２の機能的な構成について説明する。図６は、実行された並列処理最適化プログラムの機能的な構成を示す図である。図６に示すように、並列処理最適化プログラム３２は、ＯＳ３０を介してプロセッサ２０の各コア２４への処理の割り振りを制御しており、特定部５０と、決定部５１と、プロセッサ制御部５２とを有する。
【００２８】
特定部５０は、各種の特定を行う。例えば、特定部５０は、性能の評価対象とするコア数を特定する。
【００２９】
ここで、例えば、イタレーション数Ｎを２５６とし、プロセッサ２０のコア数を６０とした場合を例にして説明する。並列処理では、複数のコアに処理を割り振った場合、並列処理を行う全てのコア２４で処理が完了するまでの時間により処理性能が定まる。すなわち、並列処理では、最も遅く処理が完了するコア２４での実行時間により処理性能が定まる。
【００３０】
また、並列処理では、並列して実行可能な処理を各コア２４に同程度ずつ割り振ったとしてもコア２４あたりの処理数が不均一になることが多い。特に、イタレーション数Ｎがコア数に対してあまり大きくない場合、コア２４あたりの処理数の違いより処理性能が階段状になる。例えば、イタレーション数Ｎが２５６のループ処理を同程度ずつコアに割り振るものとして、例えば、５２個のコア２４で並列処理を行うものとした場合、コア当たりに割り振られる最大のイタレーション数は、５個である。また、イタレーション数Ｎが２５６のループ処理を同程度ずつコアに割り振るものとして、例えば、６０個のコア２４で並列処理を行うものとした場合も、コア当たりに割り振られる最大のイタレーション数は、５個である。この場合、割り振られる最大のイタレーション数が共に５個であるため、５２個のコア２４で並列処理した場合と６０個のコア２４で並列処理した場合の処理性能は、略同等となる。すなわち、並列処理で処理を行うコア数が変わっても、最大のイタレーション数が同じ場合、処理性能は、略同等となる。
【００３１】
一方、並列処理で処理を行うコア数が多いほど、消費電力は多くなる。
【００３２】
そこで、特定部５０は、並列処理を実行可能なコア数の範囲内で、イタレーション数の処理を、割り振る処理数を変えて同程度ずつコア２４に割り振る場合に、処理が実行されるコア数を特定する。例えば、特定部５０は、イタレーション数Ｎを２５６とし、プロセッサ２０のコア数を６０とし、割り振る処理数をａとした場合、処理が実行されるコア数を次のように特定する。
【００３３】
特定部５０は、割り振る処理数ａを１から順に１つずつ変化させ、イタレーション数Ｎを割り振る処理数ａで除算し、除算した値の少数点以下を切り上げた値Ｘを、値Ｘが１以上である間それぞれ求める。これにより、例えば、ａ＝１の場合は、Ｘ＝２５６、ａ＝２の場合は、Ｘ＝１２８、ａ＝３の場合は、Ｘ＝８６、ａ＝４の場合は、Ｘ＝６４、ａ＝５の場合は、Ｘ＝５２、ａ＝６の場合は、Ｘ＝４３・・・とそれぞれ求まる。この値Ｘは、ａ個程度ずつ処理をコア２４に割り振る場合に、並列処理が実行されるコア数である。
【００３４】
しかし、プロセッサ２０のコア数は、６０個である。よって、値Ｘが並列処理を実行可能なコア数である６０を超えている場合、並列処理できない。そこで、特定部５０は、値Ｘが６０以下の範囲内で、値Ｘを特定する。例えば、上述の例では、値Ｘは、５２、４３、３７、３２、２９、２６、２４、２２、２０、１９、・・・、１と特定される。この特定された値Ｘが、それぞれ処理が実行されるコア数である。以下、特定部５０により特定された各値Ｘを試行パターンと呼ぶ。
【００３５】
図７は、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。図７の例は、並列処理を実行するコア数を１〜６０の範囲で変えて同程度ずつコア２４に処理を割り振った場合の並列処理を実行したコア数毎の性能の一例である。図７の横軸は、並列処理を実行させたコア数を示す。図７の縦軸は、コア数が１での性能に対する相対性能を示す。図７に示すように、イタレーション数Ｎがコア数に対してあまり大きくない場合、コア２４あたりの処理数の違いより処理性能が階段状になる。例えば、図７では、コア数が４３〜５１の範囲は、性能が同程度である。また、コア数が５２〜６０の範囲も、性能が同程度である。特定部５０は、この階段状に性能が変わる各コア数を試行パターンとして求めている。例えば、特定部５０は、図７において丸を付した５２、４３、３７、３２、２９のコア数を特定している。
【００３６】
図６に戻り、決定部５１は、各種の決定を行う。例えば、決定部５１は、特定部５０により特定されたコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する。一例として、決定部５１は、試行パターンの各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定する。例えば、決定部５１は、試行パターンの各コア数のなかから、コア数の多い順に、コア数のコア２４を用いてイタレーション数Ｎの処理を並列に実行して性能の評価を行う。そして、決定部５１は、コア数の多い順に性能を順次比較する。そして、決定部５１は、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を並列処理を実行するコア数と決定する。
【００３７】
例えば、図７の例では、決定部５１は、５２個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。次に、決定部５１は、４３個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。そして、決定部５１は、コア数が５２個の場合の性能と、コア数が４３個の場合の性能を比較する。図７の例では、コア数が４３個の場合の性能は、コア数が５２個の場合の性能よりも下回っている。この場合、決定部５１は、並列処理を実行するコア数を５２個と決定する。
【００３８】
なお、決定部５１は、特定部５０により特定された試行パターンの各コア数でイタレーション数Ｎの処理を並列に実行して性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定してもよい。
【００３９】
プロセッサ制御部５２は、プロセッサ２０を制御して決定部５１で決定されたコア数で並列処理を実行させる。
【００４０】
ここで、決定部５１により決定されるコア数の評価結果の一例を説明する。図８は、評価結果の一例を示す図である。なお、図８は、コア数に対する性能が図７に示す関係である場合の評価結果である。試行回数は、決定部５１が並列処理を実行するコア数を決定するまでに性能の評価を行った回数である。精度は、処理性能の最も高い性能を決定できたかの予測精度を示し、決定されたコア数での処理性能を最大性能で除算した値である。
【００４１】
図８の「ヒルクライム」は、決定部５１が試行パターンの各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が２、精度が０．９８である。図８の「全探索」は、決定部５１が試行パターンの各コア数の性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が２８、精度が０．９８である。
【００４２】
また、図８には、試行パターンを特定しないで、並列処理を実行するコア数を従来のように決定した場合の評価結果も示している。図８の「従来のヒルクライム」は、図７に示す１〜６０の各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が２、精度が０．９５である。また、図８の「従来の全探索」は、図７に示す１〜６０の全てのコア数の性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が６０、精度が１．００である。
【００４３】
このように、並列処理最適化プログラム３２は、試行パターンを特定して試行パターンの各コア数のなかから、並列処理を実行するコア数と決定することにより、ヒルクライム法を用いた場合でも、処理性能の高いコア数を高い精度で求めることができる。また、並列処理最適化プログラム３２は、試行パターンを特定して試行パターンの各コア数のなかから、並列処理を実行するコア数と決定することにより、全探索を用いた場合でも、より短期間で処理性能の高いコア数を求めることができる。また、並列処理最適化プログラム３２は、各コア２４に同程度の処理を割り振る場合、少ない数で割り振れるコア数を特定するため、消費電力を少なく抑えることができる。すなわち、並列処理最適化プログラム３２は、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
【００４４】
［処理の流れ］
次に、本実施例に係る情報処理装置１０が並列処理最適化プログラム３２を実行した際に並列処理に適したコア数を決定する並列処理最適化処理の流れについて説明する。図９は、実施例１に係る並列処理最適化処理の手順の一例を示すフローチャートである。この並列処理最適化処理は、例えば、並列処理プログラム３１が並列処理を実行するタイミングで実行される。
【００４５】
図９に示すように、特定部５０は、試行パターンを特定する試行パターン特定処理を実行して、試行パターンを特定する（Ｓ１０）。この試行パターン特定処理の詳細は、後述する。
【００４６】
決定部５１は、特定された試行パターンの各コア数のなかから、性能が未評価である最も多いコア数を特定する（Ｓ１１）。決定部５１は、特定したコア数での並列処理の性能を計測する（Ｓ１２）。例えば、決定部５１は、イタレーション数Ｎの処理を並列に実行して１イタレーション当たりの処理時間を計測する。
【００４７】
決定部５１は、計測した性能が前回計測された性能よりも悪化しているか判定する（Ｓ１３）。例えば、決定部５１は、計測した処理時間が前回計測された処理時間よりも長い場合、性能が悪化していると判定する。性能が悪化していない場合（Ｓ１３否定）、上述のＳ１１の処理へ移行する。
【００４８】
一方、性能が悪化している場合（Ｓ１３肯定）、決定部５１は、前回計測したコア数を処理性能の最も高いコア数と決定する（Ｓ１４）。プロセッサ制御部５２は、決定されたコア数で並列処理が実行されるように制御し（Ｓ１５）、処理を終了する。
【００４９】
次に、試行パターン特定処理の流れについて説明する。図１０は、実施例１に係る試行パターン特定処理の手順の一例を示すフローチャートである。この試行パターン特定処理は、例えば、図９に示す並列処理最適化処理のＳ１０から実行される。
【００５０】
図１０に示すように、特定部５０は、並列処理プログラム３１から並列処理のイタレーション数Ｎを受け取る（Ｓ２０）。また、特定部５０は、変数ａを１に初期化する（Ｓ２１）。
【００５１】
特定部５０は、イタレーション数Ｎを変数ａで除算し、除算結果の値の少数点以下を切り上げた値Ｘを算出する（Ｓ２３）。特定部５０は、値Ｘが１以上であるか判定する（Ｓ２４）。値Ｘが１以上ではない場合（Ｓ２４否定）、処理を終了して呼び出し元の処理に戻る。この試行パターン特定処理で特定された値Ｘが、試行パターンのコア数となる。
【００５２】
一方、値Ｘが１以上である場合（Ｓ２４肯定）、特定部５０は、値Ｘがプロセッサ２０のコア数以下であるか否かを判定する（Ｓ２５）。値Ｘがプロセッサ２０のコア数以下ではない場合（Ｓ２５否定）、後述するＳ２８の処理へ移行する。
【００５３】
一方、値Ｘがプロセッサ２０のコア数以下である場合（Ｓ２５肯定）、特定部５０は、試行パターンに値Ｘが既にあるか否かを判定する（Ｓ２６）。試行パターンに値Ｘが既にある場合（Ｓ２６肯定）、後述するＳ２８の処理へ移行する。
【００５４】
一方、試行パターンに値Ｘがない場合（Ｓ２６否定）、特定部５０は、試行パターンに値Ｘを試行するコア数として加える（Ｓ２７）。そして、特定部５０は、変数ａに１加算し、Ｓ２３の処理へ移行する。
【００５５】
［効果］
上述してきたように、本実施例に係る情報処理装置１０は、並列処理を実行可能なコア２４の数の範囲内で、並列して実行する所定数の処理を、割り振る処理数を変えて同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定する。そして、情報処理装置１０は、特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する。これにより、情報処理装置１０は、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
【００５６】
また、情報処理装置１０は、特定したコア数のなかから、コア数の多い順に性能の評価を行って性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を並列処理を実行するコア数と決定する。これにより、情報処理装置１０は、並列処理を実行するコア数をより速やかに求めることができる。
【実施例２】
【００５７】
次に、実施例２について説明する。実施例２に係る情報処理装置１０の構成は、実施例１と略同一であるため、同一部分については同一の符号を付し、主に異なる部分について説明する。
【００５８】
図１１は、実施例２に係るプロセッサの構成を模式的に示した図である。実施例２に係るプロセッサ２０は、例えば、ＳＭＴ(Simultaneous  Multithreading)搭載しており、各コア２４に並列に処理を実行可能な複数のスレッド２５を有する。このスレッド２５は、それぞれプログラムの処理を実行可能な機構であり、ハードウェアスレッドなどとも呼ばれる。各コア２４内のスレッド２５は、コア内のメモリなどの資源を共有して処理を実行する。なお、図１１の例では、コア２４内に２つのスレッド２５を有する場合を示したが、スレッド２５の数はこれに限定されるものではない。例えば、インテル社製のXeon  Phi  Coprocessor  5110Pは、コア２４毎に４つのスレッド２５が搭載されている。
【００５９】
ところで、並列処理プログラム３１には、並列して処理を実行するスレッド２５の数が多いほど高性能化を達成できるものがある。また、一部のコア２４や一部のスレッド２５を停止させる方が、高い性能が得られるプログラムもある。例えば、スレッド２５は、コア内の資源を共有するため、動作させるスレッド数を制限した方が高い性能を得られる場合がある。
【００６０】
図１２Ａは、ＮＰＢ  ＥＰのコア数毎の性能の評価結果の一例を示す図である。図１２Ａの横軸は、並列処理を実行させたコア数を示す。図１２Ａの縦軸は、動作させるスレッド数が２、コア数が１での性能に対する相対性能を示す。図１２Ａには、各コア２４で２つのスレッド２５を動作させた場合と、各コア２４で４つのスレッド２５を動作させた場合の性能が示されている。図１２Ａに示すように、ＮＰＢ  ＥＰでは、各コア２４で４つのスレッド２５を動作させた場合の方が性能が高く、また、並列処理を行うコア数が多いほど高い性能が得られる。図１２Ａの例では、スレッド数が４でコア数が６０の場合に最も高い性能が得られている。
【００６１】
図１２Ｂは、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。図１２Ｂの横軸は、並列処理を実行させたコア数を示す。図１２Ｂの縦軸は、動作させるスレッド数が２、コア数が１での性能に対する相対性能を示す。図１２Ｂには、各コア２４で２つのスレッド２５を動作させた場合と、各コア２４で４つのスレッド２５を動作させた場合の性能が示されている。図１２Ｂに示すように、ＮＰＢ  ＦＴでは、各コア２４で動作させるスレッド数が２、４の場合で共に、コア数に比例して一律に性能が高くならず、特定のコア数で性能が飽和して低下する。また、図１２Ｂの例では、各コア２４で動作させるスレッド数が２の場合の方が高い性能が得られている。動作させるスレッド数を制限した方が高い性能を得られるプログラムもある。
【００６２】
そこで、実施例２にかかる特定部５０は、コア２４の並列処理を実行可能なスレッド数および並列処理を実行可能なコア数の範囲内で、処理が実行されるスレッド数およびコア数を特定する。例えば、特定部５０は、各コア２４で動作させるスレッド数を変えて、イタレーション数の処理を、動作させるスレッド２５に同程度ずつ割り振る場合に処理が実行されるスレッド数およびコア数を特定する。例えば、特定部５０は、イタレーション数Ｎを２５６とし、プロセッサ２０のコア数を６０とし、各コア２４で動作させるスレッド数をｂとし、スレッド２５に割り振る処理数をａとした場合、処理が実行されるスレッド数およびコア数を次のように特定する。
【００６３】
特定部５０は、動作させるスレッド数ｂを１から順に１つずつ変化させ、スレッド数ｂ毎に、割り振る処理数ａを１から順に１つずつ変化させる。そして、特定部５０は、割り振る処理数ａとスレッド数ｂを乗算した値でイタレーション数Ｎを除算し、除算した値の少数点以下を切り上げた値Ｘを、値Ｘが１以上である間それぞれ求める。これにより、例えば、スレッド数ｂ＝４とすると、ａ＝１の場合は、Ｘ＝６４、ａ＝２の場合は、Ｘ＝３２・・・とそれぞれ求まる。また、スレッド数ｂ＝３とすると、ａ＝１の場合は、Ｘ＝８６、ａ＝２の場合は、Ｘ＝４３・・・とそれぞれ求まる。この値Ｘは、コア２４でスレッド数ｂのスレッド２５を動作させ、各スレッド２５にａ個程度ずつ処理を割り振る場合に、並列処理が実行されるコア数である。
【００６４】
そして、特定部５０は、値Ｘがプロセッサ２０のコア数以下の範囲内で、値Ｘを特定する。例えば、プロセッサ２０のコア数が６０個である場合、スレッド数ｂ毎のコア数は、以下のように求まる。以下、特定部５０により特定されたスレッド数毎の各値Ｘを試行パターンと呼ぶ。
【００６５】
スレッド数ｂ＝１：Ｘ＝５２、４３、３７、３２、２９、・・・１
スレッド数ｂ＝２：Ｘ＝４３、３２、２６、２２、１９、・・・１
スレッド数ｂ＝３：Ｘ＝４３、２９、２２、１８、１５、・・・１
スレッド数ｂ＝４：Ｘ＝３２、２２、１６、１３、１１、・・・１
【００６６】
図１３は、ＮＰＢ  ＦＴのコア数毎の性能の評価結果の一例を示す図である。図１３の例は、各コア２４で動作させるスレッド数を１〜４として、それぞれ並列処理を実行するコア数を１〜６０の範囲で変えて同程度ずつコア２４に処理を割り振った場合の並列処理を実行したコア数毎の性能の一例である。図１３の横軸は、並列処理を実行させたコア数を示す。図１３の縦軸は、動作させるスレッド数が１、コア数が１での性能に対する相対性能を示す。図１３に示すように、イタレーション数Ｎがコア数に対してあまり大きくない場合、コア２４あたりの処理数の違いにより処理性能が階段状になる。
【００６７】
決定部５１は、特定部５０により特定されたスレッド数およびコア数のなかから、処理性能の最も高いスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する。一例として、決定部５１は、試行パターンのスレッド数およびコア数のなかから、スレッド数毎に、ヒルクライム法により、最も性能の高いコア数を求める。そして、決定部５１は、スレッド数毎の最も性能の高いコア数での性能を比較し、性能が最も高いコア数を並列処理を実行するコア数と決定する。例えば、決定部５１は、試行パターンのスレッド数およびコア数をスレッド数が多いものから、スレッド数毎に、コア数の多い順に、コア数のコア２４を用いてイタレーション数Ｎの処理を並列に実行して性能の評価を行う。そして、決定部５１は、スレッド数毎に、コア数の多い順に性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を当該スレッド数の最も良い性能のコア数と特定する。そして、決定部５１は、少ないスレッド数の最も良い性能が多いスレッド数の最も良い性能を最初に下回った際の多い側のスレッド数およびコア数を、並列処理を実行するスレッド数およびコア数と決定する。
【００６８】
例えば、図１３の例では、決定部５１は、スレッド数が４の場合について、３２個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。次に、決定部５１は、２２個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。そして、決定部５１は、コア数が３２個の場合の性能と、コア数が２２個の場合の性能を比較する。図１３の例では、コア数が２２個の場合の性能は、コア数が３２個の場合の性能よりも下回っている。この場合、決定部５１は、スレッド数が４の場合について、最も良い性能のコア数を３２個と決定する。
【００６９】
決定部５１は、スレッド数が３の場合について、４３個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。次に、決定部５１は、２９個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。そして、決定部５１は、コア数が４３個の場合の性能と、コア数が２９個の場合の性能を比較する。図１３の例では、コア数が２９個の場合の性能は、コア数が４３個の場合の性能よりも下回っている。この場合、決定部５１は、スレッド数が３の場合について、最も良い性能のコア数を４３個と決定する。
【００７０】
決定部５１は、スレッド数が４、コア数を５２個の場合の性能と、スレッド数が３、コア数を４３個の場合の性能と比較する。図１３の例では、スレッド数が３、コア数を４３個の場合の性能は、スレッド数が４、コア数を５２個の性能を下回っていない。
【００７１】
この場合、スレッド数が少ないとより性能が高くなる可能性がある。そこで、決定部５１は、スレッド数が２の場合について、４３個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。次に、決定部５１は、３２個のコア２４によりイタレーション数Ｎの処理を並列に実行して性能の評価を行う。そして、決定部５１は、コア数が４３個の場合の性能と、コア数が３２個の場合の性能を比較する。図１３の例では、コア数が３２個の場合の性能は、コア数が４３個の場合の性能よりも下回っている。この場合、決定部５１は、スレッド数が２の場合について、最も良い性能のコア数を４３個と決定する。
【００７２】
決定部５１は、スレッド数が３、コア数を４３個の場合の性能と、スレッド数が２、コア数を４３個の場合の性能と比較する。図１３の例では、スレッド数が２、コア数を４３個の場合の性能は、スレッド数が３、コア数を４３個の性能を下回っている。
【００７３】
この場合、決定部５１は、スレッド数が３、コア数が４３を、並列処理を実行するスレッド数およびコア数と決定する。
【００７４】
なお、決定部５１は、特定部５０により特定された試行パターンの各スレッド数およびコア数でイタレーション数Ｎの処理を並列に実行して性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定してもよい。
【００７５】
ここで、決定部５１により決定されるコア数の評価結果の一例を説明する。図１４は、評価結果の一例を示す図である。なお、図１４は、スレッド数およびコア数に対する性能が図１３に示す関係である場合の評価結果である。試行回数は、決定部５１が並列処理を実行するスレッド数およびコア数を決定するまでに性能の評価を行った回数である。精度は、処理性能の最も高い性能を決定できたかの予測精度を示し、決定されたスレッド数、コア数での処理性能を最大性能で除算した値である。
【００７６】
図１４の「ヒルクライム」は、決定部５１が試行パターンの各スレッド数およびコア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が６、精度が１．００である。図１４の「全探索」は、決定部５１が試行パターンの各スレッド数およびコア数の性能を求め、処理性能の最も高いものを並列処理を実行するスレッド数およびコア数と決定した場合の評価結果であり、試行回数が７９、精度が１．００である。
【００７７】
また、図１４には、試行パターンを特定しないで、並列処理を実行するコア数を従来のように決定した場合の評価結果も示している。図１４の「従来のヒルクライム」は、スレッド数が１〜４について、図１３に示す１〜６０の各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が４４、精度が０．９９である。また、図１３の「従来の全探索」は、スレッド数が１〜４について、図１３に示す１〜６０の全てのコア数の性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が２４０、精度が１．００である。
【００７８】
このように、並列処理最適化プログラム３２は、試行パターンの各スレッド数およびコア数のなかから、並列処理を実行するスレッド数およびコア数を決定することにより、ヒルクライム法を用いた場合でも、処理性能の高いコア数を高い精度で求めることができる。また、並列処理最適化プログラム３２は、試行パターンの各スレッド数およびコア数のなかから、並列処理を実行するコア数と決定することにより、全探索を用いた場合でも、より短期間で処理性能の高いコア数を求めることができる。また、並列処理最適化プログラム３２は、各コア２４に同程度の処理を割り振る場合、少ない数で割り振れるコア数を特定するため、消費電力を少なく抑えることができる。すなわち、並列処理最適化プログラム３２は、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
【００７９】
［処理の流れ］
次に、実施例２に係る情報処理装置１０が並列処理最適化プログラム３２を実行した際に並列処理に適したコア数を決定する並列処理最適化処理の流れについて説明する。図１５は、実施例２に係る並列処理最適化処理の手順の一例を示すフローチャートである。実施例２に係る並列処理最適化処理の一部は、図９に示した実施例１に係る並列処理最適化処理と同一であるため、同一部分については同一の符号を付し、主に異なる処理について説明する。
【００８０】
決定部５１は、性能が未評価の最も大きいスレッド数を性能の評価対象のスレッド数とする（Ｓ１５）。例えば、決定部５１は、スレッド数が１〜４の全てで性能が未評価の場合、最も大きい４を評価対象のスレッド数とする。決定部５１は、この評価対象のスレッド数のコア数についてＳ１１〜Ｓ１３の処理を行う。このＳ１１〜Ｓ１３の処理により、評価対象のスレッド数での最も良い性能のコア数が特定される。
【００８１】
そして、決定部５１は、評価対象のスレッド数での最も良い性能が、評価対象のスレッド数よりも１つ多いスレッド数での最も良い性能よりも悪化しているか判定する（Ｓ１６）。性能が悪化していない場合（Ｓ１６否定）、上述のＳ１５の処理へ移行する。
【００８２】
一方、性能が悪化している場合（Ｓ１６肯定）、決定部５１は、評価対象のスレッド数よりも１つ多いスレッド数での最も良い性能のコア数を、並列処理を実行するスレッド数およびコア数と決定する（Ｓ１７）。
【００８３】
次に、実施例２に係る試行パターン特定処理の流れについて説明する。図１６は、実施例２に係る試行パターン特定処理の手順の一例を示すフローチャートである。実施例２に係る試行パターン特定処理の一部は、図１０に示した実施例１に係る試行パターン特定処理と同一であるため、同一部分については同一の符号を付し、主に異なる処理について説明する。
【００８４】
特定部５０は、変数ａ、変数ｂをそれぞれ１に初期化する（Ｓ３０）。特定部５０は、変数ａと変数ｂを乗算した値でイタレーション数Ｎを除算し、除算結果の値の少数点以下を切り上げた値Ｘを算出する（Ｓ３１）。
【００８５】
値Ｘが１以上ではない場合（Ｓ２４否定）、特定部５０は、変数ｂがコア２４で動作可能な最大のスレッド数Ｓであるか否かを判定する（Ｓ３２）。変数ｂが最大のスレッド数Ｓである場合（Ｓ３２肯定）、処理を終了する。
【００８６】
一方、変数ｂが最大のスレッド数Ｓではない場合（Ｓ３２否定）、特定部５０は、変数ａを１に初期化し、変数ｂに１を加算して（Ｓ３３）、Ｓ３１の処理へ移行する。
【００８７】
また、試行パターンに値Ｘがない場合（Ｓ２６否定）、特定部５０は、試行パターンに、スレッド数が変数ｂの値の場合に試行するコア数として値Ｘを加える（Ｓ３４）。すなわち、スレッド数が変数ｂ、コア数が値Ｘを試行パターンに加える。
【００８８】
［効果］
上述してきたように、本実施例に係る情報処理装置１０は、コア２４の並列処理を実行可能なスレッド数および並列処理を実行可能なコア数の範囲内で、処理が実行されるスレッド数およびコア数を特定する。そして、情報処理装置１０は、特定したスレッド数およびコア数のなかから、処理性能の最も高いスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する。これにより、情報処理装置１０は、高効率で並列処理を実行可能なスレッド数およびコア数を速やかに求めることができる。
【００８９】
また、情報処理装置１０は、特定したスレッド数およびコア数をスレッド数が多いものから、スレッド数毎に、コア数の多い順に性能の評価を行って性能を順次比較する。情報処理装置１０は、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を当該スレッド数の最も良い性能のコア数と特定する。そして、情報処理装置１０は、少ないスレッド数の最も良い性能が多いスレッド数の最も良い性能を最初に下回った際の多い側のスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する。これにより、情報処理装置１０は、並列処理を実行するスレッド数およびコア数をより速やかに求めることができる。
【実施例３】
【００９０】
次に、実施例３について説明する。実施例３に係る情報処理装置１０の構成は、実施例２と略同一であるため、同一部分については同一の符号を付し、主に異なる部分について説明する。
【００９１】
実施例３に係る決定部５１は、特定部５０により特定されたスレッド数およびコア数のなかから、所定の予測モデルを用いて、並列処理を実行するスレッド数およびコア数と決定する。例えば、決定部５１は、実行するスレッド数を変えて１つのコア２４の各スレッドに１イタレーションを割り振って処理を実行して、各スレッド数での処理性能を計測する。例えば、決定部５１は、実行中のメモリスループットを測定する。そして、決定部５１は、測定されたメモリスループットをスレッド数で除算して、スレッド数毎に、１スレッドあたりのメモリスループットを求める。決定部５１は、１スレッドあたりのメモリスループットが最も少ないスレッド数を並列処理を実行するスレッド数と決定する。
【００９２】
また、決定部５１は、決定したスレッド数での１スレッドあたりのメモリスループットに決定したスレッド数を乗算してコアあたりのメモリスループットを求める。このメモリスループットは、コア数に比例して増加し、メモリスループットがピークに達するとこれ以上実行コア数を増やしても性能が向上しない。そこで、決定部５１は、情報処理装置１０において可能なピークのメモリスループットをコアあたりのメモリスループットで割り、ピークのメモリスループットに達するコア数を算出する。例えば、コアあたりのメモリスループットが２０であり、ピークのメモリスループットが１００である場合、決定部５１は、１００／２０＝５をピークのメモリスループットに達するコア数と算出する。
【００９３】
なお、決定部５１は、メモリスループットに代えて、メモリのバンド幅を求めてもよい。例えば、コアあたりのバンド幅が３％であり、最大利用できるバンド幅が１００％である場合、決定部５１は、１００／３＝３３．３を最大利用できるバンド幅に達するコア数と算出する。
【００９４】
そして、決定部５１は、試行パターンの、並列処理を実行するスレッド数のコア数のなかから、ピークの性能となるコア数以内で、最大のコア数を並列処理を実行するコア数と特定する。例えば、並列処理を実行するスレッド数が１であり、試行パターンのスレッド数が１のコア数が５２、４３、３７、３２、２９、・・・１であり、ピークの性能となるコア数が３３．３であるものとする。この場合、決定部５１は、コア数が３３．３以内で最大の３２を並列処理を実行するコア数と特定する。
【００９５】
［処理の流れ］
次に、実施例３に係る情報処理装置１０が並列処理最適化プログラム３２を実行した際に並列処理に適したコア数を決定する並列処理最適化処理の流れについて説明する。図１７は、実施例３に係る並列処理最適化処理の手順の一例を示すフローチャートである。実施例３に係る並列処理最適化処理の一部は、図１５に示した実施例２に係る並列処理最適化処理と同一であるため、同一部分については同一の符号を付し、主に異なる処理について説明する。
【００９６】
決定部５１は、実行するスレッド数を変えて１コア２４のスレッドに１イタレーションを割り振って処理を実行して、各スレッド数での処理性能を計測する（Ｓ５０）。そして、決定部５１は、各スレッド数での処理性能に基づき、並列処理を実行するスレッド数ｓと、ピークの性能となるコア数ｍを算出する（Ｓ５１）。
【００９７】
決定部５１は、試行パターンのスレッド数ｓの各コア数を少ない順に並べ、コア数の少ない順にＴ１、Ｔ２、Ｔ３・・・ＴＰとする（Ｓ５２）。決定部５１は、変数ｎを０に初期化する（Ｓ５３）。そして、決定部５１は、変数ｎに１を加算する（Ｓ５４）。
【００９８】
決定部５１は、Ｔｎ＜コア数ｍ＜Ｔｎ＋１を満たすか否かを判定する（Ｓ５５）。Ｔｎ＜コア数ｍ＜Ｔｎ＋１を満たさない場合（Ｓ５５否定）、Ｓ５４の処理へ移行する。
【００９９】
一方、Ｔｎ＜コア数ｍ＜Ｔｎ＋１を満たす場合（Ｓ５５肯定）、決定部５１は、Ｔｎのコア数を、並列処理を実行するコア数と決定する（Ｓ５６）。プロセッサ制御部５２は、スレッド数ｓおよび決定したコア数で、残りのイタレーションの処理が並列実行されるように制御し（Ｓ５７）、処理を終了する。
【０１００】
［効果］
上述してきたように、本実施例に係る情報処理装置１０は、特定したスレッド数およびコア数のなかから、所定の予測モデルを用いて、並列処理を実行するスレッド数およびコア数を決定する。これにより、情報処理装置１０は、並列処理を実行するスレッド数およびコア数をより速やかに求めることができる。
【実施例４】
【０１０１】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１０２】
例えば、上記の実施例では、並列処理を実行する際に並列処理を実行するスレッド数、コア数を決定する場合について説明したが、開示のシステムはこれに限定されない。例えば、並列処理が定期的に行われるなど、実行される並列処理が事前にわかっている場合、並列処理の実行前にスレッド数、コア数を決定してもよい。
【０１０３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、並列処理最適化プログラム３２の特定部５０と、決定部５１と、プロセッサ制御部５２の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、並列処理最適化プログラム３２は複数のプログラムにより構成され、複数の装置に分散配置されてもよい。
【０１０４】
なお、上記した並列処理最適化プログラム３２については、必ずしも最初からＤＩＳＫ２１に記憶させることを要しない。
【０１０５】
例えば、情報処理装置１０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、情報処理装置１０がこれらからプログラムを読み出して実行するようにしてもよい。
【０１０６】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介して情報処理装置１０に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、情報処理装置１０がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１０７】
１０  情報処理装置
２０  プロセッサ
２４  コア
２５  スレッド
３１  並列処理プログラム
３２  並列処理最適化プログラム
５０  特定部
５１  決定部
５２  プロセッサ制御部
【図１】
2015022574.tif 000003
【図２】
2015022574.tif 000004
【図３】
2015022574.tif 000005
【図４】
2015022574.tif 000006
【図５Ａ】
2015022574.tif 000007
【図５Ｂ】
2015022574.tif 000008
【図６】
2015022574.tif 000009
【図７】
2015022574.tif 000010
【図８】
2015022574.tif 000011
【図９】
2015022574.tif 000012
【図１０】
2015022574.tif 000013
【図１１】
2015022574.tif 000014
【図１２Ａ】
2015022574.tif 000015
【図１２Ｂ】
2015022574.tif 000016
【図１３】
2015022574.tif 000017
【図１４】
2015022574.tif 000018
【図１５】
2015022574.tif 000019
【図１６】
2015022574.tif 000020
【図１７】
2015022574.tif 000021