(57)【要約】      （修正有）【課題】シミュレーションジョブを実行するためのシステム、コントローラ、方法を提供する。【解決手段】システムは、コンピューティングハードウェアリソース２０とコントローラ１０を有する。ジョブスケジューラ１２は、シミュレーションジョブとユーザ定義リソース設定とを指定するジョブリクエストを受信する。コンピューティングハードウェアリソースは、ユーザ定義リソース設定に従ってシミュレーションジョブを実行する。性能モニタ１４は、シミュレーションジョブの実行をモニタリングし、性能統計量を生成する。性能統計量メモリ１６は、実行済みシミュレーションジョブの特性、ユーザ定義リソース設定、性能統計量を記憶する。アラートジェネレータ１８は、指定されたシミュレーションジョブに類似する実行済みシミュレーションジョブを判定し、性能統計量が向上されていると識別された場合、そのユーザ定義リソース設定を示すアラートを生成する。【選択図】図４
2018005896.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションジョブを実行するためのシステムであって、
システムユーザにより送信されたジョブリクエストを受信するよう構成されているジョブスケジューラであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定する、ジョブスケジューラと、
前記ジョブスケジューラにより命令されるようにシミュレーションジョブを実行するよう構成されているコンピューティングハードウェアリソースであって、前記ジョブスケジューラは、前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するように前記コンピューティングハードウェアリソースに命令するよう構成されている、コンピューティングハードウェアリソースと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するよう構成されている性能モニタと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するよう構成されている性能統計量メモリと、
アラートジェネレータであって、
指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、
判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、
前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、
向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成する
よう構成されているアラートジェネレータと、
を有する、システム。
【請求項２】
前記ユーザ定義リソース設定は、複数の個々の設定の各個々の設定の値を含み、
指定された前記シミュレーションジョブと前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブとは、シミュレーティングアプリケーション入力に従ってシミュレーションモデルを実行するシミュレーティングアプリケーションを含み、
前記実行済みシミュレーションジョブの記憶されている前記特性は、前記シミュレーティングアプリケーションを表す複数のジョブ特性パラメータの各ジョブ特性パラメータの値、前記シミュレーションモデル、及び前記シミュレーティングアプリケーション入力を含み、
前記アラートジェネレータは、
指定された前記シミュレーションジョブについての前記複数のジョブ特性パラメータの各ジョブ特性パラメータの値を取得することにより、指定された前記シミュレーションジョブの特性を取得し、
前記複数のジョブ特性パラメータの各ジョブ特性パラメータのそれぞれの値の比較と、それぞれの前記個々の設定の各個々の設定の値の比較と、に基づいて、実行済みシミュレーションジョブが、指定された前記シミュレーションジョブに類似するか否かを判定する
よう構成されている、請求項１に記載のシステム。
【請求項３】
前記アラートジェネレータは、
指定された前記シミュレーションジョブについての前記ジョブ特性パラメータ及び／又はユーザ定義リソース設定の各々の値を、前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブの同じジョブ特性パラメータ及び／又はユーザ定義リソース設定の値と比較することにより、指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、
前記実行済みシミュレーションジョブについての予め規定された数又は比率の値が、同じジョブ特性評価及び／又はユーザ定義リソース設定について、予め規定されたマージン内で、指定された前記シミュレーションジョブについての値と合致した場合、前記実行済みシミュレーションジョブが、指定された前記シミュレーションジョブに類似すると判定する
よう構成されている、請求項２に記載のシステム。
【請求項４】
前記ユーザ定義リソース設定は、前記シミュレーションジョブを実行するための並列プロセスの数を含み、並列プロセスの異なる数が、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定に含まれ、
前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブの実行を表す前記性能統計量の各々は、前記シミュレーションジョブ全体又は前記シミュレーションジョブの指定された部分を実行するのに要した時間を含み、
前記アラートジェネレータは、
実行するのに要したそれぞれの前記時間の比較に基づいて、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、
前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブのうち、実行するのに短い方の前記時間を要した実行済みシミュレーションジョブの前記並列プロセスの数を、前記アラートにおいて示す
よう構成されている、請求項１に記載のシステム。
【請求項５】
前記ユーザ定義リソース設定は、１つの並列プロセス当たりのスレッドの数をさらに含み、１つの並列プロセス当たりのスレッドの異なる数が、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定に含まれ、
前記アラートジェネレータは、前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブのうち、実行するのに短い方の前記時間を要した実行済みシミュレーションジョブの前記並列プロセスの数と前記１つの並列プロセス当たりのスレッドの数とを、前記アラートにおいて示すよう構成されている、請求項４に記載のシステム。
【請求項６】
前記ユーザ定義リソース設定は、前記シミュレーションジョブにおいて生じるＩ／Ｏ操作のためのファイルシステムの選択を含み、Ｉ／Ｏ操作のための異なるファイルシステムが、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定において選択され、
モニタリングされている前記実行を表す前記性能統計量と、前記実行済みシミュレーションジョブの実行を表す前記性能統計量と、の各々は、前記シミュレーションジョブ全体又は前記シミュレーションジョブの指定された部分において生じたＩ／Ｏ操作を完了するのに要した時間を含み、
前記アラートジェネレータは、
Ｉ／Ｏ操作を完了するのに要したそれぞれの前記時間の比較に基づいて、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとから、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方と比較して向上されている性能統計量を有する実行済みシミュレーションジョブを識別し、
前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうち、Ｉ／Ｏ操作を完了するのに短い方の前記時間を要した前記実行済みシミュレーションジョブのＩ／Ｏ操作のためのファイルシステムを、前記アラートにおいて示す
よう構成されている、請求項１に記載のシステム。
【請求項７】
各性能統計量は、前記シミュレーションジョブの実行の側面の性能の尺度を示す性能変数の値であり、
前記アラートジェネレータは、
指定された前記シミュレーションジョブに類似すると判定された前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、前記第１の実行済みシミュレーションジョブとして識別することにより、複数の候補アラートを識別し、
前記第１の実行済みシミュレーションジョブと同じ記憶されている特性を有するとともに、前記同じ記憶されている特性を有する他の実行済みシミュレーションジョブの中で性能の最良の尺度を示す値を有する実行済みシミュレーションジョブを、各性能変数についての前記第２の実行済みシミュレーションジョブとして確認し、
予め規定されたマッピングを使用して、前記性能変数を、該性能変数に影響を及ぼす１つ以上のリソース設定にマッピングし、
マッピングされた前記１つ以上のリソース設定の値が、確認された前記第２の実行済みシミュレーションジョブと指定された前記シミュレーションジョブとの間で異なる場合、前記性能変数、確認された前記第２の実行済みシミュレーションジョブのマッピングされた前記１つ以上のリソース設定、及びリソース設定における差異を、候補アラートとして記憶する
よう構成されており、
前記アラートジェネレータは、さらに、記憶されている前記候補アラートからアラートを選択することにより、前記システムユーザに対するアラートを生成するよう構成されている、請求項１に記載のシステム。
【請求項８】
前記アラートジェネレータは、前記第１の実行済みシミュレーションジョブと確認された前記第２の実行済みシミュレーションジョブとの間の、前記性能変数についての性能の尺度における差異を、性能向上量として定量化し、性能向上量の順に、前記候補アラートをランク付けし、上位ｎ個のランク付けされた前記候補アラートの各候補アラートを前記システムユーザに通知することにより、アラートを生成するよう構成されている、請求項７に記載のシステム。
【請求項９】
前記アラートジェネレータは、指定された前記シミュレーションジョブと、指定された前記シミュレーションジョブに類似すると判定された前記１つ以上の実行済みシミュレーションジョブの各実行済みシミュレーションジョブと、の間の類似性のレベルを、当該実行済みシミュレーションジョブの値が、予め規定されたマージン内で、指定された前記シミュレーションジョブについての値と合致したジョブ特性パラメータ及び／又はユーザ定義リソース設定の数に基づいて、定量化するよう構成されており、
前記アラートジェネレータは、指定された前記シミュレーションジョブと、リソース設定及び性能向上量が記憶されている前記実行済みシミュレーションジョブと、の間の定量化された前記類似性のレベルに基づいて、候補アラートに重み付けを付与し、付与された前記重み付けにより重み付けされた性能向上量の順に、前記候補アラートをランク付けし、上位ｎ個のランク付けされた前記候補アラートの各候補アラートを前記システムユーザに通知することにより、アラートを生成するよう構成されている、請求項３又は７に記載のシステム。
【請求項１０】
前記アラートジェネレータは、生成された前記アラートを前記ジョブスケジューラに送信するよう構成されており、前記ジョブスケジューラは、前記アラートにおいて識別された異なるユーザ定義リソース設定を、前記システムユーザにより送信される次のシミュレーションジョブについてのデフォルトとして設定するよう構成されている、請求項１に記載のシステム。
【請求項１１】
前記性能統計量メモリは、指定された前記シミュレーションジョブが完了すると、指定された前記シミュレーションジョブについて実行済みシミュレーションジョブとして、指定された前記シミュレーションジョブの特性、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定、及び、指定された前記シミュレーションジョブの実行を表す、前記性能モニタにより生成された前記性能統計量を記憶するよう構成されている、請求項１に記載のシステム。
【請求項１２】
指定された前記シミュレーションジョブの前記特性が、前記性能統計量メモリ内の実行済みシミュレーションジョブの特性と同じであり、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定と、該実行済みシミュレーションジョブについてのユーザ定義リソース設定と、が同じであると、前記システムが判定した場合、前記システムは、前記性能統計量を集約して各性能変数について平均値を生成し、前記アラートジェネレータによる他の実行済みシミュレーションジョブとの比較のための性能統計量として、前記平均値を記憶する、請求項１１に記載のシステム。
【請求項１３】
指定された前記シミュレーションジョブの前記特性が、前記性能統計量メモリ内の実行済みシミュレーションジョブの特性と同じであり、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定と、該実行済みシミュレーションジョブについてのユーザ定義リソース設定と、が異なると、前記システムが判定した場合、前記システムは、指定された前記シミュレーションジョブの前記性能統計量と、該実行済みシミュレーションジョブの性能統計量と、をリンクする、請求項１１又は１２に記載のシステム。
【請求項１４】
コンピューティングハードウェアリソース上でのシミュレーションジョブの実行を制御するためのコンピューティングハードウェアリソースコントローラであって、
システムユーザにより送信されたジョブリクエストを受信するよう構成されているジョブスケジューラであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定し、前記ジョブスケジューラは、前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するように前記コンピューティングハードウェアリソースに命令するよう構成されている、ジョブスケジューラと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するよう構成されている性能モニタと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するよう構成されている性能統計量メモリと、
アラートジェネレータであって、指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成するよう構成されているアラートジェネレータと、
を有する、コンピューティングハードウェアリソースコントローラ。
【請求項１５】
コンピューティングハードウェアリソース上でのシミュレーションジョブの実行を制御するための、コンピュータにより実施される方法であって、
システムユーザにより送信されたジョブリクエストを受信するステップであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定する、ステップと、
前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するように前記コンピューティングハードウェアリソースに命令するステップと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するステップと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するステップと、
指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成するステップと、
を含む、方法。
【請求項１６】
コンピューティングデバイスにより実行されたときに、前記コンピューティングデバイスに、
システムユーザにより送信されたジョブリクエストを受信するステップであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定する、ステップと、
前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するようにコンピューティングハードウェアリソースに命令するステップと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するステップと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するステップと、
指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成するステップと、
を含む方法を実行させる、コンピュータプログラム。
【請求項１７】
請求項１６に記載のコンピュータプログラムを記憶している記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共用コンピューティングリソースにおけるジョブスケジューリングの分野に属する。詳細には、本発明は、コンピューティングハードウェアリソースにおけるシミュレーションジョブのスケジューリング及び実行に関する。
【背景技術】
【０００２】
科学技術シミュレーションをスピードアップするために又はいかなる他のタイプのコンピューティングリソース上で解決されるには大きすぎる若しくは複雑すぎる問題の解決を可能にするために、専門家でないユーザによる高性能コンピューティング（ＨＰＣ）リソースの使用に対する増え続けている要求が存在している。
【０００３】
しかしながら、これらのＨＰＣリソースの使用を最大化するには、科学技術シミュレーション自体をどのようにセットアップ及び実行するかに関する知識とともに、そのようなシステムの特性及び性能考慮事項の深い知識が必要とされる。
【０００４】
これは、しばしば、専門家でないＨＰＣユーザにとって、シミュレーションの効率的な実行に対する障壁であることが分かっている。
【０００５】
ＨＰＣリソースのハードウェア特性、ＨＰＣリソースのソフトウェアスタック、及び、並列システムを使用するときの性能考慮事項等の、ＨＰＣリソースの知識がなければ、そのようなシステムの単純な使用は、ユーザアプリケーションの貧弱な性能につながるおそれがある。
【０００６】
一例として、図１に示される６４行×３２列のサイズのシミュレーション問題を考えてみる。このシミュレーション問題を解くためのアプリケーションが、行次元に沿って計算を分割し、これを別個のプロセッサに割り振ることにより、並列に実行され得ると仮定する。次いで、プロセッサはそれぞれ、１つのプロセスのみを使用するときに可能であるよりも潜在的に短縮された時間でこの問題を解くために、同時に動作してシミュレーションを実行する。例えば図２において、シミュレーション問題は、４つのプロセスにわたって分割されており、各プロセスには、１６個の行が割り当てられている。
【０００７】
しかしながら、並列に実行するように問題を分割することは、並列化が増大されるにつれて性能向上を制限するオーバーヘッドをしばしば招く。そのようなオーバーヘッドは、シミュレーションを調整及び制御するための又はファイル出力操作（Ｉ／Ｏ）のためのプロセスに情報を収集するための、定期的間隔でのプロセス間の通信の必要性を含む。
【０００８】
並列に実行するときの性能向上に対する制限を例示するために、図３は、異なるプロセス数で実行したときのシミュレーション問題についての実行タイミング図を示している。図示の簡潔さのため、単純なタイミングが、シミュレーションの各段階に割り当てられており、シミュレーション問題の１つの行に対する解決の計算に、プロセス１時間ユニットを要し、プロセス間通信に、１プロセス当たり２時間ユニット（データを分配するための、計算前の１時間ユニット、及び、その後の、Ｉ／Ｏのためにデータを収集するための１時間ユニット）を要し、シミュレーションの最後においてＩ／Ｏ操作を実行するのに、４時間ユニットを要すると仮定する。図３から、シミュレーションの総実行時間が、使用されたプロセスの数とともにどのように変化しているかを確認することができる。
【０００９】
１つのプロセスを使用すると、全ての６４個の行が、その１つのプロセスにより計算されるので、計算時間は６４時間ユニットである。通信は存在せず、Ｉ／Ｏ時間は４時間ユニットである。したがって、総実行時間は６８時間ユニットである。２つのプロセスを使用すると、各プロセスは、３２個の行を同時に計算するので、実効計算時間は３２時間ユニットである。通信には合計で４時間ユニットを要する。ここでも、Ｉ／Ｏ時間は４時間ユニットである。この場合、総実行時間は、１つのプロセスに対して１．７倍の向上である４０時間ユニットである。同様に４つのプロセスを使用すると、各プロセスは、１６個の行を同時に計算し、１つのプロセスの実行に対して２．４倍の性能向上が達成されている。しかしながら、使用されるプロセスの数がさらに増えるにつれて、通信が、実行時間を支配し始め、性能が悪くなっている。１６個のプロセスでは、計算時間は４時間ユニット（各プロセスは４個の行を同時に実行する）に過ぎないが、総通信時間は３２時間ユニットである。結果として、総実行時間は４０時間ユニットである。これは、２つのプロセスが使用されたときと同じ性能であり、４つのプロセスが使用されたときよりも悪い。同様に３２個のプロセスでは、計算時間は、２時間ユニットに減少しているが、総通信時間は６４時間ユニットであり、結果として、総実行時間は、１つのプロセスの実行よりも長い。
【００１０】
性能の調査なくプロセスの数についての理想的な選択を知ることは難しい。さらに、ＨＰＣリソース及びそのような性能特性をよく知らないユーザは、それらに利用可能なプロセスと同数のプロセスでシミュレーションを実行するであろう可能性が高く、これは、ＨＰＣリソースを使用することからの性能な明らかの向上をもたらさない。
【００１１】
ＨＰＣリソース上での並列アプリケーションの最適な構成及び性能を見つける一般的なアプローチは、異なる設定で当該アプリケーションの複数のベンチマークを実行することである。これは、様々なプロセス数又はスレッド数での実行；異なる通信ライブラリを用いて実行すること；異なるファイルシステムへのＩ／Ｏを実行すること又はアプリケーションが実行されているコンピュータアーキテクチャにより良く適合するようにアプリケーションの構成設定を変更すること、を含み得る。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上記アプローチは、ユーザが、アプリケーションドメインとＨＰＣリソースの特性との両方の深い知識を有することを必要とする。これは、専門家でないユーザが、そのようなＨＰＣリソースを効率的に使用することを難しくする。
【課題を解決するための手段】
【００１３】
実施形態は、シミュレーションジョブを実行するためのシステムであって、
システムユーザにより送信されたジョブリクエストを受信するよう構成されているジョブスケジューラであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定（user-defined  resource  settings）と、を指定する、ジョブスケジューラと、
前記ジョブスケジューラにより命令されるようにシミュレーションジョブを実行するよう構成されているコンピューティングハードウェアリソースであって、前記ジョブスケジューラは、前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するように前記コンピューティングハードウェアリソースに命令するよう構成されている、コンピューティングハードウェアリソースと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するよう構成されている性能モニタと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するよう構成されている性能統計量メモリと、
アラートジェネレータであって、
指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、
判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、
前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、
向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成する
よう構成されているアラートジェネレータと、
を有する、システムを含む。
【００１４】
有利なことに、実施形態は、ユーザ定義リソース設定を変更することにより性能向上が得られ得るという、システムユーザに対するアラートを発する。アラートジェネレータは、実装に応じて、指定されたシミュレーションジョブの実行中及び実行後の両方で動作可能であり、したがって、システムユーザは、指定されたシミュレーションジョブの実行中に、又は、シミュレーションジョブが一連のシミュレーションジョブにおける１つである場合には、一連のシミュレーションジョブにおけるその後のシミュレーションジョブの実行を向上させるために実行後に、リソース設定を変更することができる。
【００１５】
実施形態は、向上されたアプリケーション効率性及びコンピューティングハードウェアリソース使用を可能にする。システムは、過去のシミュレーションジョブにおける向上された性能を同程度に実現している、リソース設定における差異をハイライトしたアラートを、ユーザに出力する。アラートジェネレータにより出力される、リソース設定における差異を実現することは、コンピューティングハードウェアリソースが、ユーザの経験のレベルにかかわらず全てのユーザにとって最適な方法で使用されていることを確実にする。すなわち、システムは、性能統計量メモリに過去のデータを記憶し、その過去のデータは、リソース設定を定義する際に、システムユーザの経験の欠如を補う。これを行う際、システムはまた、最適な使用のためにコンピューティングハードウェアリソースをモニタリングするための自動化された機構を提供する。
【００１６】
性能統計量メモリに、過去の性能統計量及び関連付けられたジョブ特性並びにジョブリソース設定情報を記憶することにより、アラートジェネレータは、専門家でない場合があるシステムユーザに情報を与えるアラートを生成することができ、したがって、システムユーザは、最良の構成をもって、現在のシミュレーションジョブ及び／又は将来のシミュレーションジョブを実行することができる。実行されているシミュレーションジョブに類似するシミュレーションを実行した経験をほとんど又は全くない有さないユーザは、ユーザ定義リソース設定が性能を向上させるように適応され得るかどうかを決定する際に、類似するジョブの過去の実行の記憶されている知識から恩恵を受けることができる。これは、システム管理又は性能最適化チームからのいかなる入力も必要とすることなく、達成される。
【００１７】
性能統計量メモリの使用はまた、性能透過性を増大させ、アプリケーション性能及び最適化技術の向上された情報共有を可能にする。
【００１８】
ユーザ定義リソース設定は、ジョブスケジューラが、シミュレーションジョブを実行するようにコンピューティングハードウェアリソースをスケジューリングする（すなわち、コンピューティングハードウェアリソースに命令する）際の、コンピューティングハードウェアリソースの選択及び使用を決定する。ユーザ定義リソース設定は、単にリソース設定と呼ばれることもある。ユーザ定義リソース設定は、ジョブスケジューラにおいてデフォルト値を有することがあり、したがって、ユーザ定義可能なリソース設定と呼ばれることもある。
【００１９】
指定されたシミュレーションジョブに類似すると判定される実行済みシミュレーションジョブは、指定されたシミュレーションジョブと同じユーザ定義リソース設定を有する実行済みシミュレーションジョブに限定され得る。そのような実施形態において、第１の実行済みシミュレーションジョブに対して第２の実行済みシミュレーションジョブにおいて向上されている性能統計量が判定される。
【００２０】
ジョブスケジューラ、性能モニタ、及びアラートジェネレータの各々は、メモリに接続されるプロセッサ（例えば、ＣＰＵ）であり得る。メモリは、処理命令と、処理入力、処理出力、及び処理中間形態と、を記憶する。
【００２１】
任意的に、指定されたシミュレーションジョブの特性が取得されてもよく、指定されたシミュレーションジョブに類似すると判定される実行済みシミュレーションジョブは、指定されたシミュレーションジョブと同じジョブ特性を有する実行済みシミュレーションジョブに限定されてもよい。
【００２２】
任意的に、
前記ユーザ定義リソース設定は、複数の個々の設定の各個々の設定の値を含み、
指定された前記シミュレーションジョブと前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブとは、シミュレーティングアプリケーション入力に従ってシミュレーションモデルを実行するシミュレーティングアプリケーションを含み、
前記実行済みシミュレーションジョブの記憶されている前記特性は、前記シミュレーティングアプリケーションを表す複数のジョブ特性パラメータの各ジョブ特性パラメータの値、前記シミュレーションモデル、及び前記シミュレーティングアプリケーション入力を含み、
前記アラートジェネレータは、
指定された前記シミュレーションジョブについての前記複数のジョブ特性パラメータの各ジョブ特性パラメータの値を取得することにより、指定された前記シミュレーションジョブの特性を取得し、
前記複数のジョブ特性パラメータの各ジョブ特性パラメータのそれぞれの値の比較と、それぞれの前記個々の設定の各個々の設定の値の比較と、に基づいて、実行済みシミュレーションジョブが、指定された前記シミュレーションジョブに類似するか否かを判定する
よう構成される。
【００２３】
有利なことに、そのような実施形態は、類似する、したがって、同等な過去に実行されたシミュレーションジョブを判定するための自動化されたプロシージャを形式化する。そのような形式化は、処理の点で効率的であり、また、関連する過去のシミュレーションジョブにおける変更されたリソース設定が確認されたときに、アラートが発されることを確実にする。
【００２４】
シミュレーションモデルは、１つのアルゴリズム又は一連のリンクされたアルゴリズム、及び、入力をシミュレーション結果に変換する他の処理命令である。シミュレーティングアプリケーションは、特定のシミュレーションモデルにひも付けられることもあるし、シミュレーティングアプリケーションは、汎用的であり、複数のシミュレーションモデルのうちの１つを実行できることもある。シミュレーションモデルは、それ自体シミュレーティングアプリケーションへの入力であることもある。
【００２５】
シミュレーティングアプリケーション入力は、例えば、シミュレーションのどれだけの回数の反復が実行されるかと、構成の特定の側面の詳細レベルと、ドメイン固有のオプションと、を決定することができる。シミュレーティングアプリケーション入力は、アプリケーションの内部にあり、どのように動作するかをシミュレーティングアプリケーションに命令する。
【００２６】
さらに、前記アラートジェネレータは、
指定された前記シミュレーションジョブについての前記ジョブ特性パラメータ及び／又はユーザ定義リソース設定の各々の値を、前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブの同じジョブ特性パラメータ及び／又はユーザ定義リソース設定の値と比較することにより、指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、
前記実行済みシミュレーションジョブについての予め規定された数又は比率の値が、同じジョブ特性評価及び／又はユーザ定義リソース設定について、予め規定されたマージン内で、指定された前記シミュレーションジョブについての値と合致した場合、前記実行済みシミュレーションジョブが、指定された前記シミュレーションジョブに類似すると判定する
よう構成されてもよい。
【００２７】
有利なことに、そのような実施形態は、その実装に応じて、例えば、システム設計時に、類似性の観念（notion）が調整されることを可能にする。異なる値が合致であるか否かを判定する際に、いくつかのジョブ特性パラメータにおいて、他のジョブ特性パラメータよりも大きな許容範囲が存在してもよい。さらに、そのような実施形態は、２つのシミュレーションジョブ間の類似性を定量化するための基礎を提供する。
【００２８】
任意的に、
前記ユーザ定義リソース設定は、前記シミュレーションジョブを実行するための並列プロセスの数を含み、並列プロセスの異なる数が、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定に含まれ、
前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブの実行を表す前記性能統計量の各々は、前記シミュレーションジョブ全体又は前記シミュレーションジョブの指定された部分を実行するのに要した時間を含み、
前記アラートジェネレータは、
実行するのに要したそれぞれの前記時間の比較に基づいて、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、
前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブのうち、実行するのに短い方の前記時間を要した実行済みシミュレーションジョブの前記並列プロセスの数を、前記アラートにおいて示す
よう構成される。
【００２９】
そのような実施形態は、指定されたシミュレーションジョブの実行が並列化されるプロセスの数において向上がなされ得るかどうかを判定するために、類似するシミュレーションジョブの過去の実行に関する性能統計量が利用されることを可能にする。さらに、そのような向上がなされ得る場合、指定されたシミュレーションジョブの実行の途中で、又は、システムユーザによる次の類似するシミュレーションジョブの実行の前に、変更を実施できるように、システムユーザにアラートされる。ここで、シミュレーションジョブは、しばしば、一連のそのようなジョブのうちの１つであることに留意されたい。
【００３０】
例えば、比較される性能統計量は、実行するための時間、すなわち、シミュレーションジョブの開始から完了までに経過した時間である。
【００３１】
任意的に、
前記ユーザ定義リソース設定は、１つの並列プロセス当たりのスレッドの数をさらに含み、１つの並列プロセス当たりのスレッドの異なる数が、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定に含まれ、
前記アラートジェネレータは、前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブのうち、実行するのに短い方の前記時間を要した実行済みシミュレーションジョブの前記並列プロセスの数と前記１つの並列プロセス当たりのスレッドの数とを、前記アラートにおいて示すよう構成される。
【００３２】
そのような実施形態は、指定されたシミュレーションジョブの実行が並列化される１つのプロセス当たりのスレッドの数において向上がなされ得るかどうかを判定するために、類似するシミュレーションジョブの過去の実行に関する性能統計量が利用されることを可能にする。さらに、そのような向上がなされ得る場合、指定されたシミュレーションジョブの実行の途中で、又は、システムユーザによる次の類似するシミュレーションジョブの実行の前に、変更を実施できるように、システムユーザにアラートされる。ここで、シミュレーションジョブは、しばしば、一連のそのようなジョブのうちの１つであることに留意されたい。
【００３３】
任意的に、
前記ユーザ定義リソース設定は、前記シミュレーションジョブにおいて生じるＩ／Ｏ操作のためのファイルシステムの選択を含み、Ｉ／Ｏ操作のための異なるファイルシステムが、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定において選択され、
モニタリングされている前記実行を表す前記性能統計量と、前記実行済みシミュレーションジョブの実行を表す前記性能統計量と、の各々は、前記シミュレーションジョブ全体又は前記シミュレーションジョブの指定された部分において生じたＩ／Ｏ操作を完了するのに要した時間を含み、
前記アラートジェネレータは、
Ｉ／Ｏ操作を完了するのに要したそれぞれの前記時間の比較に基づいて、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとから、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方と比較して向上されている性能統計量を有する実行済みシミュレーションジョブを識別し、
前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうち、Ｉ／Ｏ操作を完了するのに短い方の前記時間を要した前記実行済みシミュレーションジョブのＩ／Ｏ操作のためのファイルシステムを、前記アラートにおいて示す
よう構成される。
【００３４】
そのような実施形態は、指定されたシミュレーションジョブにおけるＩ／Ｏ操作のために使用されるファイルシステムにおいて向上がなされ得るかどうかを判定するために、類似するシミュレーションジョブの過去の実行に関する性能統計量が利用されることを可能にする。さらに、そのような向上がなされ得る場合、指定されたシミュレーションジョブの実行の途中で、又は、システムユーザによる次の類似するシミュレーションジョブの実行の前に、変更を実施できるように、システムユーザにアラートされる。ここで、シミュレーションジョブは、しばしば、一連のそのようなジョブのうちの１つであることに留意されたい。
【００３５】
任意的に、
各性能統計量は、前記シミュレーションジョブの実行の側面の性能の尺度を示す性能変数の値であり、
前記アラートジェネレータは、
指定された前記シミュレーションジョブに類似すると判定された前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、前記第１の実行済みシミュレーションジョブとして識別することにより、複数の候補アラートを識別し、
記憶されている前記特性が、類似すると判定された前記実行済みシミュレーションジョブについての記憶されている前記特性と同じである実行済みシミュレーションジョブが存在するかどうかを判定し、
存在する場合、前記実行済みシミュレーションジョブのうち、同じ記憶されている特性を有するとともに、各性能変数についての性能の最良の尺度を示す値を有する実行済みシミュレーションジョブを、前記第２の実行済みシミュレーションジョブとして確認し、
予め規定されたマッピングを使用して、前記性能変数を、該性能変数に影響を及ぼす１つ以上のリソース設定にマッピングし、
マッピングされた前記１つ以上のリソース設定の値が、確認された前記第２の実行済みシミュレーションジョブと指定された前記シミュレーションジョブとの間で異なる場合、前記性能変数、確認された前記第２の実行済みシミュレーションジョブのマッピングされた前記１つ以上のリソース設定、及びリソース設定における差異を、候補アラートとして記憶する
よう構成され、
前記アラートジェネレータは、さらに、記憶されている前記候補アラートからアラートを選択することにより、前記システムユーザに対するアラートを生成するよう構成される。
【００３６】
各性能統計量は、シミュレーションジョブの実行の側面の性能の尺度を示す性能変数の値である。向上されたという観念が、アラートジェネレータにおいて予め規定されるので、各性能変数について、性能の向上された尺度が、相対的に大きい又は相対的に小さい値により示されるかが、予め規定される。性能の尺度に対する値のマッピングがより複雑である性能変数が存在し、値により示される性能の尺度を確立するためのマッピング又は式が、アラートジェネレータにより予め規定され記憶されることがあり得る。
【００３７】
さらに、前記アラートジェネレータは、前記第１の実行済みシミュレーションジョブと確認された前記第２の実行済みシミュレーションジョブとの間の、前記性能変数についての性能の尺度における差異を、性能向上量として定量化し、性能向上量の順に、前記候補アラートをランク付けし、上位ｎ個のランク付けされた前記候補アラートの各候補アラートを前記システムユーザに通知することにより、アラートを生成するよう構成されてもよい。
【００３８】
有利なことに、そのような実施形態は、多くの候補アラートが存在するときに、アラートを優先順位付けするための機構を提供する。実行されたシミュレーションの数が増大するにつれて、指定されたシミュレーションジョブとの比較のために性能統計量メモリにおいて性能統計量及びリソース設定が利用可能である異なるシミュレーションの数も増大する。したがって、候補アラートの数も増大し得る。性能に対してより大きな影響を及ぼす可能性がより高い潜在的なリソース設定を、システムユーザに提供することは重要であり、したがって、上述したランク付けシステムが実装される。
【００３９】
いくつかの実施形態において、
前記アラートジェネレータは、指定された前記シミュレーションジョブと、指定された前記シミュレーションジョブに類似すると判定された前記１つ以上の実行済みシミュレーションジョブの各実行済みシミュレーションジョブと、の間の類似性のレベルを、当該実行済みシミュレーションジョブの値が、予め規定されたマージン内で、指定された前記シミュレーションジョブについての値と合致したジョブ特性パラメータ及び／又はユーザ定義リソース設定の数に基づいて、定量化するよう構成され、
前記アラートジェネレータは、さらに、指定された前記シミュレーションジョブと、リソース設定及び性能向上量が記憶されている前記実行済みシミュレーションジョブと、の間の定量化された前記類似性のレベルに基づいて、候補アラートに重み付けを付与し、付与された前記重み付けにより重み付けされた性能向上量の順に、前記候補アラートをランク付けし、上位ｎ個のランク付けされた前記候補アラートの各候補アラートを前記システムユーザに通知することにより、アラートを生成するよう構成される。
【００４０】
ランク付けのさらなる発展形として、類似性を効果的に適量化する能力は、指定されたシミュレーションと、相対的に向上されている性能統計量が性能統計量メモリに記録されている実行済みシミュレーションと、の間の相関性の尺度を提供する。この相関性の尺度は、性能向上を加減し、したがって、指定されたシミュレーションジョブに対する適用可能性又は妥当性、及び性能向上の潜在的な程度が、ランク付けプロセスにおいて考慮される。
【００４１】
任意的に、前記アラートジェネレータは、生成された前記アラートを前記ジョブスケジューラに送信するよう構成され、前記ジョブスケジューラは、前記アラートにおいて識別された異なるユーザ定義リソース設定を、前記システムユーザにより送信される次のシミュレーションジョブについてのデフォルトとして設定するよう構成される。
【００４２】
各ユーザ定義リソース設定は、変数の設定値である。例えば、変数は、プロセス間通信のためにどの通信ライブラリを使用するかであり得、値は、複数のそのようなライブラリからの１つのライブラリの選択である。変数は、どれだけの数のプロセスを使用するかであり得、値は、選択された値である。変数は、どのプロセッサを使用するかであり得、値は、選択された１つのプロセッサ又は複数のプロセッサを識別する。変数は、Ｉ／Ｏ操作のためにどのファイルシステムを使用するかであり得、値は、複数の利用可能なファイルシステムからの選択された１つのファイルシステムを識別する。
【００４３】
デフォルト設定を許可するか否かと、システムがデフォルトを設定することを許可する設定と、デフォルトが、ユーザにより以前に定義されたリソース設定に取って代わることが許可されるか否かと、を決定するためのシステムユーザ設定可能なオプションが存在してもよい。シミュレーションジョブが、しばしば、一連のシミュレーションジョブのうちの１つとして生じることを考慮して、デフォルトとして差異を自動的に実現するシステムは、システムユーザによる次の実行についての性能向上を実現するための機構を提供する。
【００４４】
性能統計量及びユーザ定義リソース設定が性能統計量メモリに記憶されている実行済みシミュレーションジョブは、システムにより実行されたシミュレーションジョブであることがある。
【００４５】
任意的に、前記性能統計量メモリは、指定された前記シミュレーションジョブが完了すると、指定された前記シミュレーションジョブについて実行済みシミュレーションジョブとして、指定された前記シミュレーションジョブの特性、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定、及び、指定された前記シミュレーションジョブの実行を表す、前記性能モニタにより生成された前記性能統計量を記憶するよう構成される。
【００４６】
有利なことに、指定されたシミュレーションジョブは、性能統計量が性能統計量メモリに記憶されることに拡張され、したがって、将来のシミュレーションジョブについてアラートを生成するシステムの能力を向上させる。
【００４７】
さらに、指定された前記シミュレーションジョブの前記特性が、前記性能統計量メモリ内の実行済みシミュレーションジョブの特性と同じであり、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定と、該実行済みシミュレーションジョブについてのユーザ定義リソース設定と、が同じであると、前記システムが判定した場合、前記システムは、前記性能統計量を集約して各性能変数について平均値を生成し、前記アラートジェネレータによる他の実行済みシミュレーションジョブとの比較のための性能統計量として、前記平均値を記憶する。
【００４８】
システムに付与される機能は、複数のコンポーネントのうちのいずれかにより実行され得る。一例として、性能統計量メモリは、上記機能を実行するためのコントローラ機能を有する。代替として、上記機能は、性能モニタにより実行されてもよい。
【００４９】
さらに、指定された前記シミュレーションジョブの前記特性が、前記性能統計量メモリ内の実行済みシミュレーションジョブの特性と同じであり、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定と、該実行済みシミュレーションジョブについてのユーザ定義リソース設定と、が異なると、前記システムが判定した場合、前記システムは、指定された前記シミュレーションジョブの前記性能統計量と、該実行済みシミュレーションジョブの性能統計量と、をリンクする。
【００５０】
新たな実行が、過去の実行済みジョブと同じジョブ特性を有するが、異なるユーザ定義リソース設定を有する（例えば、ジョブが、異なる数のプロセスを使用する又は異なるファイルシステムへのＩ／Ｏを実行する）場合、新たな性能統計量及びジョブ情報が、過去の実行済みジョブについての性能統計量及びジョブ情報にリンクされるが、これらは、異なる設定を使用して生成されたので、性能統計量は集約されない。これらのリンクを作成することにより、ジョブ依頼設定を変更することによりアプリケーション性能にどのように影響を及ぼすかの像を描くことが可能である。これが、図１１に示されており、図１１において、ある範囲の異なるプロセス数で実行された同じシミュレーション問題についての性能情報が組み合わされている。
【図面の簡単な説明】
【００５１】
実施形態の詳細な説明が、添付の図面を参照して以下で提供される。
【図１】シミュレーションジョブの視覚的表現を示す図。
【図２】複数のプロセスの間で分割されたシミュレーションジョブの視覚的表現を示す図。
【図３】異なる数のプロセスを使用して実行されたシミュレーションジョブについての実行タイミング図。
【図４】一実施形態の概略図。
【図５】一実施形態のハードウェア構成を示す図。
【図６】一実施形態における情報のフローを示す図。
【図７】一実施形態におけるフィードバックループを示す図。
【図８】一実施形態における動作のフローを示すフローチャート。
【図９】例示的なジョブ情報を示す図。
【図１０Ａ】例示的な性能統計量の視覚的表現を示す図。
【図１０Ｂ】例示的な性能統計量の視覚的表現を示す図。
【図１１】同じ特性を有するシミュレーションジョブの異なる実行についての性能統計量を示す図。
【図１２】性能統計量が性能統計量メモリに記憶されている複数の実行済みシミュレーションジョブを示す図。
【図１３】性能向上マトリックスを蓄積する際の情報のフローを示す図。
【図１４】性能向上量を決定するステップに対する入力及び出力を示す図。
【図１５】一実施形態を実現する具体例の高レベル性能統計量を示す図。
【図１６】具体例における記憶されるジョブ情報を示す図。
【図１７】具体例における記憶される性能統計量を示す図。
【図１８】具体例における実行済みシミュレーションジョブの記憶されるジョブ情報を示す図。
【図１９】具体例におけるジョブ類似性ベクトルを示す図。
【図２０】具体例における性能向上量を決定することを示す図。
【図２１】具体例における候補アラートを示す図。
【図２２】具体例におけるテキスト形式のアラートを示す図。
【図２３】具体例におけるグラフィカル出力を示す図。
【図２４】具体例におけるグラフィカルユーザインタフェース内のアラートを示す図。
【発明を実施するための形態】
【００５２】
図４のシステムは、コンピューティングハードウェアリソース２０と、それらコンピューティングハードウェアリソースのためのコントローラ１０又は管理システムと、のシステムである。コンピューティングハードウェアリソース２０は、シミュレーションジョブを実行するよう適合され、ＨＰＣ（高性能コンピューティング）リソースであり得る。コンピューティングハードウェアリソース２０は、揮発性（非永続的）及び不揮発性（永続的／ストレージ）の両方のメモリ、プロセッサ、及びデータＩ／Ｏ装置ハードウェアコンポーネントを含む。コンピューティングハードウェアリソース２０は、相互接続され、シミュレーションを実行するためのシミュレーティングアプリケーションを含むソフトウェアにアクセスすることができる。コンピューティングハードウェアリソース２０は、ジョブスケジューラ１２の命令の下で動作し、ジョブスケジューラ１２は、どのリソースがどのシミュレーションジョブをいつ実行するかを決定する。コンピューティングハードウェアリソースは、例えば、例えばインフラストラクチャアズアサービスといったクラウドコンピューティングインフラストラクチャであり得る。
【００５３】
ジョブスケジューラ１２は、システムユーザからジョブリクエストを受信する。アラートジェネレータ１８は、システムユーザにアラートを出力する。特に、ジョブスケジューラ１２及び性能モニタ１４は、コンピューティングハードウェアリソース２０と直接インタラクトするが、アラートジェネレータ１８又は性能統計量メモリ１６とコンピューティングハードウェアリソース２０との間の直接インタラクションも生じることがある。
【００５４】
シミュレーションジョブは、システムユーザによりジョブスケジューラ１２に送信されたコマンドのセットであるジョブリクエストにより指定され（すなわち、リクエストされ）、ジョブスケジューラ１２は、ＨＰＣワークロードマネージャ又はバッチスケジューラでもあってよい。シミュレーションジョブは、前処理、メインシミュレーションの実行、及び後処理等の、ワークフローの異なる段階を実行する１つ以上のアプリケーションからなり得る。
【００５５】
シミュレーションジョブは、コンピューティングハードウェアリソースにより実行されシミュレーティングアプリケーション入力に従ってシミュレーションモデルを実行するシミュレーティングアプリケーションを含む。シミュレーティングアプリケーション入力は、例えば、シミュレーションのどれだけの回数の反復が実行されるかと、構成の特定の側面の詳細レベルと、ドメイン固有のオプションと、を決定することができる。シミュレーティングアプリケーション入力は、アプリケーションの内部にあり、どのように動作するかをシミュレーティングアプリケーションに命令する。シミュレーティングアプリケーション入力は、ユーザ定義リソース設定とは別個のものであり、ユーザ定義リソース設定は、ジョブスケジューラ１２が、シミュレーションジョブを実行するようにコンピューティングハードウェアリソース２０をスケジューリングする（すなわち、コンピューティングハードウェアリソース２０に命令する）際の、コンピューティングハードウェアリソースの選択及び使用を決定する。ジョブリクエストは、シミュレーションジョブを指定し、その仕様は、少なくとも、シミュレーティングアプリケーション、シミュレーションモデル（このシミュレーションモデルが、シミュレーティングアプリケーションにおけるデフォルトである場合を除く）、及びユーザ定義リソース設定（例えば、プロセスの数、１つのプロセス当たりのスレッドの数、プロセス間通信ライブラリ、Ｉ／Ｏ操作のためのファイルシステム）を列挙する。ジョブリクエストは、どのように動作するかをシミュレーティングアプリケーションに命令するためのシミュレーティングアプリケーション入力を指定することもできる。
【００５６】
プロセスは、コンピュータプログラム又はアプリケーションの実行である。これは、プログラムコード、関連付けられたヒープメモリ及びスタックメモリ、並びにコンピュータプログラムのインスタンスについての実行状態を含む。コンピューティングハードウェアリソース２０のシステム上での並列実行の１つの方法は、異なるデータ片に対して類似する命令を実行する（すなわち、同じモデルを実行する）複数のプロセスを実行することによるものである。プロセス間の連携は、ＭＰＩ（メッセージパッシングインタフェース）等のプロセス間通信ライブラリを使用することにより達成される。
【００５７】
プロセスは、システム上での並列処理の別のソースであるスレッドと呼ばれる複数の独立した「ストランド」を含み得る。スレッドは、１つのプロセスの一部であるので、したがって、これらのスレッドは、プロセスのヒープデータを共用して、同じデータに対する協調を可能にする。スレッドはまた、スレッド自身のスタックを用いて、必要とされるときに独立した実行を可能にするプライベートデータを有することができる。
【００５８】
ジョブスケジューラ１２は、システムユーザから、（ジョブスクリプトであってもよいしジョブスクリプトを含んでもよい）ジョブリクエストを受信するよう構成されている。例えば、ジョブスケジューラ１２が、ジョブリクエストの形成のためにシステムユーザによりアクセス可能なインタフェースを提供すること、又は、システムユーザが、アドレスにジョブリクエストを送信し又は特定の物理アドレスにおいてジョブリクエストを記憶させ、そのようにして、ジョブが、ジョブスケジューラ１２により受信されること、があり得る。ジョブスケジューラ１２は、ジョブリクエストをパーシングして関連情報を抽出する。
【００５９】
ジョブスケジューラ１２の正確な機能は、実装に固有である。ジョブスケジューラ１２は、シミュレーションジョブのキューを保持し、ジョブリクエストに基づいて、各シミュレーションジョブのために必要とされるコンピューティングハードウェアリソース２０を決定すると、ジョブスケジューラ１２は、必要とされるコンピューティングハードウェアリソース２０が利用可能になったときに、キューからのジョブを実行するようにコンピューティングハードウェアリソース２０に命令する。例えば、キューが、先入れ先出しに基づいて動作されること、又は、優先順位付けの何らかの他のシステムが動作すること、があり得る。
【００６０】
性能モニタ１４は、コンピューティングハードウェアリソース２０による、指定されたシミュレーションジョブの実行をモニタリングし、モニタリングされている実行を表す性能統計量を生成するよう構成されている。例えば、性能モニタ１４は、通信時間、計算時間、及びＩ／Ｏ時間等の、ジョブ内の異なる段階の実行の時間を測定することができる。性能モニタ１４は、プロファイリングツール及びトレーシングツールを使用して、性能統計量を収集することができる。
【００６１】
プロファイリングツールは、シミュレーションジョブの実行中の性能の要約統計量（性能統計量）を収集することにより、アプリケーション性能解析を実行する。生成される性能統計量は、次のうちの１つ以上を含み得る：ルーチンにおける時間、ルーチンの数、プロセス間通信の呼び出し（invocations）、及び、アプリケーションにおいて呼び出された関数の呼び出しツリー。
【００６２】
トレーシングツールは、実行イベントがいつ及びどこで発生したかの時系列の配列（chronology）を記録することにより、アプリケーション性能解析を実行する。生成される性能統計量は、関数又はループにいつ入ったか及び関数又はループからいつ出たかや、通信メッセージがいつ送信又は受信されたか、を含み得る。
【００６３】
アラートジェネレータ１８及びジョブスケジューラ１２の両方が、ワークロードマネージャ装置又はシステムコントローラ、すなわち、システムのコンピューティングハードウェアリソース２０に対する制御機能又は管理機能を実行するコンピューティングデバイス、により実行され得る機能である。コンピューティングデバイスは、プロセッサ、メモリ、ネットワーク接続性、入力機構（マウス、キーボードを介する直接的なもの、及び／又は、ネットワーク若しくはインターネット接続を介するもの）、出力機構（ディスプレイを介する直接的なもの、及び／又は、ネットワーク若しくはインターネット接続を介するもの）を有することができる。
【００６４】
アラートジェネレータ１８は、指定されたシミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定するよう構成されている。実行済みシミュレーションジョブは、過去に実行が生じたシミュレーションジョブであるので、過去の実行済みシミュレーションジョブと呼ばれることもある。性能統計量メモリ１６は、複数の実行済みシミュレーションジョブの各々について、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び、当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶する。
【００６５】
類似性の判定は、単にユーザ定義リソース設定に基づいてもよいし、ユーザ定義リソース設定が合致した場合にのみ又は類似するとみなされる場合にのみ、シミュレーションジョブの特性にも基づいて、２つのシミュレーションジョブが類似すると判定されることに制約されてもよい。ユーザ定義リソース設定は、複数の個々の設定の各個々の設定の値を含み得、したがって、類似性は、指定されたシミュレーションジョブと実行済みシミュレーションジョブとの各個別の設定のそれぞれの値を比較することにより、判定される。
【００６６】
特性は、指定されたシミュレーションジョブ及び過去の実行済みシミュレーションジョブを表すために使用される。特性は、類似性判定の基礎を形成する。例えば、実行済みシミュレーションジョブの記憶される特性は、シミュレーティングアプリケーションを表す複数のパラメータの各パラメータの値、シミュレーションモデル、及びシミュレーティングアプリケーション入力を含む。複数のパラメータは、シミュレーティングアプリケーションを識別する値と、任意的に、ビルド番号、使用されたシミュレーションモデルを識別する値、及び特定のシミュレーティングアプリケーション入力をそれぞれ表す１つ以上の値と、を含み得る。アラートジェネレータ１８は、比較したがって類似性判定の基礎を形成するために、指定されたシミュレーションジョブ、すなわち、モニタリングされているシミュレーションジョブの比較可能な特性を取得するよう構成されている。アラートジェネレータ１８は、性能統計量メモリ１６に特性が記憶されている複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブの特性を、取得された特性評価と値ごとに比較することにより、指定されたシミュレーションジョブに類似する１つ以上のシミュレーションジョブを見つけることができる。実行済みシミュレーションジョブについての予め規定された数又は割合の値が、同じジョブ特性パラメータについて、予め規定されたマージン内で、指定されたシミュレーションジョブについての値と合致した場合、アラートジェネレータ１８は、その実行済みシミュレーションジョブが、指定されたシミュレーションジョブに類似すると判定する。予め規定されたマージンは、パラメータごとに異なり得る。
【００６７】
アラートジェネレータ１８は、（そのパラメータについての予め規定されたマージン内で）合致した値の数（ユーザ定義ソース設定値のみ、又は、ユーザ定義リソース設定値及び特性値の両方）に基づき、任意的に、合致の近さ（closeness）にも基づいて、２つのジョブ間の類似性を定量化することができる。類似性量は、第１に、類似性閾値との比較のために使用され得、ここで、類似性閾値を超える類似性量は、類似性の判定を生じさせ、任意的に第２に、システムユーザにどの情報を出力するかを決定するために、候補アラートをランク付けする際に使用され得る。
【００６８】
アラートジェネレータ１８はまた、第１の実行済みシミュレーションジョブであって、記憶されている特性が、第２の実行済みシミュレーションジョブの記憶されている特性と同じであり、ユーザ定義リソース設定が第１の実行済みシミュレーションジョブと第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、第１の実行済みシミュレーションジョブと第２の実行済みシミュレーションジョブとのうちの他方に対して、第１の実行済みシミュレーションジョブと第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定するよう構成されている。比較される特定の性能統計量は、実装に依存する。なぜならば、性能統計量は、シミュレーションの異なる側面の点で且つ可変の詳細レベルで収集され得るからである。システムは、この点において設定可能であり得る。
【００６９】
各性能統計量は、シミュレーションジョブの実行の側面の性能の尺度を示す性能変数の値である。向上されたという観念が、アラートジェネレータ１８において予め規定されるので、各性能変数について、性能の向上された尺度が、相対的に大きい又は相対的に小さい値により示されるかが、予め規定される。性能の尺度に対する値のマッピングがより複雑である性能変数が存在し、値により示される性能の尺度を確立するためのマッピング又は式が、アラートジェネレータ１８により予め規定され記憶されることがあり得る。
【００７０】
アラートジェネレータ１８はまた、第１の実行済みシミュレーションジョブのリソース設定と第２の実行済みシミュレーションジョブのリソース設定との間の差異を識別するよう構成されている。アラートジェネレータ１８は、指定されたシミュレーションジョブのリソース設定を、向上されている性能統計量を有すると判定された実行済みシミュレーションジョブの記憶されているリソース設定と比較するよう構成されている。向上されている性能統計量の性能変数を、性能変数に影響を及ぼす１つ以上のリソース設定に関連付けるマッピングが記憶されることがあり得る。リソース設定における差異を識別することは、向上されている性能統計量の性能変数にマッピングされているリソース設定を、リソース設定の２つのセットにおいて比較し、１つが存在するときに差異を認識することを含む。
【００７１】
アラートジェネレータ１８は、向上されている（すなわち、相対的により良い）性能統計量を有するとして識別された第１の実行済みシミュレーションジョブ又は第２の実行済みシミュレーションジョブの１つ以上のユーザ定義リソース設定を示す、システムユーザに対するアラートを生成するよう構成されている。アラートは、ユーザ端末のディスプレイ上の、情報を詳細に示すフレームであり得る。代替的に、アラートは、ノイズ又は何らかの他の形態の出力を含んでもよい。アラートは、何らかの他の方法でシステムユーザに送信される電子メール又はメッセージであってもよい。アラートは、リソース設定における確認された差異を示す。差異のインジケーションは、単に、実行済みシミュレーションジョブの該当する（すなわち、異なるとして確認された）ユーザ定義ランタイム設定を、システムユーザに通知することであり得る。さらに、指定されたシミュレーションジョブの該当するユーザ定義ランタイム設定が、アラートに含められてもよい。さらに、性能変数に応じた、パーセンテージとして表現され得る、第１の実行済みシミュレーションジョブと第２の実行済みシミュレーションジョブとの間の性能の尺度における向上が、アラートにおいて示され得る。
【００７２】
図５は、本発明を具現化し又は本発明の一実施形態に含まれ、一実施形態の方法を実施するために使用され得る、システムコントローラ、ＨＰＣワークロードマネージャ、又はコンピューティングハードウェアリソースマネージャ等のコンピューティングデバイスのブロック図である。コンピューティングデバイスは、プロセッサ９９３及びメモリ９９４を有する。任意的に、コンピューティングデバイスは、例えば、本発明の実施形態の他のコンピューティングデバイスといった他のコンピューティングデバイスと通信するためのネットワークインタフェース９９７も含む。
【００７３】
例えば、一実施形態は、協調して動作するそのようなコンピューティングデバイス群のネットワークを含み得る。任意的に、コンピューティングデバイスは、キーボード及びマウス等の１つ以上の入力機構９９６及び１つ以上のモニタ等のディスプレイユニット９９５も含む。これらのコンポーネントは、バス９９２を介して互いに接続可能である。
【００７４】
メモリ９９４は、コンピュータ読み取り可能な媒体を含み得る。コンピュータ読み取り可能な媒体という用語は、コンピュータ実行可能な命令を運ぶ又はデータ構造を記憶するよう構成された１つの媒体又は複数の媒体（例えば、集中データベース若しくは分散データベース並びに／又は関連するキャッシュ及びサーバ）を指し得る。コンピュータ実行可能な命令は、例えば、汎用コンピュータ、特殊目的コンピュータ、又は特殊目的処理デバイス（例えば、１つ以上のプロセッサ）によりアクセス可能であり、これらに１つ以上の機能又は動作を実行させる命令及びデータを含み得る。したがって、「コンピュータ読み取り可能な記憶媒体」という用語も、マシンにより実行され、マシンに本開示の方法のうちの任意の１つ以上を実行させる命令のセットを記憶する、符号化する、又は運ぶことができる任意の媒体を含み得る。したがって、「コンピュータ読み取り可能な記憶媒体」という用語は、ソリッドステートメモリ、光媒体、及び磁気媒体を含むが、これらに限定されるものではないと解釈され得る。限定ではなく例として、そのようなコンピュータ読み取り可能な媒体は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラム可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）又は他の光ディスクストレージ、磁気ディスクストレージ又は他の磁気記憶デバイス、フラッシュメモリデバイス（例えば、ソリッドステートメモリデバイス）を含む非一時的なコンピュータ読み取り可能な記憶媒体を含み得る。
【００７５】
プロセッサ９９３は、コンピューティングデバイスを制御し、例えば、本明細書及び請求項に記載のジョブスケジューラ、性能モニタ、性能統計量メモリ、アラートジェネレータ、及び他のコンポーネントの様々な異なる機能を実装するようにメモリに記憶されたコードを実行する等の処理動作を実行するよう構成される。メモリ９９４は、プロセッサ９９３により読み書きされているデータを記憶する。本明細書で言及されているように、プロセッサは、マイクロプロセッサ、中央処理装置等といった１つ以上の汎用処理デバイスを含み得る。プロセッサは、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、又は、他の命令セットを実装しているプロセッサ若しくは命令セットの組合せを実装しているプロセッサを含み得る。プロセッサはまた、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ等といった１つ以上の特殊目的処理デバイスを含み得る。１つ以上の実施形態において、プロセッサは、本明細書に記載の動作及びステップを実行するための命令を実行するよう構成される。
【００７６】
ディスプレイユニット９９５は、コンピューティングデバイスにより記憶されたデータの表現を表示することができ、ユーザとコンピューティングデバイスに記憶されているプログラム及びデータとの間のインタラクションを可能にするカーソル及びダイアログボックス並びにスクリーンも表示することができる。入力機構９９６は、ユーザが、コンピューティングデバイスにデータ及び命令を入力することを可能にし得る。
【００７７】
ネットワークインタフェース（ネットワークＩ／Ｆ）９９７は、インターネット等のネットワークに接続され得るものであり、ネットワークを介して他のそのようなコンピューティングデバイスに接続可能である。ネットワークＩ／Ｆ９９７は、ネットワークを介した他の装置から／へのデータ入力／出力を制御することができる。マイクロフォン、スピーカ、プリンタ、電力供給ユニット、ファン、ケース、スキャナ、トラッカボール等といった他の周辺デバイスも、コンピューティングデバイスに含められ得る。
【００７８】
図４のジョブスケジューラ１２は、メモリ９９４に記憶されている処理命令（プログラム）を実行し、ネットワークＩ／Ｆ９９７を介してシステムユーザ（すなわち、ユーザ端末）とデータを交換する（すなわち、ジョブリクエストを受信する）プロセッサ９９３（又は複数のプロセッサ）であり得る。詳細には、プロセッサ９９３は、例えば、インターネット又は何らかの他のネットワーク接続を介してシステムに接続されたユーザ端末におけるシステムユーザから、ネットワークＩ／Ｆを介して、ジョブリクエストを受信し、受信されたジョブリクエストを、コンピューティングハードウェアリソース用の命令に変換するための処理命令を実行する。さらに、プロセッサ９９３は、接続された記憶ユニットに、ジョブリクエスト又はジョブリクエストから抽出された情報を記憶し、且つ／又は、受信されたジョブリクエストによりリクエストされたシミュレーションジョブを実行するように、ネットワークＩ／Ｆ９９７を介して命令をコンピューティングハードウェアリソース２０に送信するための処理命令を実行することができる。
【００７９】
図４の性能モニタ１４は、メモリ９９４に記憶されている処理命令（プログラム）を実行し、ネットワークＩ／Ｆ９９７を介してデータを交換するプロセッサ９９３（又は複数のプロセッサ）であり得る。詳細には、プロセッサ９９３は、コンピューティングハードウェアリソースから、ネットワークＩ／Ｆを介して、シミュレーションジョブの実行を表す情報を受信し、受信された情報から性能統計量を生成するための処理命令を実行する。プロセッサ９９３は、ネットワークＩ／Ｆを介して、コンピューティングハードウェアリソースを直接モニタリングすることができる。さらに、プロセッサ９９３は、接続された記憶ユニットに、性能統計量を記憶し、且つ／又は、記憶のために、生成された性能統計量を性能統計量メモリ１６に送信し、類似する実行済みシミュレーションジョブの性能統計量との比較のために、生成された性能統計量をアラートジェネレータ１８に送信するための処理命令を実行することができる。
【００８０】
図４の性能統計量メモリ１６は、データを記憶し、ネットワークＩ／Ｆ９９７を介してデータを交換するメモリ９９４であり得る。詳細には、メモリ９９４は、記憶のために、性能モニタ１４から、性能統計量を受信し、記憶のために、ジョブスケジューラ１２から、指定されたシミュレーションジョブの特性を受信し、記憶のために、ジョブスケジューラ１２から、指定されたシミュレーションジョブについてのユーザ定義リソース設定を受信する。性能統計量メモリ１６はまた、指定されたシミュレーションジョブに類似するシミュレーションジョブに関する情報について、アラートジェネレータ１８から、クエリを受信し、指定されたシミュレーションジョブに類似するシミュレーションジョブについて、性能統計量、シミュレーションジョブの特性、及びユーザ定義リソース設定をもってクエリに応答するよう構成されているプロセッサ９９３を含み得る。さらに、プロセッサ９９３は、処理のために、クエリ結果をアラートジェネレータ１８に送信するための処理命令を実行することができる。
【００８１】
図４のアラートジェネレータ１８は、メモリ９９４に記憶されている処理命令（プログラム）を実行し、ネットワークＩ／Ｆ９９７を介してデータを交換するプロセッサ９９３（又は複数のプロセッサ）であり得る。詳細には、プロセッサ９９３は、ジョブスケジューラ１２から、指定されたシミュレーションジョブに関する情報を受信し、この情報を使用して、指定されたシミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定するための処理命令を実行する。プロセッサ９９３はまた、互いとの比較のために、類似すると判定された実行済みシミュレーションジョブと、類似すると判定された実行済みシミュレーションジョブと合致したジョブ特性を有する実行済みシミュレーションジョブと、に関する性能統計量及びユーザ定義リソース設定を受信し、判定された１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている特性が、第２の実行済みシミュレーションジョブの記憶されている特性と同じであり、ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が第１の実行済みシミュレーションジョブと第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、第１の実行済みシミュレーションジョブと第２の実行済みシミュレーションジョブとのうちの他方に対して、第１の実行済みシミュレーションジョブと第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定するための処理命令を実行する。プロセッサ９９３はまた、ユーザ定義リソース設定における確認された差異を示す、システムユーザに対するアラートを生成するための処理命令を実行する。さらに、プロセッサ９９３は、ネットワークＩ／Ｆ９９７を介して、生成されたアラートをシステムユーザに送信するための処理命令を実行することができる。
【００８２】
本発明を具現化する方法は、図５に示されるコンピューティングデバイス等のコンピューティングデバイス上で実行され得る。そのようなコンピューティングデバイスは、図５に示される全てのコンポーネントを有する必要はなく、これらのコンポーネントのサブセットから構成されてもよい。本発明を具現化する方法は、ネットワークを介して１つ以上のデータ記憶サーバと通信する単一のコンピューティングデバイスにより実行され得る。コンピューティングデバイスは、生成されたアラート及び／又は性能統計量を記憶するデータストレージ自体であってもよい。
【００８３】
本発明を具現化する方法は、互いと協調して動作する複数のコンピューティングデバイスにより実行されてもよい。複数のコンピューティングデバイスのうちの１つ以上は、生成されたアラートの少なくとも一部を記憶するデータ記憶サーバであってもよい。
【００８４】
図６は、一実施形態における情報のフローを示している。ユーザは、シミュレーションジョブをジョブスケジューラ１２に送信する。シミュレーションジョブは、ジョブ依頼スクリプトにより指定され、シミュレーティングアプリケーション上で動作するシミュレーション入力ファイルを含む。ジョブスケジューラは、シミュレーションジョブを実行するようにＨＰＣリソース（コンピューティングハードウェアリソースの例）に命令する。この実行、すなわち、ＨＰＣリソースによるシミュレーティングアプリケーションの実行が、性能モニタによりモニタリングされ、性能モニタは、ＨＰＣリソースからアプリケーション性能データを取得する。このアプリケーション性能データは、性能統計量の例であり、（指定されたシミュレーションジョブの特性及びユーザ定義リソース設定を含む）ジョブ情報、及び、任意的に、システムメッセージ又はログファイル等の任意の他の関連情報とともに、性能統計量メモリ１６に記憶される。これは、ジョブについての性能の全体像（holistic  picture）をもたらす。
【００８５】
次いで、ジョブの性能が、アラートジェネレータ１８により解析され、他の類似するジョブの性能と比較されて、例えば、類似するシミュレーションジョブがユーザによりリクエストされる次のときに性能を向上させ得るユーザ定義リソース設定における変化が識別される。類似するジョブが見つけられると、同じように特性評価されたが異なるユーザ定義リソース設定を有する実行済みシミュレーションジョブを見つけて、ユーザ定義リソース設定を変更することにより性能のより良い尺度を達成できることを、同じように特性評価されたジョブについての性能統計量が示すかどうかを確認するために、類似するジョブがチェックされる。これは、ユーザ定義リソース設定を変更することにより性能のより良い尺度を得ることができるという、ユーザに対するアラートになる。
【００８６】
図７は、一実施形態のフィードバックループを示している。ユーザリクエストは、ジョブリクエストをジョブスケジューラ１２に送信する。ジョブスケジューラ１２は、ジョブモニタリング及びスケジューリングエンジンであり得る。ジョブスケジューラ１２は、実行のために、ジョブリクエストにより指定されたシミュレーションジョブをＨＰＣリソース２０に送信する。性能モニタリングエンジン１４であり得る性能モニタ１４は、実行に関するデータを収集し、性能統計量を生成する。アラートジェネレータ１８の機能は、性能類似性検索エンジン１８１と、レコメンデーション順序付け及びユーザフィードバックエンジン１８２と、に分割される。性能類似性検索エンジン１８１は、指定されたシミュレーションジョブに類似するジョブに関する性能統計量及び他のジョブ情報と、類似すると判定された実行済みシミュレーションジョブと合致したジョブ特性を有する実行済みシミュレーションジョブと、について、性能統計量メモリ１６にクエリする。レコメンデーション順序付け及びユーザフィードバックエンジン１８２は、性能統計量及び他のジョブ情報を解析し、アラート（レコメンデーション）を生成し、アラート（レコメンデーション）をユーザに出力する。次いで、ユーザは、指定されたシミュレーションジョブの実行中に又は今度の類似するシミュレーションジョブにおいて、変更されたユーザ定義リソース設定を実施することができる。
【００８７】
各段階における機能が、以下でより詳細に説明される。
【００８８】
図８は、一実施形態における動作のフローを示すフローチャートである。
【００８９】
ステップＳ１０１〜ステップＳ１０５は、ジョブスケジューラ１２の機能の例である。
【００９０】
ステップＳ１０１において、シミュレーションジョブリクエストが、システムユーザから、ジョブスケジューラ１２により受信される。ユーザが、ＨＰＣリソース上でアプリケーションを実行するためのシミュレーションジョブリクエストを送信すると、ステップＳ１０２において、ジョブ依頼スクリプトと入力及びデータファイルとが、パーシング及び解析される。ステップＳ１０３において、シミュレーションジョブを特性評価しユーザにより送信されたユーザ定義リソース設定を記録するための関連情報が、アプリケーション性能データ記憶部１６（性能統計量メモリ１６とも呼ばれる）に記憶される。このようにして、シグネチャが、各ジョブについて作成され得る。この情報及びシグネチャを有することにより、同じように特性評価されたシミュレーションジョブについて、ジョブを識別してリンクすることが可能である。
【００９１】
図９は、シミュレーションジョブの特性を識別するために各ジョブリクエストから記憶される情報のタイプを示している。これは、シミュレーションジョブの特性を含み、これは、例えば、シミュレーションについての入力及びデータファイルのコピーと、シミュレーションを実行するために使用されるアプリケーションに関する詳細と、を含む。記憶される情報はまた、ユーザ定義リソース設定（ジョブ依頼設定と呼ばれることもある）を含み、これは、例えば、使用されるプロセス及びスレッドの数、Ｉ／Ｏ操作のために使用されるファイルシステム、及び他のジョブ設定を含む。
【００９２】
ステップＳ１０４において、シミュレーションジョブが、（ＨＰＣワークロードバッチスケジューラであり得る、）スケジューリングのためにキューされ、ステップＳ１０５において、必要とされるハードウェアリソースが利用可能になったときに、シミュレーションジョブが、平常の通りに実行される。
【００９３】
ステップＳ１０６〜ステップＳ１０８は、性能モニタ１４の機能の例である。
【００９４】
各シミュレーションジョブの性能が、モニタリングされ解析される。これは、定期的な性能スナップショットが得られる実行中と、アプリケーション性能の全体像が利用可能であるときであるジョブ実行の終了の際と、の両方で生じ得る。性能に関するこの情報（性能統計量）が、性能統計量に変換され、ステップＳ１０３において記憶された他のジョブ情報に関連付けられて、アプリケーション性能データ記憶部１６に記憶される。
【００９５】
モニタリングされる性能情報の例が、図１０Ａ及び図１０Ｂに示されている。これは、計算、通信、及びＩ／Ｏ操作に費やされた時間等の、高レベルでのアプリケーション性能詳細を含み、以下のようなより深い情報も含み得る：
−ＣＰＵ、キャッシュ、及びメモリの使用率；
−上位の時間（top  time）を費やした通信ルーチン及びメッセージサイズ並びにこれらの通信について達成された転送速度；
−ファイル読み取り及びファイル書き込みアクセスパターン（すなわち、Ｉ／Ｏサイズ、関与したプロセス、及びＩ／Ｏコスト）等のＩ／Ｏ統計量；
−ＣＰＵ速度；メモリ使用可能性及び速度；ネットワークエラーカウンタ及び接続性；並びに、ディスクスペース及び健全性等の、実行時におけるシステムログ情報（これらも性能統計量メモリ１６に記憶され得る）。
【００９６】
性能モニタ１４は、モニタリングされている性能情報を使用して、性能統計量メモリに記憶するための性能統計量を生成するよう構成されている。いくつかの場合において、性能統計量は、単に、性能情報から抽出され、性能統計量メモリ１６に直接的に記憶され得る。他の場合において、性能モニタ１４は、記憶のために、性能情報からの要素を性能統計量に変換するための記憶されている処理命令を実行することができる。例として、ステップＳ１０６において、リソース使用統計量が記憶される。ステップＳ１０７において、性能解析データが記憶される。これらの両方が、性能統計量の例である。
【００９７】
任意的に、性能情報と性能統計量を生成するための処理命令とは、既存の性能解析プロファイリングツール及びトレーシングツールによりもたらされてもよいし。性能モニタ１４は、複数の性能解析ツールからの性能情報を統合し、これらのツールから性能統計量メモリ１６への、性能統計量としての性能情報の転送を調整することができる。
【００９８】
ジョブが、シミュレーションジョブの特性により、性能統計量メモリ１６において識別されるので、ステップＳ１０８において、性能モニタ１４は、同じシミュレーション問題についての実行（すなわち、同じ特性のシミュレーションジョブを有する実行）を見つけ、２つ（以上）のシミュレーションジョブについて性能統計量メモリに記憶されている性能統計量をリンク又は集約する。
【００９９】
メモリに追加される新たな実行が、アプリケーション性能データ記憶部内の過去の実行済みジョブと同じ特性及び同じユーザ定義リソース設定を有する場合、新たな性能統計量が、すでに存在している性能統計量と集約され、したがって、集約された性能統計量は、同じユーザ定義リソース設定を有する同じシミュレーションの実行がどのように実行され得るかのより正確な予測因子になる。
【０１００】
新たな実行が、過去の実行済みジョブと同じジョブ特性を有するが、異なるユーザ定義リソース設定を有する（例えば、ジョブが、異なる数のプロセスを使用する又は異なるファイルシステムへのＩ／Ｏを実行する）場合、新たな性能統計量及びジョブ情報が、過去の実行済みジョブについての性能統計量及びジョブ情報にリンクされるが、これらは、異なる設定を使用して生成されたので、性能統計量は集約されない。これらのリンクを作成することにより、ジョブ依頼設定を変更することによりアプリケーション性能にどのように影響を及ぼすかの像を描くことが可能である。これは、アラートジェネレータが、向上されている性能統計量を見つけるのを助ける。これが、図１１に示されており、図１１において、ある範囲の異なるプロセス数で実行された同じシミュレーション問題についての性能情報が組み合わされている。
【０１０１】
ステップＳ１０９〜ステップＳ１１７は、アラートジェネレータ１８の機能の例である。
【０１０２】
指定されたシミュレーションジョブの性能統計量及びジョブ情報が記憶された後（この方法は、指定されたシミュレーションジョブの実行中又は実行後に実行され得るので、全ての性能統計量が記憶されているわけではないことに留意されたい）、ステップＳ１０９及びステップＳ１１０において、アラートジェネレータ１８は、性能統計量メモリ１６にクエリして、ユーザジョブと類似するユーザ定義リソース設定及び／又はジョブ特性を有する過去の実行済みシミュレーションジョブ（同じシステムユーザからのものであることもあるし別のシステムユーザからのものであることもある）を見つける。アラートジェネレータ１８は、クエリを使用して、性能統計量メモリ１６の内容をフィルタリングし、現在の指定されたシミュレーションジョブに関連するエントリのみを見つける。見つけられたエントリは、現在の指定されたシミュレーションジョブとの類似性のレベルに基づいて、重み付けされ得、ここで、最も近いエントリには、最も高い重みが与えられる。
【０１０３】
図１２は、メモリ１６における、指定されたシミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定するプロセスの例を示している。指定されたシミュレーションジョブのユーザ定義リソース設定及びジョブ特性が、このプロシージャに対する入力として与えられる。次いで、メモリ１６がクエリされて、類似するユーザ定義リソース設定又はジョブ特性を有する過去の実行済みシミュレーションジョブが見つけられ、その合致したジョブのサマリ及び類似性格付けが、出力として返される。
【０１０４】
ステップＳ１１１において、アラートジェネレータ１８が、性能統計量メモリ１６にクエリして、類似すると判定された実行済みジョブの性能統計量と、リンクされている性能統計量（すなわち、異なるユーザ定義リソース設定を使用して実行された同じジョブ特性についてのエントリ）と、を識別することにより、これらの類似するジョブが解析される。性能の向上をもたらすリンクされているエントリに関して、そのエントリについてのジョブ依頼設定が、ユーザのジョブの性能を向上させる方法についてユーザにアラートするための、可能な候補設定のマトリックスに追加される。
【０１０５】
図１３は、リンクされているジョブを識別し、性能向上マトリックスに投入するプロシージャを示している。
【０１０６】
図１２から、ジョブＢ及びジョブＤが、指定されたシミュレーションジョブとの何らかの類似性を有するとして識別されたことが分かる。図１３において、ジョブＢ１〜ジョブＢ３がジョブＢにリンクされていることが分かる。ここで、リンクは、シミュレーションジョブが同じように特性評価されたことを表す。アラートジェネレータ１８は、次いで、ジョブＢ１〜ジョブＢ３と比較されるジョブＢについての性能統計量及びユーザ定義リソース設定を解析し、差異を識別する。向上している性能統計量が識別されたときに、性能統計量に影響を及ぼした可能性がある１つ以上のユーザ定義リソース設定が、その性能統計量にマッピングされるように、マッピングが記憶され得、次いで、アラートジェネレータは、マッピングされたユーザ定義リソース設定を比較して、差異を見出すことができる。同じプロシージャが、ジョブＤと、リンクされているジョブＤ１及びジョブＤ２と、に対して実行される。ステップＳ１１２において、向上されている性能統計量とこれらの性能統計量にマッピングされたユーザ定義リソース設定における差異とが、候補アラートとして、性能向上マトリックスに追加される。
【０１０７】
ステップＳ１１３において、アラートジェネレータは、各候補アラートにより表される、ユーザ定義リソース設定における変更が指定されたシミュレーションジョブについて有する可能性がある性能の向上を定量化する処理を実行する。この決定の入力及び出力が、図１４に示されており、以下の通りである：
入力：
指定されたシミュレーションジョブとデータ記憶部において見つけられた各過去のジョブとの間の定量化された類似性；及び
性能向上マトリックスにおける各候補アラートについての性能向上ファクタ。このファクタは、リンクされているジョブがリンクされた先の（指定されたシミュレーションジョブに類似すると判定された）ジョブの性能における同じ性能変数に対してユーザ定義リソース設定が使用された、リンクされているジョブの該当する性能変数の性能向上である。
出力：
ユーザジョブに適用されたときの各設定により与えられる予測される性能向上。
【０１０８】
単純な例において、性能向上ファクタは重み付けで乗算されることがあり得る。この重み付けは、指定されたシミュレーションジョブと、候補アラートが導出された元となるジョブにリンクされている類似するジョブと、の間の類似性の定量化に比例する。
【０１０９】
別の例において、システムは、これらの入力を使用する計算を実施し、各設定をユーザジョブに適用する予測される性能のベクトルを生成することができる。このようなベクトルを生成するために、存在するデータの量と、このような計算を実行するために利用可能な計算リソースと、結果をユーザに返す際に必要とされる詳細レベル又は時間制約と、の間のトレードオフに基づいて、異なるアルゴリズムが選択され得る。この計算を実行するためのサンプルの式が、以下の式（１）に示される：
【数１】
2018005896.tif 000003
【０１１０】
この式において、Ｐ（Ａ，ｓ）は、設定ｓを使用するジョブＡの予測される性能である。これは、性能向上マトリックスにおける、設定ｓを使用した各過去のジョブの性能Ｐ（ｊ，ｓ）から、ジョブＡとのその類似性ｒ（Ａ，ｊ）を減算したものを合計することにより、計算される。この設定を使用した過去のジョブの数で除算することにより上記合計を平均することが、必要とされる性能を与える。
【０１１１】
候補アラートの何らかのランク付けが、システムユーザに提示する１つ以上のアラートを選択するために、実行されることがあり得る。
【０１１２】
ステップＳ１１４は、任意的なスケーリングステップである。スケーリングは、指定されたシミュレーションジョブの実行をモニタリングすることにより取得された性能統計量を使用して、候補アラートの各々が性能の尺度に対して及ぼし得る影響度を判定することができる（ここで、尺度は、時間と直接的に同一視されてもよいし、他の性能考慮事項を組み込んでもよい）。例えば、候補アラートは、ファイルシステムを変更することがＩ／Ｏ操作の性能を５０％だけ向上させる、ということを予測することができる。しかしながら、Ｉ／Ｏ操作が、シミュレーションジョブの時間の１０％しか占めない場合、ファイルシステムを変更することはＩ／Ｏ操作に対してしか影響を及ぼさないので、スケーリングされた性能向上は５％である。予測される性能向上の計算は、ユーザアプリケーションの性能をすでに考慮しているかもしれないので、これは任意的なステップである。
【０１１３】
次いで、ステップＳ１１５において、候補アラートが、（ステップＳ１１４においてスケーリングされ且つ／又はステップＳ１１３において計算された）性能向上量の順にランク付けされ、ステップＳ１１５において、最高性能向上量を有する候補アラートが、ユーザへの提示のために選択される。例えば、上位ｎ個であってもよいし、システムユーザに提示される候補アラートについて満たされなければならない閾性能向上量が存在してもよい。
【０１１４】
ステップＳ１１６において、アラートが、ユーザへの提示のために準備される。アラートは、選択されたアラートにより表される、ユーザ定義リソース設定における差異に関連付けられた性能向上量をユーザに通知するとともに、ユーザ定義リソース設定（すなわち、向上されている性能統計量を生じさせる、リンクされているジョブのユーザ定義リソース設定）における必要とされる変更をハイライトしたレコメンデーションの形で提示され得る。
【０１１５】
次いで、ステップＳ１１７において、選択された候補アラートが、テキスト形式又はグラフィカル形式で、ユーザに提示される。提示される各候補アラートは、レコメンデーションを適用することからの予測される性能向上量と、レコメンデーションを実施するために必要とされる変更に関する詳細と、を含む。任意的に、ジョブスケジューラ１２は、提示されたアラートにおいて識別されたユーザ定義リソース設定を、システムユーザによりリクエストされる次のシミュレーションジョブについてのデフォルトとして設定する。そのようなデフォルトの設定は、システムユーザにより、オン及びオフに切り替えられ得る。
【０１１６】
次いで、具体例が提示される。
【０１１７】
システムユーザは、デフォルトファイルシステムに対して３２個のプロセスを使用して、シミュレーション問題を実行する。このジョブについての実行時間は、図１５に示されるように、７０時間ユニットである。
【０１１８】
ジョブスケジューラ１２は、入力ファイル及びジョブ依頼スクリプトをパーシング及び解析し、この情報を性能統計量メモリ１６に記憶する。この段階により記憶されるデータが、図１６に示されている。この具体例において、ジョブ依頼設定は、ユーザ定義リソース設定の例であり、シミュレーション問題及びアプリケーション詳細は、ジョブ特性の例である。ジョブ特性及びユーザ定義リソース設定は、集合的にジョブ情報と呼ばれることがある。
【０１１９】
性能モニタ１４は、ジョブの実行をモニタリングし、性能統計量を生成する。生成された性能統計量は、性能統計量メモリ１６に記憶され、ジョブスケジューラ１２によりすでにキャプチャされているジョブ情報に関連付けられる。図１７は、記憶される性能統計量の表現を示している。これは、実行時間の高レベルブレークダウンと、計算、通信、及びＩ／Ｏ操作に関するより詳細な性能情報と、を含む。この高レベル情報から、通信が、実行時間の９１％を占める実行を支配していることが明らかである。
【０１２０】
性能統計量メモリ１６には、図１８に示されるような他のジョブがすでに投入されている。メモリ内のジョブＢは、（図１６の）指定されたジョブと同じアプリケーションＡ１に関するものであるが、わずかに異なる入力ファイル設定Ｉ２を有する。ジョブＢにリンクされているジョブは、これが、ある範囲のプロセス数及び異なる通信ライブラリについての性能情報を提供する、ジョブの性能検討セット（performance  study  set）であることを示している。リンクされているジョブは、ジョブＢと同じジョブ特性を有する。ジョブＣは、ジョブＢとは異なるアプリケーションＡ４を使用し、異なるシミュレーション問題Ｉ４を解いている。このジョブは、リンクされているジョブを有さない。最後に、データ記憶部内のジョブＤは、ジョブＢと同じ依頼設定Ｓ１及びアプリケーション詳細Ａ１に関するものであるが、異なるシミュレーション入力ファイルＩ１を有する。このジョブは、半分の数のプロセスがテストされたリンクされているジョブと、異なるファイルシステムがＩ／Ｏ操作のために使用されたリンクされているジョブと、を有する。
【０１２１】
各リンクされているジョブについて、当該リンクされているジョブがリンクされた先のジョブとは異なる性能変数の値と、この性能変数にマッピングされたユーザ定義リソース設定における変更と、が記憶される。
【０１２２】
アラートジェネレータ１８の性能類似性検索エンジン１８１は、指定されたジョブとの、性能統計量メモリ内の各過去のジョブの類似性を見出す。これから、図１９に示されるように、類似性ベクトルが返される。０より大きい類似性重み付けを有する全ての過去の実行済みシミュレーションジョブについて、そのリンクされているジョブの各々を通じた検索が実行される。指定されたジョブに類似すると判定されたジョブに対して向上性能をもたらすあらゆるリンクされているジョブが、性能向上マトリックスにおけるエントリとして追加される。
【０１２３】
類似性重み付け及び性能向上マトリックスが使用されて、性能変数の向上された値をもたらす各設定変更について性能向上量が計算される。図２０は、サンプルの式（１）を使用した計算の結果を示している。同じ設定変更が、（類似すると判定された異なるジョブにリンクされている）２つのリンクされているジョブにおいて実施される場合、アラートジェネレータは、式（１）を使用して、性能の向上を表す２つの別々の値を、単一の性能向上量に集約する。これは、使用されるプロセスの数が半分にされた場合、ユーザジョブの性能が７４％だけ向上することを予測し、通信ライブラリが変更された場合、ユーザジョブの性能が３８％だけ向上することを予測し、異なるファイルシステムが使用された場合、ユーザジョブの性能が１０％だけ向上することを予測している。
【０１２４】
最後に、アラートジェネレータ１８のレコメンデーション順序付け及びユーザフィードバックエンジン１８２は、図２１に示されるように、性能向上量の順に、予測される性能の計算の出力をソートする。これらのレコメンデーションは、図２２に示されるように、テキスト出力を介して、アラートとしてユーザにフィードバックされる、又は、図２３及び図２４に示されるように、グラフィカル出力を介して、アラートとしてユーザにフィードバックされる。
【０１２５】
以上の実施形態に関し、さらに以下の付記を開示する。
【０１２６】
（付記１）
シミュレーションジョブを実行するためのシステムであって、
システムユーザにより送信されたジョブリクエストを受信するよう構成されているジョブスケジューラであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定する、ジョブスケジューラと、
前記ジョブスケジューラにより命令されるようにシミュレーションジョブを実行するよう構成されているコンピューティングハードウェアリソースであって、前記ジョブスケジューラは、前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するように前記コンピューティングハードウェアリソースに命令するよう構成されている、コンピューティングハードウェアリソースと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するよう構成されている性能モニタと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するよう構成されている性能統計量メモリと、
アラートジェネレータであって、
指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、
判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、
前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、
向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成する
よう構成されているアラートジェネレータと、
を有する、システム。
【０１２７】
（付記２）
前記ユーザ定義リソース設定は、複数の個々の設定の各個々の設定の値を含み、
指定された前記シミュレーションジョブと前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブとは、シミュレーティングアプリケーション入力に従ってシミュレーションモデルを実行するシミュレーティングアプリケーションを含み、
前記実行済みシミュレーションジョブの記憶されている前記特性は、前記シミュレーティングアプリケーションを表す複数のジョブ特性パラメータの各ジョブ特性パラメータの値、前記シミュレーションモデル、及び前記シミュレーティングアプリケーション入力を含み、
前記アラートジェネレータは、
指定された前記シミュレーションジョブについての前記複数のジョブ特性パラメータの各ジョブ特性パラメータの値を取得することにより、指定された前記シミュレーションジョブの特性を取得し、
前記複数のジョブ特性パラメータの各ジョブ特性パラメータのそれぞれの値の比較と、それぞれの前記個々の設定の各個々の設定の値の比較と、に基づいて、実行済みシミュレーションジョブが、指定された前記シミュレーションジョブに類似するか否かを判定する
よう構成されている、付記１に記載のシステム。
【０１２８】
（付記３）
前記アラートジェネレータは、
指定された前記シミュレーションジョブについての前記ジョブ特性パラメータ及び／又はユーザ定義リソース設定の各々の値を、前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブの同じジョブ特性パラメータ及び／又はユーザ定義リソース設定の値と比較することにより、指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、
前記実行済みシミュレーションジョブについての予め規定された数又は比率の値が、同じジョブ特性評価及び／又はユーザ定義リソース設定について、予め規定されたマージン内で、指定された前記シミュレーションジョブについての値と合致した場合、前記実行済みシミュレーションジョブが、指定された前記シミュレーションジョブに類似すると判定する
よう構成されている、付記２に記載のシステム。
【０１２９】
（付記４）
前記ユーザ定義リソース設定は、前記シミュレーションジョブを実行するための並列プロセスの数を含み、並列プロセスの異なる数が、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定に含まれ、
前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブの実行を表す前記性能統計量の各々は、前記シミュレーションジョブ全体又は前記シミュレーションジョブの指定された部分を実行するのに要した時間を含み、
前記アラートジェネレータは、
実行するのに要したそれぞれの前記時間の比較に基づいて、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、
前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブのうち、実行するのに短い方の前記時間を要した実行済みシミュレーションジョブの前記並列プロセスの数を、前記アラートにおいて示す
よう構成されている、付記１に記載のシステム。
【０１３０】
（付記５）
前記ユーザ定義リソース設定は、１つの並列プロセス当たりのスレッドの数をさらに含み、１つの並列プロセス当たりのスレッドの異なる数が、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定に含まれ、
前記アラートジェネレータは、前記第１の実行済みシミュレーションジョブ及び前記第２の実行済みシミュレーションジョブのうち、実行するのに短い方の前記時間を要した実行済みシミュレーションジョブの前記並列プロセスの数と前記１つの並列プロセス当たりのスレッドの数とを、前記アラートにおいて示すよう構成されている、付記４に記載のシステム。
【０１３１】
（付記６）
前記ユーザ定義リソース設定は、前記シミュレーションジョブにおいて生じるＩ／Ｏ操作のためのファイルシステムの選択を含み、Ｉ／Ｏ操作のための異なるファイルシステムが、前記第１の実行済みシミュレーションジョブのユーザ定義リソース設定及び前記第２の実行済みシミュレーションジョブのユーザ定義リソース設定において選択され、
モニタリングされている前記実行を表す前記性能統計量と、前記実行済みシミュレーションジョブの実行を表す前記性能統計量と、の各々は、前記シミュレーションジョブ全体又は前記シミュレーションジョブの指定された部分において生じたＩ／Ｏ操作を完了するのに要した時間を含み、
前記アラートジェネレータは、
Ｉ／Ｏ操作を完了するのに要したそれぞれの前記時間の比較に基づいて、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとから、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方と比較して向上されている性能統計量を有する実行済みシミュレーションジョブを識別し、
前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうち、Ｉ／Ｏ操作を完了するのに短い方の前記時間を要した前記実行済みシミュレーションジョブのＩ／Ｏ操作のためのファイルシステムを、前記アラートにおいて示す
よう構成されている、付記１に記載のシステム。
【０１３２】
（付記７）
各性能統計量は、前記シミュレーションジョブの実行の側面の性能の尺度を示す性能変数の値であり、
前記アラートジェネレータは、
指定された前記シミュレーションジョブに類似すると判定された前記実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、前記第１の実行済みシミュレーションジョブとして識別することにより、複数の候補アラートを識別し、
前記第１の実行済みシミュレーションジョブと同じ記憶されている特性を有するとともに、前記同じ記憶されている特性を有する他の実行済みシミュレーションジョブの中で性能の最良の尺度を示す値を有する実行済みシミュレーションジョブを、各性能変数についての前記第２の実行済みシミュレーションジョブとして確認し、
予め規定されたマッピングを使用して、前記性能変数を、該性能変数に影響を及ぼす１つ以上のリソース設定にマッピングし、
マッピングされた前記１つ以上のリソース設定の値が、確認された前記第２の実行済みシミュレーションジョブと指定された前記シミュレーションジョブとの間で異なる場合、前記性能変数、確認された前記第２の実行済みシミュレーションジョブのマッピングされた前記１つ以上のリソース設定、及びリソース設定における差異を、候補アラートとして記憶する
よう構成されており、
前記アラートジェネレータは、さらに、記憶されている前記候補アラートからアラートを選択することにより、前記システムユーザに対するアラートを生成するよう構成されている、付記１に記載のシステム。
【０１３３】
（付記８）
前記アラートジェネレータは、前記第１の実行済みシミュレーションジョブと確認された前記第２の実行済みシミュレーションジョブとの間の、前記性能変数についての性能の尺度における差異を、性能向上量として定量化し、性能向上量の順に、前記候補アラートをランク付けし、上位ｎ個のランク付けされた前記候補アラートの各候補アラートを前記システムユーザに通知することにより、アラートを生成するよう構成されている、付記７に記載のシステム。
【０１３４】
（付記９）
前記アラートジェネレータは、指定された前記シミュレーションジョブと、指定された前記シミュレーションジョブに類似すると判定された前記１つ以上の実行済みシミュレーションジョブの各実行済みシミュレーションジョブと、の間の類似性のレベルを、当該実行済みシミュレーションジョブの値が、予め規定されたマージン内で、指定された前記シミュレーションジョブについての値と合致したジョブ特性パラメータ及び／又はユーザ定義リソース設定の数に基づいて、定量化するよう構成されており、
前記アラートジェネレータは、指定された前記シミュレーションジョブと、リソース設定及び性能向上量が記憶されている前記実行済みシミュレーションジョブと、の間の定量化された前記類似性のレベルに基づいて、候補アラートに重み付けを付与し、付与された前記重み付けにより重み付けされた性能向上量の順に、前記候補アラートをランク付けし、上位ｎ個のランク付けされた前記候補アラートの各候補アラートを前記システムユーザに通知することにより、アラートを生成するよう構成されている、付記３又は７に記載のシステム。
【０１３５】
（付記１０）
前記アラートジェネレータは、生成された前記アラートを前記ジョブスケジューラに送信するよう構成されており、前記ジョブスケジューラは、前記アラートにおいて識別された異なるユーザ定義リソース設定を、前記システムユーザにより送信される次のシミュレーションジョブについてのデフォルトとして設定するよう構成されている、付記１に記載のシステム。
【０１３６】
（付記１１）
前記性能統計量メモリは、指定された前記シミュレーションジョブが完了すると、指定された前記シミュレーションジョブについて実行済みシミュレーションジョブとして、指定された前記シミュレーションジョブの特性、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定、及び、指定された前記シミュレーションジョブの実行を表す、前記性能モニタにより生成された前記性能統計量を記憶するよう構成されている、付記１に記載のシステム。
【０１３７】
（付記１２）
指定された前記シミュレーションジョブの前記特性が、前記性能統計量メモリ内の実行済みシミュレーションジョブの特性と同じであり、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定と、該実行済みシミュレーションジョブについてのユーザ定義リソース設定と、が同じであると、前記システムが判定した場合、前記システムは、前記性能統計量を集約して各性能変数について平均値を生成し、前記アラートジェネレータによる他の実行済みシミュレーションジョブとの比較のための性能統計量として、前記平均値を記憶する、付記１１に記載のシステム。
【０１３８】
（付記１３）
指定された前記シミュレーションジョブの前記特性が、前記性能統計量メモリ内の実行済みシミュレーションジョブの特性と同じであり、指定された前記シミュレーションジョブについての前記ユーザ定義リソース設定と、該実行済みシミュレーションジョブについてのユーザ定義リソース設定と、が異なると、前記システムが判定した場合、前記システムは、指定された前記シミュレーションジョブの前記性能統計量と、該実行済みシミュレーションジョブの性能統計量と、をリンクする、付記１１又は１２に記載のシステム。
【０１３９】
（付記１４）
コンピューティングハードウェアリソース上でのシミュレーションジョブの実行を制御するためのコンピューティングハードウェアリソースコントローラであって、
システムユーザにより送信されたジョブリクエストを受信するよう構成されているジョブスケジューラであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定し、前記ジョブスケジューラは、前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するように前記コンピューティングハードウェアリソースに命令するよう構成されている、ジョブスケジューラと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するよう構成されている性能モニタと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するよう構成されている性能統計量メモリと、
アラートジェネレータであって、指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成するよう構成されているアラートジェネレータと、
を有する、コンピューティングハードウェアリソースコントローラ。
【０１４０】
（付記１５）
コンピューティングハードウェアリソース上でのシミュレーションジョブの実行を制御するための、コンピュータにより実施される方法であって、
システムユーザにより送信されたジョブリクエストを受信するステップであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定する、ステップと、
前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するように前記コンピューティングハードウェアリソースに命令するステップと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するステップと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するステップと、
指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成するステップと、
を含む、方法。
【０１４１】
（付記１６）
コンピューティングデバイスにより実行されたときに、前記コンピューティングデバイスに、
システムユーザにより送信されたジョブリクエストを受信するステップであって、前記ジョブリクエストは、シミュレーションジョブと、該シミュレーションジョブについてのユーザ定義リソース設定と、を指定する、ステップと、
前記ユーザ定義リソース設定に従って、指定された前記シミュレーションジョブを実行するようにコンピューティングハードウェアリソースに命令するステップと、
前記コンピューティングハードウェアリソースによる指定された前記シミュレーションジョブの実行をモニタリングし、モニタリングされている前記実行を表す性能統計量を生成するステップと、
複数の実行済みシミュレーションジョブの各実行済みシミュレーションジョブについて、当該実行済みシミュレーションジョブの特性、当該実行済みシミュレーションジョブについてのユーザ定義リソース設定、及び当該実行済みシミュレーションジョブの実行を表す性能統計量を記憶するステップと、
指定された前記シミュレーションジョブに類似する１つ以上の実行済みシミュレーションジョブを判定し、判定された前記１つ以上の実行済みシミュレーションジョブの中から、第１の実行済みシミュレーションジョブであって、記憶されている前記特性が、第２の実行済みシミュレーションジョブの記憶されている前記特性と同じであり、前記ユーザ定義リソース設定のうちの１つ以上のユーザ定義リソース設定が、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとの間で異なる、第１の実行済みシミュレーションジョブを識別し、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの他方に対して、前記第１の実行済みシミュレーションジョブと前記第２の実行済みシミュレーションジョブとのうちの一方において向上されている性能統計量を判定し、向上されている性能統計量を有するとして識別された前記第１の実行済みシミュレーションジョブ又は前記第２の実行済みシミュレーションジョブの前記１つ以上のユーザ定義リソース設定を示す、前記システムユーザに対するアラートを生成するステップと、
を含む方法を実行させる、コンピュータプログラム。
【０１４２】
（付記１７）
付記１６に記載のコンピュータプログラムを記憶している記憶媒体。
【符号の説明】
【０１４３】
１０      コンピューティングハードウェアリソースコントローラ
１２      ジョブスケジューラ
１４      性能モニタ
１６      性能統計量メモリ（アプリケーション性能データ記憶部）
１８      アラートジェネレータ
１８１    性能類似性検索エンジン
１８２    レコメンデーション順序付け及びユーザフィードバックエンジン
２０      コンピューティングハードウェアリソース
９９３    プロセッサ
９９４    メモリ
９９５    ディスプレイユニット
９９６    入力機構
９９７    ネットワークインタフェース（ネットワークＩ／Ｆ）
【図１】
2018005896.tif 000004
【図２】
2018005896.tif 000005
【図３】
2018005896.tif 000006
【図４】
2018005896.tif 000007
【図５】
2018005896.tif 000008
【図６】
2018005896.tif 000009
【図７】
2018005896.tif 000010
【図８】
2018005896.tif 000011
【図９】
2018005896.tif 000012
【図１０Ａ】
2018005896.tif 000013
【図１０Ｂ】
2018005896.tif 000014
【図１１】
2018005896.tif 000015
【図１２】
2018005896.tif 000016
【図１３】
2018005896.tif 000017
【図１４】
2018005896.tif 000018
【図１５】
2018005896.tif 000019
【図１６】
2018005896.tif 000020
【図１７】
2018005896.tif 000021
【図１８】
2018005896.tif 000022
【図１９】
2018005896.tif 000023
【図２０】
2018005896.tif 000024
【図２１】
2018005896.tif 000025
【図２２】
2018005896.tif 000026
【図２３】
2018005896.tif 000027
【図２４】
2018005896.tif 000028