(57)【要約】      （修正有）【課題】アプリケーション・プロファイリング・タスクを構成及び開始するシステムを提供する。【解決手段】システム１０は、プロファイリング対象及びプロファイリング実行要件を特定する入力を受けるユーザ入力受信部と、プロファイラ仕様を記憶するプロファイラ仕様記憶部と、どのプロファイラがプロファイリング実行要件を満足するかをプロファイラ仕様に基づき決定し、決定された・プロファイラの夫々について、そのプロファイラ及びプロファイリング対象を特定するプロファイリング・タスクを生成するプロファイラ照合部と、プロファイリング・タスクを実行するハードウェア・リソースのシステムを選択するハードウェア管理部と、選択されたハードウェア・リソースのシステムによりプロファイリング・タスクの実行を開始するジョブ・スケジューラとを有する。【選択図】図１
2018026114.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムであって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有するアプリケーション・プロファイリング・ジョブ管理システム。
【請求項２】
前記ハードウェア・リソースのシステム又は１つ以上のシステムの夫々について、該夫々のハードウェア・リソースのシステムによって記憶されている複数のソフトウェア・アーチファクトの夫々の位置を特定するハードウェア・アーチファクト・マップを記憶するよう構成されるハードウェア・アーチファクト・マップ記憶部と、
夫々のアプリケーション・プロファイリング・タスクについて、前記選択されたハードウェア・リソースのシステムがソフトウェア・アーチファクトの組の位置にアクセスするために前記記憶されているハードウェア・アーチファクト・マップを使用することによって、前記特定されたアプリケーション・プロファイラが依存状態を示すソフトウェア・アーチファクトの組をアセンブルするよう構成されるアセンブリ部と
を更に有する請求項１に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項３】
前記ハードウェア・アーチファクト・マップの夫々は、夫々のハードウェア・リソースのシステムについて、前記１つ以上のアプリケーション・プロファイリング・タスクの実行のために前記アセンブリ部によってアセンブルされる当該ハードウェア・リソース上の前記特定されたソフトウェア・アーチファクトの位置を示すデータへリンクされた１つ以上のハードウェア記憶識別子を含む、
請求項２に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項４】
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、複数のプロファイラ情報識別子を含み、該プロファイラ情報識別子の夫々は、当該アプリケーション・プロファイラから利用可能な性能測定を示し及び／又は前記特定されたアプリケーション・プロファイラによって必要とされる１つ以上のソフトウェア・アーチファクトを示すプロファイリング値域を識別する、
請求項１に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項５】
前記プロファイラ照合部は、前記ユーザ入力情報によって特定される前記プロファイリング実行要件を複数の要求値域に変換するよう構成される変換部を含み、夫々の要求値域は、要件情報識別子によって識別され、夫々の要件情報識別子は、関連するプロファイラ情報識別子を有し、
前記プロファイラ照合部は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、夫々のプロファイラ仕様を前記特定されたプロファイリング実行要件と比較するよう構成される、
請求項４に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項６】
前記プロファイラ照合部は、
各アプリケーション・プロファイラのプロファイラ仕様について、
関連するプロファイラ情報識別子が、各要件情報識別子についての前記識別された要求値域を満たすプロファイリング値域を識別するかどうかを判定することによって、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを決定するよう更に構成され、
前記アプリケーション・プロファイラは、前記識別された要求値域が満たされる場合に、前記特定されたプロファイリング実行要件を満足すると決定される、
請求項４に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項７】
当該アプリケーション・プロファイリング・ジョブ管理システムは、前記アプリケーション・プロファイラを実行するハードウェア・リソースのシステムの構成を決定する命令についての構造化されたフォーマットを定義するアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートを記憶するよう構成され、
前記アセンブリ部は、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な前記複数のアプリケーション・プロファイラの夫々についてのアプリケーション・プロファイラ・ドライバ・スクリプトを記憶するよう構成されるドライバ・スクリプト記憶部を含み、前記アプリケーション・プロファイラ・ドライバ・スクリプトの夫々は、前記アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって定義される前記構造化されたフォーマットを実装する、
請求項１に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項８】
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、アプリケーション・プロファイラのグループがアプリケーション・プロファイリング・タスクの実行中に実行されるべき順序を示す優先順位標識値を更に含み、これによって、より高い優先順位標識値が、より低い優先順位標識値より前に実行され、
前記優先順位標識値は、一部のアプリケーション・プロファイラが他よりも早い順序で実行されることを求めるアプリケーション・プロファイラのシーケンスの間の動作要件及び／又は相互依存性に基づき、前記優先順位標識値によって保持される値は、ユーザによって設定可能である、
請求項４に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項９】
前記プロファイラ照合部は、該プロファイラ照合部が複数のアプリケーション・プロファイリング・タスクを決定する場合に、
前記複数のアプリケーション・プロファイリング・タスクをスキャンして相互作用を識別し、識別された相互作用するアプリケーション・プロファイリング・タスクを同じバッチ・ジョブにグループ化することで、前記複数のアプリケーション・プロファイリング・タスクを１つ以上のバッチ・ジョブに分け、
前記１つ以上のバッチ・ジョブの夫々のためにハードウェア・リソースの独立したシステムを選択することによって、前記アプリケーション・プロファイリング・タスクの夫々を実行するように、１つ以上のコンピューティング環境及びプロセッサからハードウェア・リソースの１つ以上のシステムを選択する
よう構成される、
請求項７に記載のアプリケーション・プロファイリング・ジョブ管理システム。
【請求項１０】
ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムを有し、
前記アプリケーション・プロファイリング・ジョブ管理システムは、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
前記アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有し、
前記ハードウェア・リソースの１つ以上のシステムを更に有し、該ハードウェア・リソースのシステムの夫々は、前記ジョブ・スケジューラの命令に従ってアプリケーション・プロファイリング・タスクを実行するよう構成される、
コンピューティング・システム。
【請求項１１】
ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理方法であって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成し、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択し、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始する
ことを有するアプリケーション・プロファイリング・ジョブ管理方法。
【請求項１２】
コンピューティング・デバイスによって実行される場合に、該コンピューティング・デバイスに、
ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成し、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択し、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始する
ことを有する方法を実行させるコンピュータ・プログラムを記憶している非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア・プロファイリングの分野に属し、特に、複数のプロファイラを利用してプロファイリング・タスクをスケジューリングするシステムに関係がある。
【背景技術】
【０００２】
プロファイリング・テクノロジ・ソフトウェア・ツールは、コード及びソフトウェア・アプリケーションの実行を解析するために使用される。それらのツールは、通常は使用するのが容易でなく、それらの内部構造／機能に関する広範囲にわたる知識をしばしばユーザに求める。更に、ソフトウェア・アプリケーションの完全な／完ぺきな解析のために、異なるツール又はアプリケーション・プロファイラが通常は必要とされる。ユーザが利用可能な個別的なアプリケーション・プロファイラの夫々は、その操作に対する独特のインターフェイスを提供し、従って、その構成及び実行のために様々な専門知識及び様々なアプローチを必要とする。夫々のプロファイラの独自の動作特性により、プロファイラを構成及び実行するための、又は適切なプロファイラの選択のための動作の詳細に関する必要とされる学習プロセス及び知識は、通常は、それらの作業生産性に悪影響を及ぼし得るスティープ・ラーニング曲線（steep  learning  curve）にユーザを置く。
【発明の概要】
【０００３】
従って、プロファイリング・テクノロジの選択を操作する／含むようアプリケーション／プロファイラの実行を自動化し且つ／あるいはプロファイリング・プロセスをカスタマイズすることができるメカニズムの提供が、大いに有益である。
【０００４】
実施形態は、ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムであって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有するアプリケーション・プロファイリング・ジョブ管理システムを含む。
【０００５】
本発明の実施形態は、プロファイリング対象の性能を解析するためにアプリケーション・プロファイラを仕様及び適用する有効な、ユーザフレンドリな、カスタマイズ可能な且つ自動化されたメカニズムを提供する。そのような実施形態は、コンピューティング環境、アプリケーション・プロファイラ、及びそれらの実行を設定するユーザ入力受信部を提供する。ユーザ入力受信部は、コマンド・ライン又はＧＵＩインターフェイスであってよく、例えば、必要とされ得る特定の従属するソフトウェア・アーチファクト（software  artefacts）（すなわち、如何にしてアプリケーションがキュー・システム（queue  system）にサブミットされるかを扱う具体的なスクリプト）をロードするための、如何なる特別なエントリも扱うことができる。結果として現れるユーザ入力情報は、適切なアプリケーション・プロファイラを実行することに関与する。ユーザ入力受信部の主たるタスクは、従って、ユーザによってセットされた所望のユーザ入力情報を、如何にして夫々のアプリケーション・プロファイラが最終的に呼び出されるかにかかわらず、夫々のアプリケーション・プロファイラのための適切なプロファイリング実行要件に変換することである。
【０００６】
夫々のアプリケーション・プロファイラは、夫々のプロファイラの実行に必要とされる細部がアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートにおいて個々にカプセル化されるので、独立したモジュールと見なされる。加えて、異なるプロファイリング実行要件が特定されるユーザ入力情報について、プロファイリング対象の性能のより詳細且つ包括的な理解を得ることを目的として、そのような実施形態は、そのようなプロセスを緩和してシームレスなものへと簡単化する使いやすく且つカスタマイズ可能なメカニズムを提供する。
【０００７】
独立したモジュールは、アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって記述される個別のアプリケーション・プロファイラであると見なされる。このテンプレートは、如何にして個別のアプリケーション・プロファイラがハードウェア・リソースのシステムで実行されるかを定義する命令の構造化されたフォーマットから成る。
【０００８】
本発明の実施形態は、アプリケーション・プロファイリングを実行するための自動の、トランスペアレントな、カスタマイズ可能な、且つ使いやすいシステムをコード開発者及びソフトウェア・ユーザに提供する。このテクノロジは、シームレスな様態でプロファイリング対象の多視点プロファイリングを実施することをユーザに可能にしながら、様々なアプリケーション・プロファイラの実行を構成し、作動し、開始するのに必要とされる詳細を統一するよう設計される。従って、高性能計算（ＨＰＣ；High  Performance  Computing）アプリケーション及び実行ファイル（高性能計算は、信頼できる時宜にかなった様態で高度なアプリケーション・ソフトウェアを実行する並列処理の使用を含む。）を含むプロファイリング対象の包括的且つ完全なプロファイリングは、効率的且つ効果的である統一されたステップで実施され得る。
【０００９】
このアプリケーション・プロファイリング・ジョブ管理システムは、アプリケーション・プロファイラの実行を簡潔なプロセスへ緩和し、これによって、詳細なアプリケーション・プロファイラ・コンフィグレーション・オプションの範囲は、プロファイリング対象の包括的なプロファイリングを実施することをユーザに可能にする入力オプションの分かりやすい組に緩和される。
【００１０】
本発明の実施形態は、統合されたユーザ入力受信部に、複数のプロファイリング対象インスタンスに関して、１つのアプリケーション・プロファイラの実行又はアプリケーション・プロファイラの選択のための複数の異なるユーザ入力情報設定を供給することによって、プロファイリング対象の１よりも多いインタスタンスをプロファイリングすることをユーザに可能にする手段を提供する。そのような実施形態はまた、何らかのプロファイリング対象インスタンスの異なるバージョンがプロファイリングされるべきであるシナリオを考慮する実効的なメカニズムを提供する。それらの異なるプロファイリング対象インスタンスは、それらが実行される方法が様々であり得る。故に、異なるハードウェア・リソース設定及び／又はプロファイリング実行要件が、それらの各々のプロファイルを得る前に、インスタンスごとに適用される必要がある。プロファイリング対象の異なるインスタンスの数が増えるにつれて、プロファイリング・プロセスはますます完全なものとなる（これは、異なる環境設定、モジュール及びシステム・ライブラリがロードされて予め構成されることを必要とし得る。）。本発明の実施形態は、この関連するプロセスを、自動の、シームレスな且つトランスペアレントなプロセスへと緩和する。
【００１１】
更に、アプリケーション・プロファイラが使用されるべきであるハードウェア・リソースの同じシステムで既にコンパイルされているプロファイリング対象について、ハードウェア・リソースのシステムは、次いで、プロファイリング対象のバイナリファイルがハードウェア・リソースの対象システムでの実行に適合している限りは、バイナリ実行ファイルへのアクセスのみを必要とし、ソースコードへのアクセスは必要としない。
【００１２】
コンパイルされたプロファイリング対象は、コンピューティング・システムで実行されたことがあるプロファイリング対象と見なされる。これによって、コンパイル・ツールは、プロファイリング対象ソースコードを、コンピュータの中央演算処理装置（ＣＰＵ；central  processing  unit）によって直接に実行されるマシン・コードに変換している。
【００１３】
本発明の実施形態の成果は、より広いＨＰＣ及びソフトウェア・プログラミング・コミュニティにとって有益であり、次のものを含む：
ａ）複数のプロファイリング実行要件を有する異なったアプリケーション・プロファイラによるアプリケーション・プロファイリングのための自動の且つカスタマイズ可能なメカニズム；
ｂ）アプリケーション・プロファイラ又は複数のアプリケーション・プロファイラを用いてプロファイリング対象を実行するのに必要とされる全てのとり得る組み合わせを設定する時間のかかるタスクを解消するので、効率的且つ効果的な様態でのプロファイリング対象のプロファイリング；
ｃ）対象のコンピューティング・システムだけでなく、夫々のアプリケーション・プロファイラを実行及び構成するのに必要とされる厄介な詳細を隠すので、ユーザにとってのトランスペアレンシー；
ｄ）アプリケーション・プロファイラがシームレスな様態で実行され、一方、夫々のアプリケーション・プロファイリング・タスクの結果として現れるプロファイリング出力は記憶されて損なわれないままであるところの技術的詳細の抽象化；
ｅ）複数のコンピューティング・システム及びアプリケーションを構成及び実行するのに必要とされる時間を大いに削減するとともに、必要とされるスティープ・ラーニング・プロセスを回避するプロファイリング対象の包括的且つ完全な特徴付け。
【００１４】
よくあることだが、単一のプロファイリング対象又は異なるプロファイリング対象の集合のいずれかをプロファイリングする場合に、広いユーザ知識が必要とされる。従って、本発明は、ユーザの既存の知識を大いに強化し、アプリケーション・プロファイラを選択及び提案するときにソフトウェア及びハードウェア両方のシステム（例えば、ＨＰＣ）の有用性を高める。更には、実施形態は、ユーザが他の手段によっては知り得ない代替の適切なアプリケーション・プロファイラを提案するメカニズムを含み得る。
【００１５】
実施形態は、プロファイラ・システム・アプリケーション・エクスペリメントの種々の組み合わせのシームレスな実行を可能にし、そして、結果として現れる出力を、その次に結合されてその後に解析されるよう共通の記憶場所に集める。
【００１６】
ソフトウェア／ターゲット・アプリケーションは、１つ以上のコンピューティング環境及び／又はプロセッサで実行することができるソフトウェア／ターゲット・アプリケーションを実装するコードの少なくとも実行可能部分であると考えられる。
【００１７】
プロファイラ仕様は、プロファイラ記述子（profiler  descriptor）とも呼ばれ得る。
【００１８】
ハードウェア・アーチファクト・マップは、システム記述子（system  descriptor）と呼ばれ得る。
【００１９】
任意に、実施形態は、前記ハードウェア・リソースのシステム又は１つ以上のシステムの夫々について、該夫々のハードウェア・リソースのシステムによって記憶されている複数のソフトウェア・アーチファクトの夫々の位置を特定するハードウェア・アーチファクト・マップを記憶するよう構成されるハードウェア・アーチファクト・マップ記憶部と、
夫々のアプリケーション・プロファイリング・タスクについて、前記選択されたハードウェア・リソースのシステムがソフトウェア・アーチファクトの組の位置にアクセスするために前記記憶されているハードウェア・アーチファクト・マップを使用することによって、前記特定されたアプリケーション・プロファイラが依存状態を示すソフトウェア・アーチファクトの組をアセンブルするよう構成されるアセンブリ部とを更に有する。
【００２０】
ハードウェア・アーチファクト・マップは、ユーザ入力情報によって特定されるアプリケーション・プロファイリング・タスクを実行するためにアプリケーション・プロファイラによって必要とされる如何なるソフトウェア・アーチファクトも識別するメカニズムを提供し得る。それらの従属ソフトウェア・アーチファクトは、ハードウェア初期化を実施するコンフィグレーション・ライブラリ、リンカ・スクリプト、デバイス・ドライバ、オブジェクト・ファイル、バイナリ、スクリプト及び／又はブート・コードとして具現化され得る。
【００２１】
ハードウェア・アーチファクト・マップは、新しいアプリケーション・プロファイラのあらゆる新しいソフトウェア・アーチファクトのための経路を既存のハードウェア・アーチファクト・マップに加え、それによって、ハードウェア・リソースのシステムの必要とされる変更又は修正の範囲を制限することによって、更なるアプリケーション・プロファイラがアプリケーション・プロファイリング・ジョブ管理システムに組み込まれることを可能にする。更には、ハードウェア・アーチファクト・マップは、異なるアプリケーション・プロファイラ及び／又はプロファイリング対象インスタンスの全ての矛盾のない組み合わせのためのハードウェア・リソースのシステムにおけるアプリケーション・プロファイリング・タスクの実行を助ける。
【００２２】
アセンブリ部は、夫々のアプリケーション・プロファイリング・タスクを実行するためにアプリケーション・プロファイラによって必要とされる１つ以上のソフトウェア・アーチファクトをとり、それらを単一の実行可能ファイル、ライブラリ・ファイル又は他のオブジェクト・ファイルにまとめ得る。アセンブルすることは、ダイナミック・リンキングによって実施され得、これによって、標準のシステム・ライブラリが利用され、あるいは、システム・ライブラリが必要とされないスタティック・リンキングによって実施され得る。
【００２３】
更に、前記ハードウェア・アーチファクト・マップの夫々は、夫々のハードウェア・リソースのシステムについて、前記１つ以上のアプリケーション・プロファイリング・タスクの実行のために前記アセンブリ部によってアセンブルされる当該ハードウェア・リソース上の前記特定されたソフトウェア・アーチファクトの位置を示すデータへリンクされた１つ以上のハードウェア記憶識別子を含み得る。
【００２４】
ハードウェア・アーチファクト・マップによって識別されるソフトウェア・アーチファクトは、コンピュータ・システムの二次メモリ／不揮発性メモリ／リード・オンリー・メモリ（ＲＯＭ；Read  Only  Memory）（例えば、ＰＲＯＭ、ＥＰＲＯＭ及び／又はＥＥＰＲＯＭ）に位置し得る。ハードウェア記憶識別子は、メモリ・アドレス又はメモリ・アドレスへのパスとして具現化され得る。
【００２５】
ハードウェア・リソースのシステム上の全てのハードウェア記憶識別子を同じ従属ソフトウェア・アーチファクトへリンクすることによって、夫々の従属ソフトウェア・アーチファクトのただ１つのコピーがハードウェア・リソースのいずれか１つのシステムにおいて必要とされ、それによって、夫々の個別的なハードウェア・リソースに必要とされるメモリ容量は削減される。
【００２６】
任意に、前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、複数のプロファイラ情報識別子を含み、該プロファイラ情報識別子の夫々は、当該アプリケーション・プロファイラから利用可能な性能測定を示し及び／又は前記特定されたアプリケーション・プロファイラによって必要とされる１つ以上のソフトウェア・アーチファクトを示すプロファイリング値域を識別する。
【００２７】
プロファイラ情報識別子は、各々のアプリケーション・プロファイラの夫々に関連するプロファイリング能力（すなわち、性能測定）及び実行要件（すなわち、ソフトウェア・アーチファクト）のような特性を示すメカニズムを提供する。それらの特性は、アプリケーション・プロファイラが、該アプリケーション・プロファイラをアプリケーション・プロファイリング・ジョブ管理システムに再インストールする必要なしに、更新又は修正される限り、変更され得る。
【００２８】
プロファイラ情報識別子及びプロファイリング値域は、key-value  pair（ＫＶＰ）構造として具現化さえ得る。キー（key）は、プロファイラ情報識別子によって表され、値（value）は、プロファイリング値域によって表される。プロファイラ情報識別子及びプロファイリング値域のインスタンスは、name-value  pair、field-value  pair又はattribute-value  pairであってよい。
【００２９】
前記特定されたアプリケーション・プロファイラによって必要とされる１つ以上のソフトウェア・アーチファクトは、夫々のアプリケーション・プロファイリング・タスクがアセンブリ部によってアセンブルされ、そしてハードウェア・リソースの１つ以上のシステムにおいて実行されるために必要とされるソフトウェア・アーチファクトを意味すると考えられる。
【００３０】
更に、前記プロファイラ照合部は、前記ユーザ入力情報によって特定される前記プロファイリング実行要件を複数の要求値域に変換するよう構成される変換部を更に含んでよく、夫々の要求値域は、要件情報識別子によって識別され、夫々の要件情報識別子は、関連するプロファイラ情報識別子を有し、前記プロファイラ照合部は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、夫々のプロファイラ仕様を前記特定されたプロファイリング実行要件と比較するよう構成される。
【００３１】
変換部は、夫々の要件情報識別子をプロファイラ情報識別子へマッピングすることによって、プロファイリング実行要件とプロファイラ仕様との直接的な比較のためのメカニズムを提供する。変換部は、要件情報識別子とプロファイラ情報識別子との間の関連付け又はマッピングの記憶されたリストと協調して動作するプロセッサによって具現化され得る。変換部によって実施される変換は、再分類、形式化、マッピング、又は再構築と呼ばれ得る。このように、変換部は、記憶された構造に従ってプロファイリング実行要件を再構築するよう構成されたユニットであると見なされ得る。記憶された構造は、プロファイラ仕様が記憶される構造である。
【００３２】
変換部は、ユーザ要求（プロファイリング実行要件によって表される。）がプロファイラの特徴（プロファイラ情報識別子及び各々の値によって表される。）と直接に比較されることを可能にする。プロファイラ照合部は、それによって、複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを判定するための直接に比較可能なデータセット（プロファイリング実行要件及びプロファイラ仕様）を供給される。
【００３３】
任意に、前記プロファイラ照合部は、各アプリケーション・プロファイラのプロファイラ仕様について、関連するプロファイラ情報識別子が、各要件情報識別子についての前記識別された要求値域を満たすプロファイリング値域を識別するかどうかを判定することによって、前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを決定するよう更に構成され、前記アプリケーション・プロファイラは、前記識別された要求値域が満たされる場合に、前記特定されたプロファイリング実行要件を満足すると決定される。
【００３４】
プロファイラ照合部は、反復プロセスにおいてプロファイリング値域を個々の要求値域と比較し、これによって、いずれか１つの要求値域がプロファイラ仕様において記憶されている複数のプロファイラ値域のいずれとも相関しない場合には、各々のプロファイラ仕様が捨てられる。
【００３５】
プロファイラ照合部は、夫々の要件情報識別子のための識別された要求値域の特定の割合以上を満たすアプリケーション・プロファイラのみがプロファイリング対象のプロファイリングを実施するために選択されることを確かにし、それによって、プロファイリング対象をプロファイリングするプロファイラの最も有効な配置をコンパイルする。
【００３６】
プロファイラ照合部は、選択されるアプリケーション・プロファイラのあらゆるライセンスを確認し、続いて、このライセンスに基づきアプリケーション・プロファイラの利用可能性を確かめるメカニズムを更に有し得る。
【００３７】
アプリケーション・プロファイラが選択されるために満足されるべきプロファイリング実行要件の特定の割合以上は、例えば、７５％、９／１０、及び／又はユーザ設定可能であってよい。すなわち、特定されたプロファイリング実行要件を満足するとアプリケーション・プロファイラが決定されるために満たされるべき識別された要求値域の特定された割合は、例えば、特定された割合（例えば、７５％）、特定された数（例えば、９／１０）、又は何らかの他の方法で特定された割合であり、この割合は、入力としてユーザによって特定され得る。
【００３８】
識別された要求値域を満たすプロファイリング範囲は、プロファイリング範囲が前記識別された要求値域内にあるか又はそれを満足することを意味すると考えられる。
【００３９】
任意に、当該アプリケーション・プロファイリング・ジョブ管理システムは、前記アプリケーション・プロファイラを実行するハードウェア・リソースのシステムの構成を決定する命令についての構造化されたフォーマットを定義するアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートを記憶するよう構成され、前記アセンブリ部は、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な前記複数のアプリケーション・プロファイラの夫々についてのアプリケーション・プロファイラ・ドライバ・スクリプトを記憶するよう構成されるドライバ・スクリプト記憶部を含み、前記アプリケーション・プロファイラ・ドライバ・スクリプトの夫々は、前記アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって定義される前記構造化されたフォーマットを実装する。
【００４０】
アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートは、異なるライブラリ及び実行可能なモジュールをロードすることによってプロファイリング対象のアプリケーション・プロファイリングを実施することに関与するハードウェア・リソースのシステムの構成を決定し、任意に、更には、結果として現れる出力が最終的にどこで収集及び記憶されるかを決定する。
【００４１】
アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートは、アプリケーション・プロファイリング・ジョブ管理システムのいずれかの他の特徴に作用して、どの時点でも使用され得るアプリケーション・プロファイラの数に対する如何なる制約も排除することなしに、追加のプロファイラがアプリケーション・プロファイリング・ジョブ管理システムに組み込まれることと、既存のアプリケーション・プロファイラが除かれることとを可能にするモジュラー・メカニズムであってよい。
【００４２】
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、アプリケーション・プロファイラのグループがアプリケーション・プロファイリング・タスクの実行中に実行されるべき順序を示す優先順位標識値を更に含み、これによって、より高い優先順位標識値が、より低い優先順位標識値より前に実行され、前記優先順位標識値は、一部のアプリケーション・プロファイラが他よりも早い順序で実行されることを求めるアプリケーション・プロファイラのシーケンスの間の動作要件及び／又は相互依存性に基づき、前記優先順位標識値によって保持される値は、ユーザによって設定可能である。
【００４３】
優先順位標識値を設定する場合にアプリケーション・プロファイラが実行される必要がある順序のような因子を考慮に入れることによって、ソフトウェア・コンフリクト・エラーは防がれ得る（例えば、２つのプログラムが同じメモリ・リソース及び／又はレジスタを争う場合）。更には、ユーザは、最も包括的且つ完全なプロファイリングを実施することができるアプリケーション・プロファイラが、よりニッチなアプリケーションを有している他のアプリケーション・プロファイラより前に実行されることを確かにするために、特定の順序でアプリケーション・プロファイラを実行するよう優先順位標識値を設定することを選択し得る。
【００４４】
優先順位標識は、夫々の個別的なアプリケーション・プロファイラへ、他のアプリケーション・プロファイラに対するその選好を示すために割り当てられた値であると考えられる。優先順位値は、例えば、１から１００の値であってよく、選好の順序は、昇順又は降順のいずれかであってよい。優先順位値は、例えば、システム管理者によって、設定可能であってよい。
【００４５】
任意に、前記プロファイラ照合部は、該プロファイラ照合部が複数のアプリケーション・プロファイリング・タスクを決定する場合に、前記複数のアプリケーション・プロファイリング・タスクをスキャンして相互作用を識別し、識別された相互作用するアプリケーション・プロファイリング・タスクを同じバッチ・ジョブにグループ化することで、前記複数のアプリケーション・プロファイリング・タスクを１つ以上のバッチ・ジョブに分け、前記１つ以上のバッチ・ジョブの夫々のためにハードウェア・リソースの独立したシステムを選択することによって、前記アプリケーション・プロファイリング・タスクの夫々を実行するように、１つ以上のコンピューティング環境及びプロセッサからハードウェア・リソースの１つ以上のシステムを選択するよう構成される。
【００４６】
プロファイラ照合部は、従属コンピューティング環境で並列に実行されるようアプリケーション・プロファイリング・タスクのジョブのバッチを協調させる。実行されるべき複数のプロファイリング・タスクが存在する場合において、それらへの並列実行が使用され得る。この並列実行において、我々は、独立したプロファイリング・ジョブが独立したコンピューティング環境で実行され得ることを意味する。複数のプロファイリング・タスクを生成し得るプロファイリング・プロセスを分解することによって、並列にそれらを実行することでプロファイリング・プロセス全体を加速させることができる。プロファイリング・プロセスの並列化の他に、プロファイリングされるソフトウェアは、プロファイリング・ジョブにおいて維持される並列プロセッシングを含むことができる（これは、プロファイリングされるアプリケーションの予備的知識を有しており、如何なるプロファイリングも適用する前にユーザによって前もってセットアップされている。）。
【００４７】
ハードウェア・リソースの独立したシステムの利用可能性は、異なるタイプのプロファイリング・ジョブが独立して実行されることを可能にする。これは、例えば、マルチコア・コンピューティング、対称型マルチプロセッシング、分散コンピューティング、クラスタ・コンピューティング、グリッド・コンピューティング及び／又はベクトル／プロセッシングを含む多重並列プロセッシングのプロファイリングを更に含む。
【００４８】
ハードウェア・リソースの独立したシステムは、ハードウェア・リソースの他のシステムから独立しているハードウェア・リソースのシステムであると考えられる。“独立した（independent）”とは、例えば、それらが同じプロセッサを共有せず、あるいは、例えば、プロセッシング、全記憶階層、ネットワーク通信、記憶、入出力動作、などを含む、いずれかの他のコンピューティング・リソースへの如何なるアクセス権も侵害しないことを意味する。
【００４９】
ジョブは、プロファイリング実行要件の組及び、ハードウェア・リソースのどのシステムでプロファイリングが実行されるかの表示に基づき、１つ以上のアプリケーション・プロファイラと適合したプロファイリング対象であると考えられる。ジョブはまた、プロファイラ・システム・アプリケーション・エクスペリメントの組み合わせとして具現化され得る。更には、本発明の特定の実施形態では、ハードウェア・リソース及びプロファイリング対象は、個別的にプロファイリングされ得、これによって、ハードウェア・リソース又はプロファイリング対象の性能特性は、別々の出力として決定される。それらの別々のハードウェア・リソース及びプロファイリング対象のジョブは、プロファイラ・システム・エクスペリメントの組み合わせ及びプロファイラ・アプリケーション・エクスペリメントの組み合わせとして夫々具現化され得る。
【００５０】
実施形態は、請求項１乃至９のうちいずれかに記載のアプリケーション・プロファイリング・ジョブ管理システムと、上記のジョブ・スケジューラと、ハードウェア・リソースの１つ以上のシステムとを有し、ハードウェア・リソースのシステムの夫々がジョブ・スケジューラの命令に従ってアプリケーション・プロファイリング・タスクを実行するよう構成されるコンピューティング・システムを更に含み得る。
【００５１】
他の態様の実施形態は、ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理方法であって、前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成し、前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択し、前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始することを有するアプリケーション・プロファイリング・ジョブ管理方法を含む。
【００５２】
他の態様の実施形態は、コンピューティング・デバイスによって実行される場合に、該コンピューティング・デバイスに、実施形態の方法を実行させるコンピュータ・プログラムを含む。
【００５３】
そのようなコンピューティング・デバイスは、例えばクラウド・コンピューティング・インフラストラクチャのような、共有されるコンピューティング・ハードウェア・リソースのシステムのコントローラ又は管理システムであってよい。
【００５４】
これより、本発明の実施形態の詳細な説明が、添付の図面を参照して与えられる。
【図面の簡単な説明】
【００５５】
【図１】アプリケーション・プロファイリング・ジョブ管理システムの概略図である。
【図２】アプリケーション・プロファイリング・ジョブ管理システムによって実施されるプロセスの概要を示すフローチャートである。
【図３】プロファイリング・ジョブのセットアップ段階でユーザが利用可能なオプションを表す。
【図４】プロファイラ選択のためのプロシージャを説明するフローチャートである。
【図５】プロファイリング・ジョブのためのプロファイラのリストの編集を示すフローチャートである。
【図６】プロファイラ選択を説明するフローチャートである。
【図７】ジョブ・スケジューラによってジョブをスケジューリング及びディスパッチするプロセスを説明するフローチャートである。
【図８】実行されるプロセスのフローチャートである。
【図９】実施形態のハードウェア・アーキテクチャである。
【発明を実施するための形態】
【００５６】
図１は、アプリケーション・プロファイリング・ジョブ管理システム１０を表す。システム１０は、ユーザ入力受信部１２、プロファイラ仕様記憶部１６、プロファイラ照合部２０、ハードウェア管理部２２、及びジョブ・スケジューラ２６を含む。ユニット間の線は、互いの間の情報の伝送を表す。表されている以外のデータの他の交換も起こり得る。説明図は、後述されるように、特定のデータ交換を表す。
【００５７】
ユーザ入力受信部１２は、ユーザ入力情報１４を受け取るよう構成される。ユーザ入力情報１４は、プロファイリング対象及びプロファイリング実行要件を特定する。プロファイリング対象は、プロファイリングされるソフトウェア・アプリケーションを含む。
【００５８】
ユーザ入力受信部１２は、入力を受け取るよう構成され、そして、プロセッサによって実行されるソフトウェア・モジュールとして実装され得る。例えば、ユーザ入力受信部１２は、グラフィカル・ユーザ・インターフェイスのようなユーザ・インターフェイスであってよく、制限なしに、キーボード、ポインティング・デバイス、マウス又はタッチスクリーンを含む、如何なる適切な入力デバイスも介して、ユーザから入力を受け取ってよい。更には、入力は、ユーザ端末からネットワーク上でユーザ入力受信部１２へ提示されてよい。ユーザ入力情報１４は、ユーザ情報がグラフィカル・ユーザ・インターフェイスに入力されると、リアルタイムでユーザ入力受信部１２へ送られ得る。あるいは、それは、情報が送られる準備ができていることを示す信号がユーザから受信されるまで、コンピューティング環境において保持され得る。ユーザから信号が受信された時点で、入力されていたユーザ入力情報１４はユーザ入力受信部１２へ送られる。ユーザ入力情報１４を受け取ると、ユーザ入力受信部１２は、ユーザ入力情報１４が処理される前に、アプリケーション・プロファイリング・ジョブ管理システム１０がアクセス可能なコンピューティング環境上の第１の専用メモリ位置においてユーザ入力情報１４の全部を格納し得る。代替的に、ユーザ入力情報１４は、それがユーザ入力受信部１２によって受信されると、続けて処理されてよい。それにより、ユーザ入力情報１４の各片は、処理される前に第１の専用のメモリ位置において一時的に格納される。
【００５９】
ユーザ入力受信部１２は、構文解析（parsing）によってユーザ入力情報１４を処理してよい。例えば、ユーザ入力情報１４は、プロファイリングされるべきプロファイリング対象と、特定のプロファイリング・タスクを実施するためにユーザによって選択されたプロファイリング実行要件とを識別するよう解析され得る。プロファイリング対象及びプロファイリング実行要件は、次いで、ユーザ入力受信部１２によって抽出され、第１のメモリ位置とは別の第２の専用メモリ位置に格納され得る。代替的に、抽出された情報は、第１の専用メモリ位置に格納されてよく、それによって、前に受け取られた構文解析されていないユーザ入力情報１４を上書きする。構文解析された後、ユーザ入力情報１４は、プロファイラ照合部２０へ送信されてよく、あるいは、プロファイラ照合部２０によってアクセス可能である第１／第２の専用メモリ位置に格納されたままであってよい。ユーザ入力情報１４は、ユーザのプロファイリングの好み及び、プロファイリングを対象とした特定のプロファイリング対象の表示、の形をとってよい。ユーザ入力受信部はプロセッサによって実装されてよい。例えば、プロセッサは、ユーザ入力受信部の機能を提供するために、メモリに記憶されているプロセッシング命令を実行してよく、そして、処理の前、間、及び後にデータをメモリに記憶してよく、それにより、特定の実施において、ユーザ入力受信部はプロセッサ及びメモリとして実装される。
【００６０】
プロセッシング機能は、制限なしに、１つ以上の中央演算処理装置（ＣＰＵ；central  processing  unit(s））を含む、１つ又は複数のプロセッサとして実装され得る。メモリは、消去可能な電子プログラム可能リード・オンリー・メモリ（ＥＥＰＲＯＭ；Erasable  Electronic  Programmable  Read  Only  Memory）のような不揮発性記憶ユニット又はランダム・アクセス・メモリ（ＲＡＭ；random  access  memory）のような揮発性記憶ユニットを有してよい。
【００６１】
プロファイラ仕様記憶部１６は、アプリケーション・プロファイリング・ジョブ管理システム１０がアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様１８を記憶するよう構成される。
【００６２】
プロファイラ仕様記憶部１６は、ユーザによって選択されたプロファイリング対象のプロファイリングを実施するための対応するアプリケーション・プロファイラの複数のプロファイラ仕様１８を記憶する。プロファイラ仕様１８は、ユーザによって又は、例えば、システム管理者によって、プロファイラ仕様記憶部１６にインストールされてよい。仕様記憶部１６は、プロファイラ仕様１８の集合が記憶されるプロファイラ仕様ライブラリとして使用されてよく、それによって、常にユーザに様々なプロファイリング・オプションを提供する。プロファイラ仕様１８は、代替的に、インストールされるプロファイラ仕様１８の数が、特定のプロファイリング対象の詳細なプロファイリング解析を実施することになるプロファイラの数に制限されるような選択的な方法において、プロファイラ仕様記憶部１６にインストールされてよい。プロファイラ仕様記憶部１６は、後述されるように、適切なプロファイラ仕様１８が選択されることを可能にするプロファイラ照合部２０によって、アクセスされる。
【００６３】
プロファイラ仕様記憶部１６は、プロファイラ仕様１８を符号化するデータを記憶する揮発性又は不揮発性メモリを有してよい。プロファイラ仕様記憶部はまた、コントローラ又は管理ユニットを有してよい。コントローラ又は管理ユニットは、記憶されているプロセッシング命令を実行するプロセッサによって、実装され得る。
【００６４】
プロファイラは、コンピュータ・プログラム（コンピュータ・プログラムは、プロファイリング対象となるソフトウェア・アプリケーションの例である。）を動的に解析するよう構成されたプロセッシング命令（相互接続されたアルゴリズム及び／又はメッセージング／プロトコルを含む。）の集合から成るコンピュータ・ソフトウェアを有するソフトウェア・ツールである。プロファイラは、解析されるコンピュータ・プログラムの実行中に起こるプログラム事象のデータを収集し、制限なしに、メモリ使用量、実行速度、実行効率、関数呼び出しの頻度、ネットワーク・トポロジ及びＣＰＵアフィニティ（affinity）を含むパラメータを測定する。ＣＰＵアフィニティは、如何にしてプロセッシング命令が複数のプロセッサの間で分配されるかを測定する。それらの測定の結果は、次いで、プログラム最適化を支援することを目的としてユーザへ供給される。実行中の特定のトリガ事象は、個のとりが事象を表すメッセージをプロファイラによって生成させ、ログ（すなわち、プロファイリング情報を記録するテキスト・ファイル又は同等物）に加えさせ得る。
【００６５】
プロファイラ照合部２０は、複数のアプリケーション・プロファイラのうちのどれが特定されたプロファイリング実行要件を満足するかを、各々のプロファイラ仕様１８に基づき決定し、特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、１つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成される。夫々のアプリケーション・プロファイリング・タスクは、複数のアプリケーション・プロファイラの中のそのアプリケーション・プロファイラ、及びプロファイリング対象を特定する。
【００６６】
プロファイラ照合部２０は、ユーザ入力受信部において格納されている構文解析されたユーザ入力情報１４と、仕様記憶部１６において記憶されている複数のプロファイラ仕様１８とにアクセスする。構文解析されたユーザ入力情報１４及びプロファイラ仕様１８は、個々のプロファイリング実行要件を各プロファイラ仕様のパラメータと比較することで、プロファイラ照合部２０によって解析される。この比較に基づき、プロファイラ仕様１８のリスト、及びそれらの対応するアプリケーション・プロファイラは、構文解析の間に入力情報１４から抽出されたプロファイリング実行要件に合うプロファイリング特性を有しているものとして、プロファイラ照合部２０によって識別される。識別されたアプリケーション・プロファイラのこのリストは、その後に、アプリケーション・プロファイリング・タスクのリストを生成するためにプロファイラ照合部２０によって使用される。夫々のアプリケーション・プロファイリング・タスクは、特定のプロファイリング実行要件を満足するアプリケーション・プロファイラであると識別されたアプリケーション・プロファイラと、プロファイリングされるプロファイリング対象とを特定する。アプリケーション・プロファイリング・タスクのこのリストは、次いで、ジョブ・スケジューラ２６へ送られる。
【００６７】
プロファイラ照合部２０は、メモリに記憶されているプロセッシング命令を実行するプロセッサとして実装され得る機能ユニットである。命令は、プロセッサに、構文解析されたユーザ入力情報１４及びプロファイラ仕様１８に基づきアプリケーション・プロファイリング・タスクのリストを生成することを含め、プロファイラ照合に属する機能を実施させる。プロファイラ照合部２０は、データを処理の前、間及び後にメモリに記憶してよく、それにより、いくつかの実施において、プロファイラ照合部２０は、プロセッサ及びメモリとして実装される。
【００６８】
ハードウェア管理部２２は、アプリケーション・プロファイリング・タスクの夫々を実施するようハードウェア・リソース２４及び／又はプロセッサの１つ以上のシステムを選択するよう構成される。
【００６９】
ハードウェア管理部２２は、アプリケーション・プロファイリング・ジョブ管理システム１０によってアクセスされ得るハードウェア・リソース２４のシステムをモニタし、ハードウェア・リソース２４のどのシステムがアプリケーション・プロファイリング・ジョブ管理システム１０自体による又は他のソフトウェア・リソースによる他のプロセッシング・タスクによって占有されており、従って、プロファイラ照合部２０から受け取られたアプリケーション・プロファイリング・タスクを実行するために利用不可能であるかを識別する。ハードウェア・リソース２４のどのシステムがアプリケーション・プロファイリング・タスクを実行するのに利用可能であるかを識別した後、ハードウェア管理部２２は、ハードウェア・リソース２４のそれらの利用可能なシステムの位置、すなわち、物理アドレスへのポインタをジョブ・スケジューラ２６へ送る。ジョブ・スケジューラ２６では、ハードウェア・リソースの各システムがジョブ又はジョブの部分を割り当てられる。
【００７０】
ハードウェア管理部２２は、メモリに記憶されているプロセッシング命令を実行するプロセッサとして実装され得る機能ユニットである。命令は、プロセッサに、アプリケーション・プロファイリング・ジョブ管理システム１０が利用可能なハードウェア・リソース２４のシステムのプールから、ハードウェア・リソース２４のどのシステムが利用可能であるか、例えば、プロファイリング・タスクを実行しているかを識別させる。ハードウェア管理部２２は、データを処理の前、間及び後にメモリに記憶してよく、それにより、いくつかの実施において、ハードウェア管理部２２は、プロセッサ及びメモリとして実装される。
【００７１】
ジョブ・スケジューラ２６は、１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を、各々の選択されたハードウェア・リソースの１つ以上のシステムにより開始するよう構成される。
【００７２】
ジョブ・スケジューラ２６は、ハードウェア管理部２２からハードウェア・リソース２４の利用可能なシステムの位置を受け取り、ハードウェア・リソース２４の利用可能なシステムのうちの１つ以上を各アプリケーション・プロファイリング・タスクに割り当てて、単一の提示されたジョブにより生じる複数のアプリケーション・プロファイリング・タスクがハードウェア・リソース２４の１つ以上の割り当てられたシステムにわたって並列に実行され得るようにする。アプリケーション・プロファイリング・タスクは、ハードウェア・リソース２４の単一のシステムにわたって（ハードウェア・リソースの使用に関して衝突がないとする。）又はハードウェア・リソース２４の複数のシステムにわたって並列に実行され得る。更には、個々のアプリケーション・プロファイリング・プロセスは、いくつかのタスクとして独立して実行され得る複数の異なったメトリクスを測定するために必要とされることがあり得る。その場合に、それらの複数のタスクを並列に独立して実行することによる同時のプロシージャが可能であり、プロファイリング・プロセスを加速させる。
【００７３】
ジョブ・スケジューラ２６は、メモリに記憶されているプロセッシング命令を実行するプロセッサとして実装され得る機能ユニットである。命令は、プロセッサに、プロファイリング・タスクを実行するためにハードウェア・リソースの利用可能なシステムをプロファイリング・タスクに割り当てさせる。ジョブ・スケジューラ２６は、データを処理の前、間及び後にメモリに記憶してよく、それにより、いくつかの実施において、ジョブ・スケジューラ２６は、プロセッサ及びメモリとして実装される。
【００７４】
アプリケーション・プロファイリング・ジョブ管理システム１０は、ユーザ入力情報１４を読み出し確認することによって、プロファイリング・プロセスを開始し得る。このユーザ入力情報１４は、プロファイリングされる特定のプロファイリング対象と、アプリケーションが実行されるプロファイラ実行要件（例えば、データセット並びにスレッド及び／又はＭＰＩプロセスの数、など）を指示する。ユーザ入力情報１４は、プロファイラ実行要件を抽出するために構文解析される。それらのプロファイラ実行要件はプロファイラ仕様１８及びハードウェア・アーチファクト・マップと同様であるが、プロファイラ実行要件は一時的であり、従って、ファイルにおいて記憶される必要がない。この構文解析プロセスの間にエラーがある場合には、例えば、期待されない引数がユーザによって入力されるときに、エラーがユーザへ返され、構文解析プロセスは止まる。さもなければ、アプリケーション・プロファイリング・ジョブ管理システム１０は、実行のための適切なアプリケーション・プロファイラを選択することを続ける。
【００７５】
図２は、例えば図１で表されているもののような、アプリケーション・プロファイリング・ジョブ管理システム１０の実施形態の概略を表すフローチャートである。図２は、アプリケーション・プロファイリング・ジョブ管理システム１０によりソフトウェア・アプリケーションをプロファイリングすることの説明を表す。
【００７６】
ステップＳ２０２及びＳ２０４で、ユーザ入力情報１４がユーザ入力受信部１２によって受け取られ、そして、プロファイリングされるアプリケーションが選択される。アプリケーションは、プロファイリング対象に相当するソフトウェア・アプリケーションである。そして、選択されたプロファイリング対象のプロファイリングを実行するための所望のプロファイリング実行要件が設定される。プロファイリング実行要件は、図３において更に説明される。ユーザは、例えば、ハードウェア・リソース２４の異なるシステムが選択されること、及び／又は異なるプロファイリング実行要件が適用されることを必要とし得る同じプロファイリング対象の異なるバージョン又はインスタンスを有してよい。従って、ステップＳ２０２及びＳ２０４は、アプリケーション・プロファイラが選択され実行される前に実施される。
【００７７】
プロファイリング実行オプションが設定され、プロファイリング対象が選択された後、自動プロファイリング・メカニズムがステップＳ２０６からＳ２０４の間に行われる。自動プロファイリング・メカニズムは、プロファイラ仕様記憶部１６、プロファイラ照合部２０、ハードウェア管理部２２及びジョブ・スケジューラ２６を有するメカニズムであり、それらのコンポーネントの例となる実施である。自動プロファイリング・メカニズムは、ユーザによって設定された特定のプロファイリング実行要件を満足すると識別された適切なプロファイラを実行する。各アプリケーション・プロファイラの実行は、ステップＳ２０６で共通インターフェイスを介して実施される。共通インターフェイスは、ステップＳ２０８及びＳ２１０での適切に選択されたアプリケーション・プロファイラの夫々のロード及び実行と、ステップＳ２１２でオペレーティング・システムを準備及び構成することと、ステップＳ２１４でアプリケーション・プロファイラの実行のために必要とされるライブラリ及び／又はモジュールをロードすることとを助ける。更には、ステータス及びエラーコードは、各アプリケーション・プロファイラからの如何なる起こり得る好ましくない出力、挙動又はエラーも扱うために、アプリケーション・プロファイリング・ジョブ管理システム１０内で内部で定義されモニタされる。
【００７８】
ステップＳ２０６からＳ２１４の間の自動プロファイリング・メカニズムが完了すると、結果として現れるプロファイリング出力は、如何なる適切なコンピューティング環境でも、ステップＳ２１６で、一時的な場所に記憶される。コンピューティング環境は、アプリケーション・プロファイリング・ジョブ管理システム１０がアクセスを有しているハードウェア・リソース２４及び／又はプロセッサの如何なるシステムであってもよい。各プロファイリング・タスクは、順次に実行されてよく、それにより、ユーザ入力情報１４及び前のプロファイリング・タスクからの自動プロファイリング・メカニズム情報は、係属中のプロファイリング・タスクが実行されているときに、それらの係属中のプロファイリング・タスクによって上書きされる。ジョブ・スケジューラ２６がジョブをスケジューリングし終え、全てのスケジューリングされたジョブが実行されると、全部の結果が集められ、デフォルトの位置に又は、ユーザ入力情報１４がステップＳ２０２及びＳ２０４でユーザ入力受信部１２によって受け取られるときに決定され得る、ユーザによって選択された位置に、セーブされる。
【００７９】
図３は、アプリケーション・プロファイリング・ジョブ管理システム１０のセットアップ段階でユーザが利用可能な様々なユーザ入力オプション１４の一部を表す。ここで、セットアップ段階は、ユーザ入力情報１４がユーザ入力受信部１２、例えば、図３の共通インターフェイス３９へ送られることの実例である。ユーザ入力オプション１４の夫々は、次のように、４つのカテゴリに分類されるプロファイリング実行要件である：
１）ユーザ記憶オプション３２
このカテゴリに含まれ得るプロファイリング実行要件の例は、
生成されたプロファイリング出力が記憶されるべき親フォルダを特定すること、
夫々のプロファイリング・タスクについてのＩＤ名を特定すること、及び
プロファイリング・タスクの組についてのＩＤ名を特定すること
を含む。
２）アプリケーションオプション３４
このカテゴリに含まれ得るプロファイリング実行要件の例は、
目前にあるプロファイリング対象の組に特有であるデータセット、引数のリスト及び使用されるパラメータを定義すること
を含む。
３）テクノロジオプション３６
このカテゴリに含まれ得るプロファイリング実行要件の例は、
プロファイリングの間に考慮される特定のＨＰＣテクノロジのためのプロセス、スレッド、タスク又はスケジューリングオプションの数の詳細を挙げること
を含む。考慮されるＨＰＣテクノロジのタイプは、例えば、メッセージ・パッシング・インターフェイス（ＭＰＩ；Message  Passing  Interface）（コンピュータ・クラスタのプロセッサ間の並列コンピューティング）又はオープン・マルチプロセッシング（Multi-Processing）（OpenMP）（共有メモリ（例えば、デュアル・コア）を備えたプロセッサ間の並列コンピューティング）を含んでよい。
４）実行オプション３８
このカテゴリに含まれ得るプロファイリング実行要件の例は、
ハードウェア・リソース２４の選択されたシステムの所望のプールにおいて如何にしてアプリケーションが実行されるべきかに関する詳細
を含む。例えば、分散及び／又は通信トポロジ、ＣＰＵノードの数、ＣＰＵアフィニティ及びキューイング・システム。
【００８０】
最初の構文解析段階の後、図４のＳ４０４〜Ｓ４１４によって表されるように、プロファイラ選択が行われる。図４は、プロファイラ選択プロセスを説明するフローチャートを表し、カテゴリ及びプロファイラ特徴の例を含む。プロファイラ選択は、プロファイラ照合部２０によって実施される処理の実例である。
【００８１】
プロファイラ選択は、実施されるプロファイリングのタイプの分類から開始する。分類プロセスはプロファイラ照合部２０によって実施され得、Ｓ４０４〜Ｓ４０６に表されるように、ユーザ入力情報１４によって特定されたプロファイリング実行要件を、プロファイラ特徴を夫々表す複数の要求値域に変換するよう変換部を構成する。夫々の要求値域は、Ｓ４０４によって表されるように、要件情報識別子によって特定される。ここで、‘TECH’、‘Threads’、‘MPIprocesses’及び“OpenMP  Tasks”は、要件情報識別子の例である。この分類プロセス内で要件情報識別子によって表されるカテゴリは、例えば、分散メモリ、共有メモリ、ハードウェア記述、ハードウェア・パフォーマンス・カウンタ、アクセラレータ、トレーシングなどを含むことができる。
【００８２】
それらの要件情報識別子が設定され、従って、カテゴリがＳ４０６で決定されると、それらは、Ｓ４０８で、プロファイラ照合部２０によってプロファイラ仕様１８と比較されてそれらと照合される。プロファイラ照合部２０は、ステップＳ４１０で、使用される可能性のあるプロファイラの適切なリストを識別する。これはまた、各アプリケーション・プロファイラ及びハードウェア・リソース２４の対応するシステムについての利用可能なライセンスと暗黙的に対比される。使用される可能性のあるプロファイラのこのリストは、プロファイラ照合部２０によって決定され、これによって、各々のプロファイラ仕様１８は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、特定されたプロファイリング実行要件と比較される。結果として、全ての利用可能なプロファイラのリストのための実行の順序がＳ４１２で得られる。
【００８３】
プロファイラ仕様（及びハードウェア・アーチファクト・マップ）は、ハードウェア・リソース２４の対象システムで実行される所与のアプリケーション・プロファイリング・タスクについての全ての必要とされる情報を含む異なったファイルとして実装される。プロファイラ記述は‘key-value’構造に従い、これによって、様々なプロファイラ特徴の夫々は、プロファイラ情報識別子によって識別され、各プロファイラ情報識別子は、対応するプロファイラ値域を有している。例えば、ＯｐｅｎＭＰ及びＭＰＩの両アプリケーションをプロファイリングすることができるプロファイラを記述するために、対応するプロファイラ記述子は次の行を含むことになる。  
TECH=[OpenMP,MPI]
ここで、キー（key）は‘TECH’によって表され、値（values）は‘OpenMP’及び‘MPI’によって表される。
【００８４】
同じプロファイラ構造は、次いで、例えば、特定のソフトウェア・アーチファクトのような従属ライブラリへのパスと、アプリケーション・プロファイラによって測定される異なる性能特徴とを含む、何らかの他の追加情報を記述するために続けられる。プロファイリング照合部２０は、次いで、どのプロファイラが特定のアプリケーション及びエクスペリメントをプロファイリングするために使用されるかを決定するために、要件情報識別子を読み出して、プロファイラ情報識別子と照合する。例えば、ＯｐｅｎＭＰ／ＭＰＩ複合アプリケーションの実行をプロファイリングする場合に、図４で示されるように、ユーザは、どれくらいのＯｐｅｎＭＰスレッド及びどれくらいのＭＰＩプロセスが、プロファイリング対象を実行するときに使用されるかを設定することを要求され得る。この情報は、何らかの他のユーザ入力情報１４とともに、モニタされ、プロファイラ照合部２０において要件情報識別子をプロファイラ情報識別子と比較するときに使用される。従って、この特定の場合において、アプリケーション・プロファイリング・ジョブ管理システム１０は、スレッド及びプロセスが使用されるべきであることを検出することになる。結果として、プロファイラ照合部２０は、ＯｐｅｎＭＰ／ＭＰＩの複合アプリケーションの要件情報識別子をプロファイリング・エクスペリメントに適用する。この要件情報識別子は、次いで、図４で示されるように、各プロファイラ仕様１８における対応するkey-valueと比較される。プロファイラ照合部２０は、次いで、ＯｐｅｎＭＰ及びＭＰＩの要求値域を有しているとして要件情報識別子を識別し、ＯｐｅｎＭＰ及びＭＰＩに適合する対応するプロファイリング値域を有しているプロファイラを探す。従って、プロファイラ照合部２０は、適合するアプリケーション・プロファイラを自動的に選択する。このプロセスは、全てのカテゴリを満足するプロファイラが選択されるまで、夫々の要件情報識別子について繰り返される。
【００８５】
実施形態はまた、各アプリケーション・プロファイラのための個別的なテンプレートに基づくドライバ・スクリプトを利用することによって、アプリケーション・プロファイラの夫々が容易に更新されることを可能にする。個別的なテンプレートに基づくドライバ・スクリプトは、アプリケーション・プロファイラ及び必要とされるソフトウェア・アーチファクトをロードし、プロファイラ照合部２０によってプロファイラ照合を実行し、ジョブ・スケジューラ２６によって実施されるプロファイリング・ジョブの実行を実施するのに必要とされる構成及び前提条件を決定する命令を提供するための明確な構造化フォーマットに従うので、新たに加えられたアプリケーション・プロファイラの夫々に特有の新しいテンプレートに基づくドライバ・スクリプトを単に生成することによって、ユーザのための利用可能なプロファイラのリストを拡張することも可能である。
【００８６】
図５は、図４のステップＳ４０８‘カテゴリを比較’を説明するフローチャートである。ステップＳ５０２で、変換部によってプロファイリング実行要件から変換された要件情報識別子（識別されたカテゴリとも呼ばれ得る。）が識別される。各プロファイラ仕様１８（プロファイラ記述子）は、ステップＳ５０４で、プロファイラ仕様記憶部１６からアクセスされ、ステップＳ５０６へ送られる。ステップＳ５０６で、プロファイラ仕様１８は、プロファイラ情報識別子を要件情報識別子と比較することによって、ユーザによって入力されたプロファイラ実行要件に対してチェックされる。ステップＳ５０８で、プロファイラ情報識別子（プロファイラ特徴と呼ばれ得る。）が要件情報識別子（カテゴリと呼ばれ得る。）と一致するか否かが判定される。プロファイラ情報識別子が要件情報識別子と一致しない場合には、その特定のプロファイラ情報識別子に対応するアプリケーション・プロファイラはステップＳ５１０で捨てられ、プロセスはステップＳ５０４へ戻る。プロファイラ情報識別子が要件情報識別子と一致する場合には、プロセスは、その特定のプロファイラが何らかの更なるプロファイラ情報識別子を有しているかどうかをチェックし、チェックされるべき更なるプロファイラ情報識別子が未だあるならば、プロセスはステップＳ５０６へ戻る。ステップＳ５１２で、チェックされるべき何らかの更なるプロファイラ情報識別子（特徴と呼ばれ得る。）が存在するか否かが判定される。チェックされるべき更なるプロファイラ情報識別子が存在しないとステップＳ５１２決定されるならば、プロセスはステップＳ５１４に続く。ステップＳ５１４で、特定のアプリケーション・プロファイラが、要件情報識別子を満足するアプリケーション・プロファイラのリストに加えられる。ステップＳ５１６で、チェックされるべき更なるプロファイラ仕様１８があるか否かに関してチェックが行われ、そうであるならば、プロセスはステップＳ５０４へ戻り、さもなければ、プロセスはステップＳ５２０で終了する。ステップＳ５２０で、要件情報識別子を満足するアプリケーション・プロファイラの最終リストが構成される。
【００８７】
図６は、プロファイラ選択が全体としてアプリケーション・プロファイリング・ジョブ管理システム１０の実施形態内で行われる場合を表すフローチャートである。図６のプロファイラ選択プロセスは、プロファイラ照合部２０の機能の実例である。
【００８８】
全ての利用可能なプロファイラのリストのための実行の順序は、各々のプロファイラ仕様１８において与えられる優先順位値に依存してよい。それらの優先順位値は、プロファイラ仕様１８に対する制御を有している者（例えば、システム管理者）によって決定される。従って、特定のプロファイラは、他よりも高い優先順位を有してよく、従って、最初に実行のために選択される。この優先順位は、動作要件（選好及び／又は性能）に起因するか、あるいは、適切なプロファイラの選択が正確な順序で実行されないとき（これは、プロファイラの相互依存性により起こり得る。）はいつでも生じるエラーに起因し得る。また、１つよりも多いプロファイラが同じ優先順位値を有している場合には、実行の順序は、ランダムに選択されるか、あるいは、例えば、アルファベット順で、プロファイラ記述子の読み順にデフォルト設定され得る。
【００８９】
ステップＳ６０２で、プロファイラ照合部２０によって実施されるプロファイラ選択プロセスが開始する。ユーザ入力情報１４（ユーザオプションと呼ばれ得る。）がステップＳ６０４で受け取られ、次いで、ステップＳ６０６へ送られる。ステップＳ６０６で、プロファイリング実行要件が評価される。ステップＳ６０８で、変換部は、プロファイリング実行要件を複数の要求値域に変換する。複数の要求値域はステップＳ６１０で受け取られる。その時点で、プロファイラ照合部２０は、要求値域を、各々のプロファイラ仕様１８からの全ての利用可能なプロファイラ情報識別子と比較する。ステップＳ６１２で、夫々の要件情報識別子についての識別された要求値域を満たすプロファイリング値域を有していると決定された全てのアプリケーション・プロファイラは、選択される。ステップＳ６１４で、ジョブ・スケジューラ２６は、１つ以上のアプリケーション・プロファイリング・タスクのための実行の順序を決定し、選択されたプロファイラのリストはステップＳ６１６で生成される。プロファイラのリストがステップＳ６１６で生成された後、アプリケーション・プロファイリング・タスクの初期リスト（プロファイラ・システム・実行ファイル・エクスペリメントの組み合わせと呼ばれ得る。）がステップＳ６１８で生成される。
【００９０】
プロファイラの結果として現れるリストは、次いで、ステップＳ６２０で、いずれか２つのアプリケーション・プロファイラが同じプロファイリング目的のために（すなわち、プロファイリング実行要件によって定義される同じカテゴリの情報を抽出するために）選択されているかどうかを判定するために、チェックされる。ステップＳ６２２で、２つのアプリケーション・プロファイラが同じプロファイリング目的のために選択されていると決定される場合には、アプリケーション・プロファイリング・ジョブ管理システム１０はステップＳ６２４に続く。ステップＳ６２４で、ユーザは、どのアプリケーション・プロファイラを使用すること好むかを決定するようプロンプトされる。ユーザは、その後に、ステップＳ６２６で、好ましいアプリケーション・プロファイラを選択し、１つ以上のアプリケーション・プロファイリング・タスクの最終のリストがステップＳ６２８で生成される。ステップＳ６３０で、プロファイラ選択プロセスは終了する。
【００９１】
図７は、ジョブ・スケジューラ２６によるジョブのスケジューリング及びハードウェア・リソース２４のシステムへのそれらのジョブのディスパッチングのプロセスを説明するフローチャートである。
【００９２】
ステップＳ７０２で、１つ以上のアプリケーション・プロファイリング・タスクを起動及び実行するプロセスが開始する。適切なアプリケーション・プロファイラのリストが生成されると、ジョブは、ステップＳ７０４で、全てのアプリケーション・プロファイリング・タスク（プロファイラ・システム・アプリケーション・エクスペリメントの組み合わせと呼ばれ得る。）について生成される。プロファイラ・システム・アプリケーション・エクスペリメントの組み合わせは、プロファイリング対象の適切なインスタンス、プロファイリング実行要件によって表されるエクスペリメント設定、及び／又は使用されるハードウェア・リソース２４の１つ以上のシステムを含んでよく、ユーザは、プロファイリング対象のみ、ハードウェア・リソース２４のシステムのみ、又はその両方をプロファイリングするよう選択することができる。ハードウェア照合部２２は、ステップＳ７０６で、複数のアプリケーション・プロファイリング・タスクを１つ以上のバッチ・ジョブに分けることを進める。各バッチ・ジョブは、相互作用すると識別されたアプリケーション・プロファイリング・タスクを含む。ハードウェア・リソースの独立したシステムがステップＳ７０８で選択され、ステップＳ７１０で、各バッチ・ジョブ（ジョブのリストと呼ばれ得る。）は、１つ以上のコンピューティング環境及び／又はプロセッサの中からハードウェア・リソースの独立したシステムのうちの１つ以上を割り当てられる。ステップＳ７１０でのバッチ・ジョブの最終のリストは、ユーザの最初の設定から生じるプロファイラ・システム・アプリケーション・エクスペリメントの全ての組み合わせを含む。それらのバッチ・ジョブは、使用されるハードウェア・リソース２４のシステムが動作において独立している場合について並列に実行され得る。さもなければ、それらの実行はシリアル化される。従って、アプリケーション・プロファイラの並列実行を実施するハードウェア・リソース２４のシステムは、プロファイリング・プロセスの結果に影響を及ぼし得る相互間の如何なる作用も有さない。例えば、バッチ・ジョブがシステムＡで実行されるべきであり、一方、他のバッチ・ジョブがシステムＢで実行されるべきであり、両方のシステムＡ及びＢがリソースを共有しない場合には、両バッチは、独立して並列に実行され得る。バッチ・ジョブは、ステップＳ７１１で実行のためにディスパッチされ、ステップＳ７２０からＳ７３２の間に実行される。これは、以下で、より詳細に説明される。アプリケーション・プロファイリング・ジョブ管理システム１０はステップＳ７１２でポーズし、全てのバッチ・ジョブが完了するのを待つ。完了すると、各バッチ・ジョブの結果はステップＳ７１４で収集され、ステップＳ７１６で記憶される。全ての完了したバッチ・ジョブの結果は、ステップＳ７１８で共通の位置に格納される。
【００９３】
アプリケーション・プロファイリング・タスクを実行するために、対応するハードウェア・アーチファクト・マップ（システム記述子）及びプロファイラ仕様（プロファイラ記述子）がステップＳ７２０及びＳ７２２で最初に読み出される。それらの記述子（すなわち、ハードウェア・アーチファクト・マップ及びプロファイラ仕様）は、特定されたソフトウェア・アーチファクト（従属ソフトウェア）の全ての必要な情報、要件及び位置を抽出することを可能にする。適切なアプリケーション・プロファイラは、次いで、ステップＳ７２４でロードされる。これはまた、必要とされるバイナリ及びスクリプトのための正確なパスを設定することを必要とし得る。アプリケーション・プロファイラの実行のための必要な設定及び要件は、従って、プロファイラの仕様（プロファイラの記述子）を介して構成される。同様に、ハードウェア・アーチファクト・マップ（システム記述子）を用いて、パス、オペレーティング・システム要件、並びに適切なモジュール及びライブラリのロードも、ステップＳ７２６及びＳ７２８で構成される。結果として、必要な環境変数も設定される。全ての設定が完了すると、プロファイラはステップＳ７３０で実行され、出力はＳ７３２で記憶される。ステップＳ７３４は、アプリケーション・プロファイリング・タスクの集合がハードウェア・リソース２４のシステムの特定のシステムにおいてバッチ・ジョブの部分として実行されることを表す。ステップＳ７３４で示されるハードウェア・リソースのシステムの数は、アプリケーション・プロファイリング・ジョブ管理システム１０によって処理されるバッチ・ジョブの数を示す。ハードウェア・リソースの各システムにおいて、それらのバッチ・ジョブは局所的に直列に実行され、各バッチ・ジョブの結果は、ステップＳ７１８で、大域的アクセスのために抽出され記憶される。
【００９４】
特定のアプリケーション・プロファイラが実行され得るより前に特定のソフトウェア・ライブラリをロードすることがしばしば必要であり、従って、そのようなソフトウェア・ライブラリのための適切な位置が、ハードウェア・リソースの関連するシステムにおいてそれらを見つけるために構成されるべきである。それらのライブラリ、及び／又は何らかの他のソフトウェアは、プロファイラに従属すると見なされる（すなわち、特定のソフトウェア・アーチファクト）。それらのライブラリの位置は、各ハードウェア・アーチファクト・マップにおいて記憶され、ハードウェア・リソースの各システムは、異なる位置に記憶された同じライブラリを有し得る。結果として、ハードウェア・アーチファクト・マップ（システム記述子）は、シームレスな様態でそれらの特定のソフトウェア・アーチファクト（従属ライブラリ）の位置を抽出するために使用される。
【００９５】
プロファイラ仕様（プロファイラ記述子）の夫々は、アプリケーション・プロファイラがアプリケーションから測定及び抽出することができる様々な特徴を含む。プロファイラ仕様（プロファイラ記述子）はまた、アプリケーション・プロファイラ情報識別子、アプリケーション・プロファイラの使用のためのメカニズム、及びユーザによって供給される要件情報識別子とアプリケーションプロファイルとを照合する方法の詳細、に関する情報を含む。加えて、プロファイラ仕様（プロファイラ記述子）はまた、プロファイラが従属するあらゆるライブラリ又はソフトウェアの片（特定のソフトウェア・アーチファクト）へのパスを含み、従って、必要とされる場合に如何なる特定のソフトウェア・アーチファクト（従属ソフトウェア）も見つけることをアプリケーション・プロファイラに可能にする。
【００９６】
図８は、アプリケーション・プロファイラの選択、ジョブのスケジューリング及びジョブのディスパッチングのためのプロセス全体の実施形態を説明するフローチャートであり、アプリケーション・プロファイリング・ジョブ管理システム１０によって実施される自動プロファイリング・プロセス全体の概要を示す。
【００９７】
図８の部分８０２乃至８１２は、構文解析のためにユーザ入力受信部１２へ送られるユーザ入力情報１４としてユーザが利用可能な基本オプション及び編集可能オプションの例を表す。ユーザ入力情報１４の基本オプションは、ユーザオプション８０２、アプリケーションオプション８０４、テクノロジオプション８０６、及び実行オプション８０８を含む。ユーザ入力情報１４の編集可能オプションは、詳細オプション（advanced  options）記述子８１０及び特別キュー・スクリプト記述子８１２を含む。
【００９８】
図８のステップＳ８１４は、アプリケーション・プロファイリング・ジョブ管理システムのプロセスの開始を表し、ユーザ入力情報１４が読み出され、構文解析プロセスの間にステップＳ８１６で確認される。８２０にあるプロファイラ仕様１８は、次いで、プロファイリング対象のプロファイリングを実行するよう適切なプロファイラを選択するために、ステップＳ８１８でプロファイラ照合部２０によってアクセスされる。その後に、ジョブのリストがステップＳ８２２で生成され、ステップＳ８２４で共通インターフェイスを介してジョブ・スケジューラ２６へ送られる。ジョブ・スケジューラ２６は、ステップＳ８２６でジョブのリストをスケジューリングすることを進める。その後に、ジョブ・スケジューラ２６は、８２８にある、アプリケーション・プロファイリング・ジョブ管理システム１０が利用可能なハードウェア・リソース２４のシステムのプールに基づき、各ジョブをディスパッチする。最後に、夫々の完了されたジョブの結果はステップＳ８３０で記憶され、プロセスはステップＳ８３２で終了する。８２０にある、利用可能なアプリケーション・プロファイラのプール、及び８２８にある、ハードウェア・リソースのシステムは、システム管理者によって設定可能であってよい。
【００９９】
具体的な実施形態において、ＨＰＣプログラマは、行列どうしの乗算のアルゴリズム（matrix-matrix  multiplication  algorithm）のための複合ＯｐｅｎＭＰ−ＭＰＩ並列化を用いて、ソフトウェア・アプリケーションを有するプロファイリング対象であるＣ＋＋コードを開発した。プログラマは、このプロファイリング対象を、その性能に関する完全な報告を得るために、プロファイリングしたいと望む。プログラムはまた、ＣＰＵ情報、メモリサイズ及びタイプ、キャッシュ及びトランスレーション・ルックアサイド・バッファ（ＴＬＢ；Translation  Lookaside  Buffer）レベル、並びにインストールされるライブラリのようなハードウェア及びソフトウェアの詳細を含め、アプリケーションが実行されているハードウェア・リソース２４のシステムに関する情報を得たいと望む。この全ての情報を抽出することは、異なるプロファイリング及びオペレーティング・システムのツールを提供するようユーザに求め、それらを適切に使用する方法に関するスティープ・ラーニング・プロセスを通常は伴う。
【０１００】
このシナリオにおいて、ＨＰＣプログラマは、ｏｍｐＰのようなＯｐｅｎＭＰアプリケーション・プロファイラ、例えばＩＰＭのようなＭＰＩアプリケーション・プロファイラ、例えばＰｅｒｆＳｕｉｔｅのような、複数のハードウェア・パフォーマンス・カウンタを読み出すアプリケーション・プロファイラを用いて、プロファイリング対象をプロファイリングしたいと望む。その上、プログラマは、例えばＨＷＬＯＣ、ｐｓｉｎｖ（ＰｅｒｆＳｕｉｔｅから）のようなハードウェア及びソフトウェア情報（特定のソフトウェア・アーチファクト）を抽出し、基礎をなすコンピューティング・システムのＣＰＵに関する情報を含む、例えば／ｐｒｏｃ／ｃｐｕｉｎｆｏのような、何らかのシステムファイルからのデータを読み出すために、何らかのオペレーティング・システム・コマンドを使用する必要があり得る。
【０１０１】
実施形態へのアクセスがないと、ＨＰＣプログラマは、如何にして夫々のプロファイリング・テクノロジを使用してそれらを別々に実行するかを学習する必要がある。代わりに、実施形態を用いれば、ＨＰＣプログラマは、次のように、ステップにおいてユーザ入力情報１４をユーザ入力受信部１２へ送るために単一のコマンドを使用しさえすればよい。
【数１】
2018026114.tif 000003
【０１０２】
この具体的な実施形態では、このコマンドは、１０００×１０００の行列どうしの乗算を実行して８つのＭＰＩプロセス及び４つのＯｐｅｎＭＰスレッドをプロセスごとに起動し、一方で、エクスペリメントのためのラベル及び結果として現れるプロファイリング・データを記憶する位置を設定する。従って、アプリケーションは、ｏｍＰ、ＩＰＭ、及びＰｅｒｆＳｕｉｔｅによってプロファイリングされ、システムに関する情報は、ＨＷＬＯＣ、ｐｓｉｎｖを実行し且つ／ｐｒｏｃ／ｃｐｕｉｎｆｏを読み出すことによって、抽出される。
【０１０３】
結果として、プロファイリング・データは、夫々のジョブについて別々のフォルダを含むフォルダ‘ｅｘｐｅｒｉｍｅｎｔ／ｒｅｓｕｌｔｓ’に格納される。このフォルダは、プロファイリング対象の完全且つ包括的なプロファイルとともに、ハードウェア・リソース２４の基礎をなすシステムを得るための必要な情報を含む。
【０１０４】
図９は、本発明を具現化し、且つ、実施形態の方法を実装するために使用され得る、例えばアプリケーション・プロファイリング・ジョブ管理システムのような、コンピューティング・デバイスのブロック図である。コンピューティング・デバイスは、プロセッサ９９３及びメモリ９９４を有する。任意に、コンピューティング・デバイスはまた、他のコンピューティング・デバイスとの、例えば、本発明の実施形態の他のコンピューティング・デバイスとの、通信のためのネットワーク・インターフェイス９９７を含む。
【０１０５】
例えば、実施形態は、そのようなコンピューティング・デバイスのネットワークから成ってよい。任意に、コンピューティング・デバイスはまた、キーボード及びマウスのような１つ以上の入力メカニズム９９６と、１つ以上のモニタのような表示ユニット９９５とを含む。コンポーネントは、バス９９２を介して互いへ接続可能である。
【０１０６】
メモリ９９４は、コンピュータ可読媒体を含んでよい。この語は、コンピュータ実行可能命令を運ぶよう構成されるか又はデータ構造を記憶している単一の媒体又は複数の媒体（例えば、中央集権化型又は分散型データベース及び／又は関連するキャッシュ及びサーバ）を指し得る。コンピュータ実行可能命令は、例えば、汎用のコンピュータ、特別目的のコンピュータ、又は特別目的のプロセッシングデバイス（例えば、１つ以上のプロセッサ）によってアクセス可能であって、それらに１つ以上の機能及び動作を実施させる命令を含んでよい。よって、語「コンピュータ可読記憶媒体」はまた、マシンによる実行のために命令の組を記憶、符号化又は搬送することが可能であって、マシンに本開示の方法のいずれか１つ以上を実施させる如何なる媒体も含んでよい。語「コンピュータ可読記憶媒体」は、制限なしに、固体状態メモリ、光学媒体及び磁気媒体を含むと、然るべく考えられ得る。一例として、制限なしに、そのようなコンピュータ可読媒体は、ランダム・アクセス・メモリ（ＲＡＭ；Random  Access  Memory）、リード・オンリー・メモリ（ＲＯＭ；Read-Only  Memory）、電気的消去可能なプログラム可能リード・オンリー・メモリ（ＥＥＰＲＯＭ；Electrically  Erasable  Programmable  Read-Only  Memory）、コンパクト・ディスク・リード・オンリー・メモリ（ＣＤ−ＲＯＭ；Compact  Disc  Read-Only  Memory）若しくは他の光学ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュ・メモリ・デバイス（例えば、固体状態記憶デバイス）を含む非一時的なコンピュータ可読記憶媒体を含んでよい。
【０１０７】
プロセッサ９９３は、コンピューティング・デバイスを制御し、プロセッシング動作、例えば、本明細書及び特許請求の範囲で記載されているユーザ入力受信部１２、プロファイラ仕様記憶部１６、プロファイラ照合部２０、ハードウェア管理部２２及びジョブ・スケジューラ２６の多種多様な機能を実装するようメモリに記憶されているコードを実行すること、を実行するよう構成される。メモリ９９４は、プロセッサ９９３によって読み出され且つ書き込まれるデータを記憶する。本明細書で言及されているように、プロセッサは、例えばマイクロプロセッサ、中央演算処理装置、又は同様のもののような、１つ以上の汎用のプロセッシング・デバイスを含んでよい。プロセッサは、複数命令セットコンピューティング（ＣＩＳＣ；complex  instruction  set  computing）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ；reduced  instruction  set  computing）マイクロプロセッサ、超長命令語（ＶＬＩＷ；very  long  instruction  word）マイクロプロセッサ、又は他の命令セットを実装するプロセッサ、あるいは、命令セットの組み合わせを実装するプロセッサを含んでよい。プロセッサはまた、特定用途向け集積回路（ＡＳＩＣ；application  specific  integrated  circuit）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ；field  programmable  gate  array）、デジタル信号プロセッサ（ＤＳＰ；digital  signal  processor）、ネットワーク・プロセッサ、又は同様のもののような、１つ以上の特別目的のプロセッシング・デバイスを含んでよい。１つ以上の実施形態において、プロセッサは、本明細書で説明されている動作及びステップを実施するための命令を実行するよう構成される。
【０１０８】
表示ユニット９９７は、コンピューティング・デバイスによって記憶されているデータの描写を表示してよく、ユーザとコンピューティング・デバイスに記憶されているプログラム及びデータとの間の相互作用を可能にするカーソル並びにダイアログ・ボックス及びスクリーンを更に表示してよい。入力メカニズム９９６は、データ及び命令をコンピューティング・デバイスへ入力することをユーザに可能にし得る。
【０１０９】
ネットワーク・インターフェイス（ネットワークＩ／Ｆ）９９７は、例えばインターネットのようなネットワークへ接続されてよく、他のそのようなコンピューティング・デバイスへネットワークを介して接続可能である。ネットワークＩ／Ｆ９９７は、ネットワークを介して他の装置から入力されるか又はそれへ出力されるデータを制御し得る。例えばマイクロホン、スピーカ、プリンタ、電源ユニット、ファン、ケース、スキャナ、トラックボール、などのような他の周辺機器が、コンピューティング・デバイスに含まれてよい。
【０１１０】
図１のユーザ入力受信部１２は、メモリ９９４に記憶されているプロセッシング命令（プログラム）を実行し且つデータ交換（data  exchange）によりデータを交換するプロセッサ９９３（又は複数のプロセッサ）であってよい。特に、プロセッサ９９３は、図２のステップＳ２０２及びＳ２０４で見られるように、特定のプロファイリング対象及びプロファイリング実行要件を含む１つ以上のプロファイリング・タスクを実行するための所望のユーザオプションを含むユーザ入力情報１４をデータ交換により受け取るプロセッシング命令を実行する。更には、プロセッサ９９３は、接続されている記憶ユニットにユーザ入力情報１４を記憶し、及び／又は構文解析による処理のためにユーザ入力受信部１２へユーザ入力情報１４をデータ交換により送るプロセッシング命令を実行してよい。
【０１１１】
図１のプロファイラ仕様記憶部１６は、メモリ９９４に記憶されているプロセッシング命令（プログラム）を実行し且つデータ交換によりデータを交換するプロセッサ９９３（又は複数のプロセッサ）であってよい。特に、プロセッサ９９３は、図４のステップＳ４０８で見られるように、各々のアプリケーション・プロファイラのためのプロファイリング値域を識別する複数のプロファイラ情報識別子を夫々が含むプロファイラ仕様１８をデータ交換により受け取るプロセッシング命令を実行する。更には、プロセッサ９９３は、接続されている記憶ユニットにプロファイラ仕様１８を記憶するプロセッシング命令を実行してよい。
【０１１２】
図１のプロファイラ照合部２０は、メモリ９９４に記憶されているプロセッシング命令（プログラム）を実行し且つデータ交換によりデータを交換するプロセッサ９９３（又は複数のプロセッサ）であってよい。特に、プロセッサ９９３は、図６のステップＳ６１０乃至Ｓ６１８で見られるように、ユーザ入力受信部１２及びプロファイラ仕様記憶部１６からユーザ入力情報１４及び選択されたプロファイラ仕様１８をデータ交換により受け取り、複数のアプリケーション・プロファイラのうちのどれが特定されたプロファイリング実行要件を満足するかを各々のプロファイラ仕様１８に基づき決定し、特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、１つ以上のアプリケーション・プロファイリング・タスクを生成するプロセッシング命令を実行する。更には、プロセッサ９９３は、接続されている記憶ユニットに１つ以上のプロファイリング・タスクのリストを記憶し、及び／又は１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を開始するよう１つ以上のプロファイリング・タスクをジョブ・スケジューラ２６へデータ交換により送るプロセッシング命令を実行してよい。
【０１１３】
図１のハードウェア管理部２２は、メモリ９９４に記憶されているプロセッシング命令（プログラム）を実行し且つデータ交換によりデータを交換するプロセッサ９９３（又は複数のプロセッサ）であってよい。特に、プロセッサ９９３は、図７のステップＳ７０７で見られるように、プロファイラ照合部２０から１つ以上のプロファイリング・タスクをデータ交換により受け取り、アプリケーション・プロファイリング・タスクの夫々を実行するようハードウェア・リソース２４及び／又はプロセッサの１つ以上のシステムを選択するプロセッシング命令を実行する。更には、プロセッサ９９３は、接続されている記憶ユニットに、アプリケーション・プロファイリング・タスクの夫々を実行するハードウェア・リソースの選択された１つ以上のシステムのリストを記憶するプロセッシング命令を実行してよい。
【０１１４】
図１のジョブ・スケジューラ２６は、メモリ９９４に記憶されているプロセッシング命令（プログラム）を実行し且つデータ交換によりデータを交換するプロセッサ９９３（又は複数のプロセッサ）であってよい。特に、プロセッサ９９３は、図７のステップＳ７１０及びＳ７１１で見られるように、ハードウェア管理部２２から、１つ以上のプロファイリング・タスクの夫々を実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムのリストをデータ交換により受け取り、ハードウェア・リソース２４の各々の選択された１つ以上のシステムにより１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を開始するプロセッシング命令を実行する。更には、プロセッサ９９３は、接続されている記憶ユニットにハードウェア・リソースの１つ以上のシステムのリストを記憶し、及び／又は実行のために１つ以上のプロファイリング・タスクをハードウェア・リソース２４の１つ以上のシステムへデータ交換に送るプロセッシング命令を実行してよい。
【０１１５】
データ交換は、ネットワークＩ／Ｆであってよく、あるいは、例えば、一般にアクセス可能な記憶場所を介するような、内部データ交換メカニズムであってよい。
【０１１６】
図１乃至９のアプリケーション・プロファイリング・ジョブ管理システムは、メモリ９９４に記憶されているプロセッシング命令（プログラム）を実行し且つデータ交換によりデータを交換するプロセッサ９９３（又は複数のプロセッサ）であってよい。特に、プロセッサ９９３は、図１のステップＳ２０２乃至Ｓ２１６で見られるように、ユーザ入力情報１４及びプロファイラ仕様１８をデータネットワークを経由して受け取り、ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するプロセッシング命令を実行する。更には、プロセッサ９９３は、接続されている記憶ユニットに１つ以上のアプリケーション・プロファイリング・タスクの結果を記憶するプロセッシング命令を実行してよい。
【０１１７】
本発明を具現化する方法は、図９で表されているもののようなコンピューティング・デバイスで実施されてよい。そのようなコンピューティング・デバイスは、図９で表されているあらゆるコンポーネントを有する必要はなく、それらのコンポーネントの一部から成ってよい。本発明を具現化する方法は、ネットワークを経由して１つ以上のデータ記憶サーバと通信する単一のコンピューティング・デバイスによって実施されてよい。コンピューティング・デバイスは、１つ以上のプロファイリング・タスクからの結果を記憶するデータ・ストレージ自体であってよい。
【０１１８】
本発明を具現化する方法は、互いに協働する複数のコンピューティング・デバイスによって実施されてよい。複数のコンピューティング・デバイスのうちの１つ以上は、１つ以上のプロファイリング・タスクからの結果の少なくとも一部を記憶するデータ記憶サーバであってよい。
【０１１９】
上記の実施形態に加えて、以下の付記を開示する。
（付記１）
ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムであって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有するアプリケーション・プロファイリング・ジョブ管理システム。
（付記２）
前記ハードウェア・リソースのシステム又は１つ以上のシステムの夫々について、該夫々のハードウェア・リソースのシステムによって記憶されている複数のソフトウェア・アーチファクトの夫々の位置を特定するハードウェア・アーチファクト・マップを記憶するよう構成されるハードウェア・アーチファクト・マップ記憶部と、
夫々のアプリケーション・プロファイリング・タスクについて、前記選択されたハードウェア・リソースのシステムがソフトウェア・アーチファクトの組の位置にアクセスするために前記記憶されているハードウェア・アーチファクト・マップを使用することによって、前記特定されたアプリケーション・プロファイラが依存状態を示すソフトウェア・アーチファクトの組をアセンブルするよう構成されるアセンブリ部と
を更に有する付記１に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記３）
前記ハードウェア・アーチファクト・マップの夫々は、夫々のハードウェア・リソースのシステムについて、前記１つ以上のアプリケーション・プロファイリング・タスクの実行のために前記アセンブリ部によってアセンブルされる当該ハードウェア・リソース上の前記特定されたソフトウェア・アーチファクトの位置を示すデータへリンクされた１つ以上のハードウェア記憶識別子を含む、
付記２に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記４）
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、複数のプロファイラ情報識別子を含み、該プロファイラ情報識別子の夫々は、当該アプリケーション・プロファイラから利用可能な性能測定を示し及び／又は前記特定されたアプリケーション・プロファイラによって必要とされる１つ以上のソフトウェア・アーチファクトを示すプロファイリング値域を識別する、
付記１に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記５）
前記プロファイラ照合部は、前記ユーザ入力情報によって特定される前記プロファイリング実行要件を複数の要求値域に変換するよう構成される変換部を含み、夫々の要求値域は、要件情報識別子によって識別され、夫々の要件情報識別子は、関連するプロファイラ情報識別子を有し、
前記プロファイラ照合部は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、夫々のプロファイラ仕様を前記特定されたプロファイリング実行要件と比較するよう構成される、
付記４に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記６）
前記プロファイラ照合部は、
各アプリケーション・プロファイラのプロファイラ仕様について、
関連するプロファイラ情報識別子が、各要件情報識別子についての前記識別された要求値域を満たすプロファイリング値域を識別するかどうかを判定することによって、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを決定するよう更に構成され、
前記アプリケーション・プロファイラは、前記識別された要求値域が満たされる場合に、前記特定されたプロファイリング実行要件を満足すると決定される、
付記４に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記７）
当該アプリケーション・プロファイリング・ジョブ管理システムは、前記アプリケーション・プロファイラを実行するハードウェア・リソースのシステムの構成を決定する命令についての構造化されたフォーマットを定義するアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートを記憶するよう構成され、
前記アセンブリ部は、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な前記複数のアプリケーション・プロファイラの夫々についてのアプリケーション・プロファイラ・ドライバ・スクリプトを記憶するよう構成されるドライバ・スクリプト記憶部を含み、前記アプリケーション・プロファイラ・ドライバ・スクリプトの夫々は、前記アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって定義される前記構造化されたフォーマットを実装する、
付記１に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記８）
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、アプリケーション・プロファイラのグループがアプリケーション・プロファイリング・タスクの実行中に実行されるべき順序を示す優先順位標識値を更に含み、これによって、より高い優先順位標識値が、より低い優先順位標識値より前に実行され、
前記優先順位標識値は、一部のアプリケーション・プロファイラが他よりも早い順序で実行されることを求めるアプリケーション・プロファイラのシーケンスの間の動作要件及び／又は相互依存性に基づき、前記優先順位標識値によって保持される値は、ユーザによって設定可能である、
付記４に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記９）
前記プロファイラ照合部は、該プロファイラ照合部が複数のアプリケーション・プロファイリング・タスクを決定する場合に、
前記複数のアプリケーション・プロファイリング・タスクをスキャンして相互作用を識別し、識別された相互作用するアプリケーション・プロファイリング・タスクを同じバッチ・ジョブにグループ化することで、前記複数のアプリケーション・プロファイリング・タスクを１つ以上のバッチ・ジョブに分け、
前記１つ以上のバッチ・ジョブの夫々のためにハードウェア・リソースの独立したシステムを選択することによって、前記アプリケーション・プロファイリング・タスクの夫々を実行するように、１つ以上のコンピューティング環境及びプロセッサからハードウェア・リソースの１つ以上のシステムを選択する
よう構成される、
付記７に記載のアプリケーション・プロファイリング・ジョブ管理システム。
（付記１０）
ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムを有し、
前記アプリケーション・プロファイリング・ジョブ管理システムは、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
前記アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有し、
前記ハードウェア・リソースの１つ以上のシステムを更に有し、該ハードウェア・リソースのシステムの夫々は、前記ジョブ・スケジューラの命令に従ってアプリケーション・プロファイリング・タスクを実行するよう構成される、
コンピューティング・システム。
（付記１１）
ソフトウェア・アプリケーションをプロファイリングする１つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理方法であって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成し、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択し、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始する
ことを有するアプリケーション・プロファイリング・ジョブ管理方法。
（付記１２）
コンピューティング・デバイスによって実行される場合に、該コンピューティング・デバイスに、
ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する１つ以上のアプリケーション・プロファイリング・タスクを生成し、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び／又はプロセッサの１つ以上のシステムを選択し、
前記１つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの１つ以上のシステムにより開始する
ことを有する方法を実行させるコンピュータ・プログラムを記憶している非一時的なコンピュータ可読記憶媒体。
【符号の説明】
【０１２０】
１０          アプリケーション・プロファイリング・ジョブ管理システム
１２          ユーザ入力受信部
１４          ユーザ入力情報
１６          プロファイラ仕様記憶部
１８          プロファイラ仕様
２０          プロファイラ照合部
２２          ハードウェア管理部
２４          ハードウェア・リソース
２６          ジョブ・スケジューラ
３２          ユーザ記憶オプション
３４，８０４  アプリケーションオプション
３６、８０６  テクノロジオプション
３８、８０８  実行オプション
３９          共通インターフェイス
８０２        ユーザオプション
８１０        詳細オプション記述子
８１２        特別キュー・スクリプト記述子
９９３        プロセッサ
９９４        メモリ
９９７        ネットワーク・インターフェイス
【図１】
2018026114.tif 000004
【図２】
2018026114.tif 000005
【図３】
2018026114.tif 000006
【図４】
2018026114.tif 000007
【図５】
2018026114.tif 000008
【図６】
2018026114.tif 000009
【図７】
2018026114.tif 000010
【図８】
2018026114.tif 000011
【図９】
2018026114.tif 000012