JP2018026114A - アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法 - Google Patents

アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法 Download PDF

Info

Publication number
JP2018026114A
JP2018026114A JP2017122021A JP2017122021A JP2018026114A JP 2018026114 A JP2018026114 A JP 2018026114A JP 2017122021 A JP2017122021 A JP 2017122021A JP 2017122021 A JP2017122021 A JP 2017122021A JP 2018026114 A JP2018026114 A JP 2018026114A
Authority
JP
Japan
Prior art keywords
application
profiling
profiler
execution
profilers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017122021A
Other languages
English (en)
Other versions
JP6939132B2 (ja
Inventor
アル−ジャロ・アハメド
Al-Jarro Ahmed
セルヒオ アルデーア・ロペス
Lopez Sergio Aldea
セルヒオ アルデーア・ロペス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2018026114A publication Critical patent/JP2018026114A/ja
Application granted granted Critical
Publication of JP6939132B2 publication Critical patent/JP6939132B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】アプリケーション・プロファイリング・タスクを構成及び開始するシステムを提供する。
【解決手段】システム10は、プロファイリング対象及びプロファイリング実行要件を特定する入力を受けるユーザ入力受信部と、プロファイラ仕様を記憶するプロファイラ仕様記憶部と、どのプロファイラがプロファイリング実行要件を満足するかをプロファイラ仕様に基づき決定し、決定された・プロファイラの夫々について、そのプロファイラ及びプロファイリング対象を特定するプロファイリング・タスクを生成するプロファイラ照合部と、プロファイリング・タスクを実行するハードウェア・リソースのシステムを選択するハードウェア管理部と、選択されたハードウェア・リソースのシステムによりプロファイリング・タスクの実行を開始するジョブ・スケジューラとを有する。
【選択図】図1

Description

本発明は、ソフトウェア・プロファイリングの分野に属し、特に、複数のプロファイラを利用してプロファイリング・タスクをスケジューリングするシステムに関係がある。
プロファイリング・テクノロジ・ソフトウェア・ツールは、コード及びソフトウェア・アプリケーションの実行を解析するために使用される。それらのツールは、通常は使用するのが容易でなく、それらの内部構造/機能に関する広範囲にわたる知識をしばしばユーザに求める。更に、ソフトウェア・アプリケーションの完全な/完ぺきな解析のために、異なるツール又はアプリケーション・プロファイラが通常は必要とされる。ユーザが利用可能な個別的なアプリケーション・プロファイラの夫々は、その操作に対する独特のインターフェイスを提供し、従って、その構成及び実行のために様々な専門知識及び様々なアプローチを必要とする。夫々のプロファイラの独自の動作特性により、プロファイラを構成及び実行するための、又は適切なプロファイラの選択のための動作の詳細に関する必要とされる学習プロセス及び知識は、通常は、それらの作業生産性に悪影響を及ぼし得るスティープ・ラーニング曲線(steep learning curve)にユーザを置く。
従って、プロファイリング・テクノロジの選択を操作する/含むようアプリケーション/プロファイラの実行を自動化し且つ/あるいはプロファイリング・プロセスをカスタマイズすることができるメカニズムの提供が、大いに有益である。
実施形態は、ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムであって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有するアプリケーション・プロファイリング・ジョブ管理システムを含む。
本発明の実施形態は、プロファイリング対象の性能を解析するためにアプリケーション・プロファイラを仕様及び適用する有効な、ユーザフレンドリな、カスタマイズ可能な且つ自動化されたメカニズムを提供する。そのような実施形態は、コンピューティング環境、アプリケーション・プロファイラ、及びそれらの実行を設定するユーザ入力受信部を提供する。ユーザ入力受信部は、コマンド・ライン又はGUIインターフェイスであってよく、例えば、必要とされ得る特定の従属するソフトウェア・アーチファクト(software artefacts)(すなわち、如何にしてアプリケーションがキュー・システム(queue system)にサブミットされるかを扱う具体的なスクリプト)をロードするための、如何なる特別なエントリも扱うことができる。結果として現れるユーザ入力情報は、適切なアプリケーション・プロファイラを実行することに関与する。ユーザ入力受信部の主たるタスクは、従って、ユーザによってセットされた所望のユーザ入力情報を、如何にして夫々のアプリケーション・プロファイラが最終的に呼び出されるかにかかわらず、夫々のアプリケーション・プロファイラのための適切なプロファイリング実行要件に変換することである。
夫々のアプリケーション・プロファイラは、夫々のプロファイラの実行に必要とされる細部がアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートにおいて個々にカプセル化されるので、独立したモジュールと見なされる。加えて、異なるプロファイリング実行要件が特定されるユーザ入力情報について、プロファイリング対象の性能のより詳細且つ包括的な理解を得ることを目的として、そのような実施形態は、そのようなプロセスを緩和してシームレスなものへと簡単化する使いやすく且つカスタマイズ可能なメカニズムを提供する。
独立したモジュールは、アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって記述される個別のアプリケーション・プロファイラであると見なされる。このテンプレートは、如何にして個別のアプリケーション・プロファイラがハードウェア・リソースのシステムで実行されるかを定義する命令の構造化されたフォーマットから成る。
本発明の実施形態は、アプリケーション・プロファイリングを実行するための自動の、トランスペアレントな、カスタマイズ可能な、且つ使いやすいシステムをコード開発者及びソフトウェア・ユーザに提供する。このテクノロジは、シームレスな様態でプロファイリング対象の多視点プロファイリングを実施することをユーザに可能にしながら、様々なアプリケーション・プロファイラの実行を構成し、作動し、開始するのに必要とされる詳細を統一するよう設計される。従って、高性能計算(HPC;High Performance Computing)アプリケーション及び実行ファイル(高性能計算は、信頼できる時宜にかなった様態で高度なアプリケーション・ソフトウェアを実行する並列処理の使用を含む。)を含むプロファイリング対象の包括的且つ完全なプロファイリングは、効率的且つ効果的である統一されたステップで実施され得る。
このアプリケーション・プロファイリング・ジョブ管理システムは、アプリケーション・プロファイラの実行を簡潔なプロセスへ緩和し、これによって、詳細なアプリケーション・プロファイラ・コンフィグレーション・オプションの範囲は、プロファイリング対象の包括的なプロファイリングを実施することをユーザに可能にする入力オプションの分かりやすい組に緩和される。
本発明の実施形態は、統合されたユーザ入力受信部に、複数のプロファイリング対象インスタンスに関して、1つのアプリケーション・プロファイラの実行又はアプリケーション・プロファイラの選択のための複数の異なるユーザ入力情報設定を供給することによって、プロファイリング対象の1よりも多いインタスタンスをプロファイリングすることをユーザに可能にする手段を提供する。そのような実施形態はまた、何らかのプロファイリング対象インスタンスの異なるバージョンがプロファイリングされるべきであるシナリオを考慮する実効的なメカニズムを提供する。それらの異なるプロファイリング対象インスタンスは、それらが実行される方法が様々であり得る。故に、異なるハードウェア・リソース設定及び/又はプロファイリング実行要件が、それらの各々のプロファイルを得る前に、インスタンスごとに適用される必要がある。プロファイリング対象の異なるインスタンスの数が増えるにつれて、プロファイリング・プロセスはますます完全なものとなる(これは、異なる環境設定、モジュール及びシステム・ライブラリがロードされて予め構成されることを必要とし得る。)。本発明の実施形態は、この関連するプロセスを、自動の、シームレスな且つトランスペアレントなプロセスへと緩和する。
更に、アプリケーション・プロファイラが使用されるべきであるハードウェア・リソースの同じシステムで既にコンパイルされているプロファイリング対象について、ハードウェア・リソースのシステムは、次いで、プロファイリング対象のバイナリファイルがハードウェア・リソースの対象システムでの実行に適合している限りは、バイナリ実行ファイルへのアクセスのみを必要とし、ソースコードへのアクセスは必要としない。
コンパイルされたプロファイリング対象は、コンピューティング・システムで実行されたことがあるプロファイリング対象と見なされる。これによって、コンパイル・ツールは、プロファイリング対象ソースコードを、コンピュータの中央演算処理装置(CPU;central processing unit)によって直接に実行されるマシン・コードに変換している。
本発明の実施形態の成果は、より広いHPC及びソフトウェア・プログラミング・コミュニティにとって有益であり、次のものを含む:
a)複数のプロファイリング実行要件を有する異なったアプリケーション・プロファイラによるアプリケーション・プロファイリングのための自動の且つカスタマイズ可能なメカニズム;
b)アプリケーション・プロファイラ又は複数のアプリケーション・プロファイラを用いてプロファイリング対象を実行するのに必要とされる全てのとり得る組み合わせを設定する時間のかかるタスクを解消するので、効率的且つ効果的な様態でのプロファイリング対象のプロファイリング;
c)対象のコンピューティング・システムだけでなく、夫々のアプリケーション・プロファイラを実行及び構成するのに必要とされる厄介な詳細を隠すので、ユーザにとってのトランスペアレンシー;
d)アプリケーション・プロファイラがシームレスな様態で実行され、一方、夫々のアプリケーション・プロファイリング・タスクの結果として現れるプロファイリング出力は記憶されて損なわれないままであるところの技術的詳細の抽象化;
e)複数のコンピューティング・システム及びアプリケーションを構成及び実行するのに必要とされる時間を大いに削減するとともに、必要とされるスティープ・ラーニング・プロセスを回避するプロファイリング対象の包括的且つ完全な特徴付け。
よくあることだが、単一のプロファイリング対象又は異なるプロファイリング対象の集合のいずれかをプロファイリングする場合に、広いユーザ知識が必要とされる。従って、本発明は、ユーザの既存の知識を大いに強化し、アプリケーション・プロファイラを選択及び提案するときにソフトウェア及びハードウェア両方のシステム(例えば、HPC)の有用性を高める。更には、実施形態は、ユーザが他の手段によっては知り得ない代替の適切なアプリケーション・プロファイラを提案するメカニズムを含み得る。
実施形態は、プロファイラ・システム・アプリケーション・エクスペリメントの種々の組み合わせのシームレスな実行を可能にし、そして、結果として現れる出力を、その次に結合されてその後に解析されるよう共通の記憶場所に集める。
ソフトウェア/ターゲット・アプリケーションは、1つ以上のコンピューティング環境及び/又はプロセッサで実行することができるソフトウェア/ターゲット・アプリケーションを実装するコードの少なくとも実行可能部分であると考えられる。
プロファイラ仕様は、プロファイラ記述子(profiler descriptor)とも呼ばれ得る。
ハードウェア・アーチファクト・マップは、システム記述子(system descriptor)と呼ばれ得る。
任意に、実施形態は、前記ハードウェア・リソースのシステム又は1つ以上のシステムの夫々について、該夫々のハードウェア・リソースのシステムによって記憶されている複数のソフトウェア・アーチファクトの夫々の位置を特定するハードウェア・アーチファクト・マップを記憶するよう構成されるハードウェア・アーチファクト・マップ記憶部と、
夫々のアプリケーション・プロファイリング・タスクについて、前記選択されたハードウェア・リソースのシステムがソフトウェア・アーチファクトの組の位置にアクセスするために前記記憶されているハードウェア・アーチファクト・マップを使用することによって、前記特定されたアプリケーション・プロファイラが依存状態を示すソフトウェア・アーチファクトの組をアセンブルするよう構成されるアセンブリ部とを更に有する。
ハードウェア・アーチファクト・マップは、ユーザ入力情報によって特定されるアプリケーション・プロファイリング・タスクを実行するためにアプリケーション・プロファイラによって必要とされる如何なるソフトウェア・アーチファクトも識別するメカニズムを提供し得る。それらの従属ソフトウェア・アーチファクトは、ハードウェア初期化を実施するコンフィグレーション・ライブラリ、リンカ・スクリプト、デバイス・ドライバ、オブジェクト・ファイル、バイナリ、スクリプト及び/又はブート・コードとして具現化され得る。
ハードウェア・アーチファクト・マップは、新しいアプリケーション・プロファイラのあらゆる新しいソフトウェア・アーチファクトのための経路を既存のハードウェア・アーチファクト・マップに加え、それによって、ハードウェア・リソースのシステムの必要とされる変更又は修正の範囲を制限することによって、更なるアプリケーション・プロファイラがアプリケーション・プロファイリング・ジョブ管理システムに組み込まれることを可能にする。更には、ハードウェア・アーチファクト・マップは、異なるアプリケーション・プロファイラ及び/又はプロファイリング対象インスタンスの全ての矛盾のない組み合わせのためのハードウェア・リソースのシステムにおけるアプリケーション・プロファイリング・タスクの実行を助ける。
アセンブリ部は、夫々のアプリケーション・プロファイリング・タスクを実行するためにアプリケーション・プロファイラによって必要とされる1つ以上のソフトウェア・アーチファクトをとり、それらを単一の実行可能ファイル、ライブラリ・ファイル又は他のオブジェクト・ファイルにまとめ得る。アセンブルすることは、ダイナミック・リンキングによって実施され得、これによって、標準のシステム・ライブラリが利用され、あるいは、システム・ライブラリが必要とされないスタティック・リンキングによって実施され得る。
更に、前記ハードウェア・アーチファクト・マップの夫々は、夫々のハードウェア・リソースのシステムについて、前記1つ以上のアプリケーション・プロファイリング・タスクの実行のために前記アセンブリ部によってアセンブルされる当該ハードウェア・リソース上の前記特定されたソフトウェア・アーチファクトの位置を示すデータへリンクされた1つ以上のハードウェア記憶識別子を含み得る。
ハードウェア・アーチファクト・マップによって識別されるソフトウェア・アーチファクトは、コンピュータ・システムの二次メモリ/不揮発性メモリ/リード・オンリー・メモリ(ROM;Read Only Memory)(例えば、PROM、EPROM及び/又はEEPROM)に位置し得る。ハードウェア記憶識別子は、メモリ・アドレス又はメモリ・アドレスへのパスとして具現化され得る。
ハードウェア・リソースのシステム上の全てのハードウェア記憶識別子を同じ従属ソフトウェア・アーチファクトへリンクすることによって、夫々の従属ソフトウェア・アーチファクトのただ1つのコピーがハードウェア・リソースのいずれか1つのシステムにおいて必要とされ、それによって、夫々の個別的なハードウェア・リソースに必要とされるメモリ容量は削減される。
任意に、前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、複数のプロファイラ情報識別子を含み、該プロファイラ情報識別子の夫々は、当該アプリケーション・プロファイラから利用可能な性能測定を示し及び/又は前記特定されたアプリケーション・プロファイラによって必要とされる1つ以上のソフトウェア・アーチファクトを示すプロファイリング値域を識別する。
プロファイラ情報識別子は、各々のアプリケーション・プロファイラの夫々に関連するプロファイリング能力(すなわち、性能測定)及び実行要件(すなわち、ソフトウェア・アーチファクト)のような特性を示すメカニズムを提供する。それらの特性は、アプリケーション・プロファイラが、該アプリケーション・プロファイラをアプリケーション・プロファイリング・ジョブ管理システムに再インストールする必要なしに、更新又は修正される限り、変更され得る。
プロファイラ情報識別子及びプロファイリング値域は、key-value pair(KVP)構造として具現化さえ得る。キー(key)は、プロファイラ情報識別子によって表され、値(value)は、プロファイリング値域によって表される。プロファイラ情報識別子及びプロファイリング値域のインスタンスは、name-value pair、field-value pair又はattribute-value pairであってよい。
前記特定されたアプリケーション・プロファイラによって必要とされる1つ以上のソフトウェア・アーチファクトは、夫々のアプリケーション・プロファイリング・タスクがアセンブリ部によってアセンブルされ、そしてハードウェア・リソースの1つ以上のシステムにおいて実行されるために必要とされるソフトウェア・アーチファクトを意味すると考えられる。
更に、前記プロファイラ照合部は、前記ユーザ入力情報によって特定される前記プロファイリング実行要件を複数の要求値域に変換するよう構成される変換部を更に含んでよく、夫々の要求値域は、要件情報識別子によって識別され、夫々の要件情報識別子は、関連するプロファイラ情報識別子を有し、前記プロファイラ照合部は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、夫々のプロファイラ仕様を前記特定されたプロファイリング実行要件と比較するよう構成される。
変換部は、夫々の要件情報識別子をプロファイラ情報識別子へマッピングすることによって、プロファイリング実行要件とプロファイラ仕様との直接的な比較のためのメカニズムを提供する。変換部は、要件情報識別子とプロファイラ情報識別子との間の関連付け又はマッピングの記憶されたリストと協調して動作するプロセッサによって具現化され得る。変換部によって実施される変換は、再分類、形式化、マッピング、又は再構築と呼ばれ得る。このように、変換部は、記憶された構造に従ってプロファイリング実行要件を再構築するよう構成されたユニットであると見なされ得る。記憶された構造は、プロファイラ仕様が記憶される構造である。
変換部は、ユーザ要求(プロファイリング実行要件によって表される。)がプロファイラの特徴(プロファイラ情報識別子及び各々の値によって表される。)と直接に比較されることを可能にする。プロファイラ照合部は、それによって、複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを判定するための直接に比較可能なデータセット(プロファイリング実行要件及びプロファイラ仕様)を供給される。
任意に、前記プロファイラ照合部は、各アプリケーション・プロファイラのプロファイラ仕様について、関連するプロファイラ情報識別子が、各要件情報識別子についての前記識別された要求値域を満たすプロファイリング値域を識別するかどうかを判定することによって、前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを決定するよう更に構成され、前記アプリケーション・プロファイラは、前記識別された要求値域が満たされる場合に、前記特定されたプロファイリング実行要件を満足すると決定される。
プロファイラ照合部は、反復プロセスにおいてプロファイリング値域を個々の要求値域と比較し、これによって、いずれか1つの要求値域がプロファイラ仕様において記憶されている複数のプロファイラ値域のいずれとも相関しない場合には、各々のプロファイラ仕様が捨てられる。
プロファイラ照合部は、夫々の要件情報識別子のための識別された要求値域の特定の割合以上を満たすアプリケーション・プロファイラのみがプロファイリング対象のプロファイリングを実施するために選択されることを確かにし、それによって、プロファイリング対象をプロファイリングするプロファイラの最も有効な配置をコンパイルする。
プロファイラ照合部は、選択されるアプリケーション・プロファイラのあらゆるライセンスを確認し、続いて、このライセンスに基づきアプリケーション・プロファイラの利用可能性を確かめるメカニズムを更に有し得る。
アプリケーション・プロファイラが選択されるために満足されるべきプロファイリング実行要件の特定の割合以上は、例えば、75%、9/10、及び/又はユーザ設定可能であってよい。すなわち、特定されたプロファイリング実行要件を満足するとアプリケーション・プロファイラが決定されるために満たされるべき識別された要求値域の特定された割合は、例えば、特定された割合(例えば、75%)、特定された数(例えば、9/10)、又は何らかの他の方法で特定された割合であり、この割合は、入力としてユーザによって特定され得る。
識別された要求値域を満たすプロファイリング範囲は、プロファイリング範囲が前記識別された要求値域内にあるか又はそれを満足することを意味すると考えられる。
任意に、当該アプリケーション・プロファイリング・ジョブ管理システムは、前記アプリケーション・プロファイラを実行するハードウェア・リソースのシステムの構成を決定する命令についての構造化されたフォーマットを定義するアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートを記憶するよう構成され、前記アセンブリ部は、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な前記複数のアプリケーション・プロファイラの夫々についてのアプリケーション・プロファイラ・ドライバ・スクリプトを記憶するよう構成されるドライバ・スクリプト記憶部を含み、前記アプリケーション・プロファイラ・ドライバ・スクリプトの夫々は、前記アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって定義される前記構造化されたフォーマットを実装する。
アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートは、異なるライブラリ及び実行可能なモジュールをロードすることによってプロファイリング対象のアプリケーション・プロファイリングを実施することに関与するハードウェア・リソースのシステムの構成を決定し、任意に、更には、結果として現れる出力が最終的にどこで収集及び記憶されるかを決定する。
アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートは、アプリケーション・プロファイリング・ジョブ管理システムのいずれかの他の特徴に作用して、どの時点でも使用され得るアプリケーション・プロファイラの数に対する如何なる制約も排除することなしに、追加のプロファイラがアプリケーション・プロファイリング・ジョブ管理システムに組み込まれることと、既存のアプリケーション・プロファイラが除かれることとを可能にするモジュラー・メカニズムであってよい。
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、アプリケーション・プロファイラのグループがアプリケーション・プロファイリング・タスクの実行中に実行されるべき順序を示す優先順位標識値を更に含み、これによって、より高い優先順位標識値が、より低い優先順位標識値より前に実行され、前記優先順位標識値は、一部のアプリケーション・プロファイラが他よりも早い順序で実行されることを求めるアプリケーション・プロファイラのシーケンスの間の動作要件及び/又は相互依存性に基づき、前記優先順位標識値によって保持される値は、ユーザによって設定可能である。
優先順位標識値を設定する場合にアプリケーション・プロファイラが実行される必要がある順序のような因子を考慮に入れることによって、ソフトウェア・コンフリクト・エラーは防がれ得る(例えば、2つのプログラムが同じメモリ・リソース及び/又はレジスタを争う場合)。更には、ユーザは、最も包括的且つ完全なプロファイリングを実施することができるアプリケーション・プロファイラが、よりニッチなアプリケーションを有している他のアプリケーション・プロファイラより前に実行されることを確かにするために、特定の順序でアプリケーション・プロファイラを実行するよう優先順位標識値を設定することを選択し得る。
優先順位標識は、夫々の個別的なアプリケーション・プロファイラへ、他のアプリケーション・プロファイラに対するその選好を示すために割り当てられた値であると考えられる。優先順位値は、例えば、1から100の値であってよく、選好の順序は、昇順又は降順のいずれかであってよい。優先順位値は、例えば、システム管理者によって、設定可能であってよい。
任意に、前記プロファイラ照合部は、該プロファイラ照合部が複数のアプリケーション・プロファイリング・タスクを決定する場合に、前記複数のアプリケーション・プロファイリング・タスクをスキャンして相互作用を識別し、識別された相互作用するアプリケーション・プロファイリング・タスクを同じバッチ・ジョブにグループ化することで、前記複数のアプリケーション・プロファイリング・タスクを1つ以上のバッチ・ジョブに分け、前記1つ以上のバッチ・ジョブの夫々のためにハードウェア・リソースの独立したシステムを選択することによって、前記アプリケーション・プロファイリング・タスクの夫々を実行するように、1つ以上のコンピューティング環境及びプロセッサからハードウェア・リソースの1つ以上のシステムを選択するよう構成される。
プロファイラ照合部は、従属コンピューティング環境で並列に実行されるようアプリケーション・プロファイリング・タスクのジョブのバッチを協調させる。実行されるべき複数のプロファイリング・タスクが存在する場合において、それらへの並列実行が使用され得る。この並列実行において、我々は、独立したプロファイリング・ジョブが独立したコンピューティング環境で実行され得ることを意味する。複数のプロファイリング・タスクを生成し得るプロファイリング・プロセスを分解することによって、並列にそれらを実行することでプロファイリング・プロセス全体を加速させることができる。プロファイリング・プロセスの並列化の他に、プロファイリングされるソフトウェアは、プロファイリング・ジョブにおいて維持される並列プロセッシングを含むことができる(これは、プロファイリングされるアプリケーションの予備的知識を有しており、如何なるプロファイリングも適用する前にユーザによって前もってセットアップされている。)。
ハードウェア・リソースの独立したシステムの利用可能性は、異なるタイプのプロファイリング・ジョブが独立して実行されることを可能にする。これは、例えば、マルチコア・コンピューティング、対称型マルチプロセッシング、分散コンピューティング、クラスタ・コンピューティング、グリッド・コンピューティング及び/又はベクトル/プロセッシングを含む多重並列プロセッシングのプロファイリングを更に含む。
ハードウェア・リソースの独立したシステムは、ハードウェア・リソースの他のシステムから独立しているハードウェア・リソースのシステムであると考えられる。“独立した(independent)”とは、例えば、それらが同じプロセッサを共有せず、あるいは、例えば、プロセッシング、全記憶階層、ネットワーク通信、記憶、入出力動作、などを含む、いずれかの他のコンピューティング・リソースへの如何なるアクセス権も侵害しないことを意味する。
ジョブは、プロファイリング実行要件の組及び、ハードウェア・リソースのどのシステムでプロファイリングが実行されるかの表示に基づき、1つ以上のアプリケーション・プロファイラと適合したプロファイリング対象であると考えられる。ジョブはまた、プロファイラ・システム・アプリケーション・エクスペリメントの組み合わせとして具現化され得る。更には、本発明の特定の実施形態では、ハードウェア・リソース及びプロファイリング対象は、個別的にプロファイリングされ得、これによって、ハードウェア・リソース又はプロファイリング対象の性能特性は、別々の出力として決定される。それらの別々のハードウェア・リソース及びプロファイリング対象のジョブは、プロファイラ・システム・エクスペリメントの組み合わせ及びプロファイラ・アプリケーション・エクスペリメントの組み合わせとして夫々具現化され得る。
実施形態は、請求項1乃至9のうちいずれかに記載のアプリケーション・プロファイリング・ジョブ管理システムと、上記のジョブ・スケジューラと、ハードウェア・リソースの1つ以上のシステムとを有し、ハードウェア・リソースのシステムの夫々がジョブ・スケジューラの命令に従ってアプリケーション・プロファイリング・タスクを実行するよう構成されるコンピューティング・システムを更に含み得る。
他の態様の実施形態は、ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理方法であって、前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成し、前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択し、前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始することを有するアプリケーション・プロファイリング・ジョブ管理方法を含む。
他の態様の実施形態は、コンピューティング・デバイスによって実行される場合に、該コンピューティング・デバイスに、実施形態の方法を実行させるコンピュータ・プログラムを含む。
そのようなコンピューティング・デバイスは、例えばクラウド・コンピューティング・インフラストラクチャのような、共有されるコンピューティング・ハードウェア・リソースのシステムのコントローラ又は管理システムであってよい。
これより、本発明の実施形態の詳細な説明が、添付の図面を参照して与えられる。
アプリケーション・プロファイリング・ジョブ管理システムの概略図である。 アプリケーション・プロファイリング・ジョブ管理システムによって実施されるプロセスの概要を示すフローチャートである。 プロファイリング・ジョブのセットアップ段階でユーザが利用可能なオプションを表す。 プロファイラ選択のためのプロシージャを説明するフローチャートである。 プロファイリング・ジョブのためのプロファイラのリストの編集を示すフローチャートである。 プロファイラ選択を説明するフローチャートである。 ジョブ・スケジューラによってジョブをスケジューリング及びディスパッチするプロセスを説明するフローチャートである。 実行されるプロセスのフローチャートである。 実施形態のハードウェア・アーキテクチャである。
図1は、アプリケーション・プロファイリング・ジョブ管理システム10を表す。システム10は、ユーザ入力受信部12、プロファイラ仕様記憶部16、プロファイラ照合部20、ハードウェア管理部22、及びジョブ・スケジューラ26を含む。ユニット間の線は、互いの間の情報の伝送を表す。表されている以外のデータの他の交換も起こり得る。説明図は、後述されるように、特定のデータ交換を表す。
ユーザ入力受信部12は、ユーザ入力情報14を受け取るよう構成される。ユーザ入力情報14は、プロファイリング対象及びプロファイリング実行要件を特定する。プロファイリング対象は、プロファイリングされるソフトウェア・アプリケーションを含む。
ユーザ入力受信部12は、入力を受け取るよう構成され、そして、プロセッサによって実行されるソフトウェア・モジュールとして実装され得る。例えば、ユーザ入力受信部12は、グラフィカル・ユーザ・インターフェイスのようなユーザ・インターフェイスであってよく、制限なしに、キーボード、ポインティング・デバイス、マウス又はタッチスクリーンを含む、如何なる適切な入力デバイスも介して、ユーザから入力を受け取ってよい。更には、入力は、ユーザ端末からネットワーク上でユーザ入力受信部12へ提示されてよい。ユーザ入力情報14は、ユーザ情報がグラフィカル・ユーザ・インターフェイスに入力されると、リアルタイムでユーザ入力受信部12へ送られ得る。あるいは、それは、情報が送られる準備ができていることを示す信号がユーザから受信されるまで、コンピューティング環境において保持され得る。ユーザから信号が受信された時点で、入力されていたユーザ入力情報14はユーザ入力受信部12へ送られる。ユーザ入力情報14を受け取ると、ユーザ入力受信部12は、ユーザ入力情報14が処理される前に、アプリケーション・プロファイリング・ジョブ管理システム10がアクセス可能なコンピューティング環境上の第1の専用メモリ位置においてユーザ入力情報14の全部を格納し得る。代替的に、ユーザ入力情報14は、それがユーザ入力受信部12によって受信されると、続けて処理されてよい。それにより、ユーザ入力情報14の各片は、処理される前に第1の専用のメモリ位置において一時的に格納される。
ユーザ入力受信部12は、構文解析(parsing)によってユーザ入力情報14を処理してよい。例えば、ユーザ入力情報14は、プロファイリングされるべきプロファイリング対象と、特定のプロファイリング・タスクを実施するためにユーザによって選択されたプロファイリング実行要件とを識別するよう解析され得る。プロファイリング対象及びプロファイリング実行要件は、次いで、ユーザ入力受信部12によって抽出され、第1のメモリ位置とは別の第2の専用メモリ位置に格納され得る。代替的に、抽出された情報は、第1の専用メモリ位置に格納されてよく、それによって、前に受け取られた構文解析されていないユーザ入力情報14を上書きする。構文解析された後、ユーザ入力情報14は、プロファイラ照合部20へ送信されてよく、あるいは、プロファイラ照合部20によってアクセス可能である第1/第2の専用メモリ位置に格納されたままであってよい。ユーザ入力情報14は、ユーザのプロファイリングの好み及び、プロファイリングを対象とした特定のプロファイリング対象の表示、の形をとってよい。ユーザ入力受信部はプロセッサによって実装されてよい。例えば、プロセッサは、ユーザ入力受信部の機能を提供するために、メモリに記憶されているプロセッシング命令を実行してよく、そして、処理の前、間、及び後にデータをメモリに記憶してよく、それにより、特定の実施において、ユーザ入力受信部はプロセッサ及びメモリとして実装される。
プロセッシング機能は、制限なしに、1つ以上の中央演算処理装置(CPU;central processing unit(s))を含む、1つ又は複数のプロセッサとして実装され得る。メモリは、消去可能な電子プログラム可能リード・オンリー・メモリ(EEPROM;Erasable Electronic Programmable Read Only Memory)のような不揮発性記憶ユニット又はランダム・アクセス・メモリ(RAM;random access memory)のような揮発性記憶ユニットを有してよい。
プロファイラ仕様記憶部16は、アプリケーション・プロファイリング・ジョブ管理システム10がアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様18を記憶するよう構成される。
プロファイラ仕様記憶部16は、ユーザによって選択されたプロファイリング対象のプロファイリングを実施するための対応するアプリケーション・プロファイラの複数のプロファイラ仕様18を記憶する。プロファイラ仕様18は、ユーザによって又は、例えば、システム管理者によって、プロファイラ仕様記憶部16にインストールされてよい。仕様記憶部16は、プロファイラ仕様18の集合が記憶されるプロファイラ仕様ライブラリとして使用されてよく、それによって、常にユーザに様々なプロファイリング・オプションを提供する。プロファイラ仕様18は、代替的に、インストールされるプロファイラ仕様18の数が、特定のプロファイリング対象の詳細なプロファイリング解析を実施することになるプロファイラの数に制限されるような選択的な方法において、プロファイラ仕様記憶部16にインストールされてよい。プロファイラ仕様記憶部16は、後述されるように、適切なプロファイラ仕様18が選択されることを可能にするプロファイラ照合部20によって、アクセスされる。
プロファイラ仕様記憶部16は、プロファイラ仕様18を符号化するデータを記憶する揮発性又は不揮発性メモリを有してよい。プロファイラ仕様記憶部はまた、コントローラ又は管理ユニットを有してよい。コントローラ又は管理ユニットは、記憶されているプロセッシング命令を実行するプロセッサによって、実装され得る。
プロファイラは、コンピュータ・プログラム(コンピュータ・プログラムは、プロファイリング対象となるソフトウェア・アプリケーションの例である。)を動的に解析するよう構成されたプロセッシング命令(相互接続されたアルゴリズム及び/又はメッセージング/プロトコルを含む。)の集合から成るコンピュータ・ソフトウェアを有するソフトウェア・ツールである。プロファイラは、解析されるコンピュータ・プログラムの実行中に起こるプログラム事象のデータを収集し、制限なしに、メモリ使用量、実行速度、実行効率、関数呼び出しの頻度、ネットワーク・トポロジ及びCPUアフィニティ(affinity)を含むパラメータを測定する。CPUアフィニティは、如何にしてプロセッシング命令が複数のプロセッサの間で分配されるかを測定する。それらの測定の結果は、次いで、プログラム最適化を支援することを目的としてユーザへ供給される。実行中の特定のトリガ事象は、個のとりが事象を表すメッセージをプロファイラによって生成させ、ログ(すなわち、プロファイリング情報を記録するテキスト・ファイル又は同等物)に加えさせ得る。
プロファイラ照合部20は、複数のアプリケーション・プロファイラのうちのどれが特定されたプロファイリング実行要件を満足するかを、各々のプロファイラ仕様18に基づき決定し、特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、1つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成される。夫々のアプリケーション・プロファイリング・タスクは、複数のアプリケーション・プロファイラの中のそのアプリケーション・プロファイラ、及びプロファイリング対象を特定する。
プロファイラ照合部20は、ユーザ入力受信部において格納されている構文解析されたユーザ入力情報14と、仕様記憶部16において記憶されている複数のプロファイラ仕様18とにアクセスする。構文解析されたユーザ入力情報14及びプロファイラ仕様18は、個々のプロファイリング実行要件を各プロファイラ仕様のパラメータと比較することで、プロファイラ照合部20によって解析される。この比較に基づき、プロファイラ仕様18のリスト、及びそれらの対応するアプリケーション・プロファイラは、構文解析の間に入力情報14から抽出されたプロファイリング実行要件に合うプロファイリング特性を有しているものとして、プロファイラ照合部20によって識別される。識別されたアプリケーション・プロファイラのこのリストは、その後に、アプリケーション・プロファイリング・タスクのリストを生成するためにプロファイラ照合部20によって使用される。夫々のアプリケーション・プロファイリング・タスクは、特定のプロファイリング実行要件を満足するアプリケーション・プロファイラであると識別されたアプリケーション・プロファイラと、プロファイリングされるプロファイリング対象とを特定する。アプリケーション・プロファイリング・タスクのこのリストは、次いで、ジョブ・スケジューラ26へ送られる。
プロファイラ照合部20は、メモリに記憶されているプロセッシング命令を実行するプロセッサとして実装され得る機能ユニットである。命令は、プロセッサに、構文解析されたユーザ入力情報14及びプロファイラ仕様18に基づきアプリケーション・プロファイリング・タスクのリストを生成することを含め、プロファイラ照合に属する機能を実施させる。プロファイラ照合部20は、データを処理の前、間及び後にメモリに記憶してよく、それにより、いくつかの実施において、プロファイラ照合部20は、プロセッサ及びメモリとして実装される。
ハードウェア管理部22は、アプリケーション・プロファイリング・タスクの夫々を実施するようハードウェア・リソース24及び/又はプロセッサの1つ以上のシステムを選択するよう構成される。
ハードウェア管理部22は、アプリケーション・プロファイリング・ジョブ管理システム10によってアクセスされ得るハードウェア・リソース24のシステムをモニタし、ハードウェア・リソース24のどのシステムがアプリケーション・プロファイリング・ジョブ管理システム10自体による又は他のソフトウェア・リソースによる他のプロセッシング・タスクによって占有されており、従って、プロファイラ照合部20から受け取られたアプリケーション・プロファイリング・タスクを実行するために利用不可能であるかを識別する。ハードウェア・リソース24のどのシステムがアプリケーション・プロファイリング・タスクを実行するのに利用可能であるかを識別した後、ハードウェア管理部22は、ハードウェア・リソース24のそれらの利用可能なシステムの位置、すなわち、物理アドレスへのポインタをジョブ・スケジューラ26へ送る。ジョブ・スケジューラ26では、ハードウェア・リソースの各システムがジョブ又はジョブの部分を割り当てられる。
ハードウェア管理部22は、メモリに記憶されているプロセッシング命令を実行するプロセッサとして実装され得る機能ユニットである。命令は、プロセッサに、アプリケーション・プロファイリング・ジョブ管理システム10が利用可能なハードウェア・リソース24のシステムのプールから、ハードウェア・リソース24のどのシステムが利用可能であるか、例えば、プロファイリング・タスクを実行しているかを識別させる。ハードウェア管理部22は、データを処理の前、間及び後にメモリに記憶してよく、それにより、いくつかの実施において、ハードウェア管理部22は、プロセッサ及びメモリとして実装される。
ジョブ・スケジューラ26は、1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を、各々の選択されたハードウェア・リソースの1つ以上のシステムにより開始するよう構成される。
ジョブ・スケジューラ26は、ハードウェア管理部22からハードウェア・リソース24の利用可能なシステムの位置を受け取り、ハードウェア・リソース24の利用可能なシステムのうちの1つ以上を各アプリケーション・プロファイリング・タスクに割り当てて、単一の提示されたジョブにより生じる複数のアプリケーション・プロファイリング・タスクがハードウェア・リソース24の1つ以上の割り当てられたシステムにわたって並列に実行され得るようにする。アプリケーション・プロファイリング・タスクは、ハードウェア・リソース24の単一のシステムにわたって(ハードウェア・リソースの使用に関して衝突がないとする。)又はハードウェア・リソース24の複数のシステムにわたって並列に実行され得る。更には、個々のアプリケーション・プロファイリング・プロセスは、いくつかのタスクとして独立して実行され得る複数の異なったメトリクスを測定するために必要とされることがあり得る。その場合に、それらの複数のタスクを並列に独立して実行することによる同時のプロシージャが可能であり、プロファイリング・プロセスを加速させる。
ジョブ・スケジューラ26は、メモリに記憶されているプロセッシング命令を実行するプロセッサとして実装され得る機能ユニットである。命令は、プロセッサに、プロファイリング・タスクを実行するためにハードウェア・リソースの利用可能なシステムをプロファイリング・タスクに割り当てさせる。ジョブ・スケジューラ26は、データを処理の前、間及び後にメモリに記憶してよく、それにより、いくつかの実施において、ジョブ・スケジューラ26は、プロセッサ及びメモリとして実装される。
アプリケーション・プロファイリング・ジョブ管理システム10は、ユーザ入力情報14を読み出し確認することによって、プロファイリング・プロセスを開始し得る。このユーザ入力情報14は、プロファイリングされる特定のプロファイリング対象と、アプリケーションが実行されるプロファイラ実行要件(例えば、データセット並びにスレッド及び/又はMPIプロセスの数、など)を指示する。ユーザ入力情報14は、プロファイラ実行要件を抽出するために構文解析される。それらのプロファイラ実行要件はプロファイラ仕様18及びハードウェア・アーチファクト・マップと同様であるが、プロファイラ実行要件は一時的であり、従って、ファイルにおいて記憶される必要がない。この構文解析プロセスの間にエラーがある場合には、例えば、期待されない引数がユーザによって入力されるときに、エラーがユーザへ返され、構文解析プロセスは止まる。さもなければ、アプリケーション・プロファイリング・ジョブ管理システム10は、実行のための適切なアプリケーション・プロファイラを選択することを続ける。
図2は、例えば図1で表されているもののような、アプリケーション・プロファイリング・ジョブ管理システム10の実施形態の概略を表すフローチャートである。図2は、アプリケーション・プロファイリング・ジョブ管理システム10によりソフトウェア・アプリケーションをプロファイリングすることの説明を表す。
ステップS202及びS204で、ユーザ入力情報14がユーザ入力受信部12によって受け取られ、そして、プロファイリングされるアプリケーションが選択される。アプリケーションは、プロファイリング対象に相当するソフトウェア・アプリケーションである。そして、選択されたプロファイリング対象のプロファイリングを実行するための所望のプロファイリング実行要件が設定される。プロファイリング実行要件は、図3において更に説明される。ユーザは、例えば、ハードウェア・リソース24の異なるシステムが選択されること、及び/又は異なるプロファイリング実行要件が適用されることを必要とし得る同じプロファイリング対象の異なるバージョン又はインスタンスを有してよい。従って、ステップS202及びS204は、アプリケーション・プロファイラが選択され実行される前に実施される。
プロファイリング実行オプションが設定され、プロファイリング対象が選択された後、自動プロファイリング・メカニズムがステップS206からS204の間に行われる。自動プロファイリング・メカニズムは、プロファイラ仕様記憶部16、プロファイラ照合部20、ハードウェア管理部22及びジョブ・スケジューラ26を有するメカニズムであり、それらのコンポーネントの例となる実施である。自動プロファイリング・メカニズムは、ユーザによって設定された特定のプロファイリング実行要件を満足すると識別された適切なプロファイラを実行する。各アプリケーション・プロファイラの実行は、ステップS206で共通インターフェイスを介して実施される。共通インターフェイスは、ステップS208及びS210での適切に選択されたアプリケーション・プロファイラの夫々のロード及び実行と、ステップS212でオペレーティング・システムを準備及び構成することと、ステップS214でアプリケーション・プロファイラの実行のために必要とされるライブラリ及び/又はモジュールをロードすることとを助ける。更には、ステータス及びエラーコードは、各アプリケーション・プロファイラからの如何なる起こり得る好ましくない出力、挙動又はエラーも扱うために、アプリケーション・プロファイリング・ジョブ管理システム10内で内部で定義されモニタされる。
ステップS206からS214の間の自動プロファイリング・メカニズムが完了すると、結果として現れるプロファイリング出力は、如何なる適切なコンピューティング環境でも、ステップS216で、一時的な場所に記憶される。コンピューティング環境は、アプリケーション・プロファイリング・ジョブ管理システム10がアクセスを有しているハードウェア・リソース24及び/又はプロセッサの如何なるシステムであってもよい。各プロファイリング・タスクは、順次に実行されてよく、それにより、ユーザ入力情報14及び前のプロファイリング・タスクからの自動プロファイリング・メカニズム情報は、係属中のプロファイリング・タスクが実行されているときに、それらの係属中のプロファイリング・タスクによって上書きされる。ジョブ・スケジューラ26がジョブをスケジューリングし終え、全てのスケジューリングされたジョブが実行されると、全部の結果が集められ、デフォルトの位置に又は、ユーザ入力情報14がステップS202及びS204でユーザ入力受信部12によって受け取られるときに決定され得る、ユーザによって選択された位置に、セーブされる。
図3は、アプリケーション・プロファイリング・ジョブ管理システム10のセットアップ段階でユーザが利用可能な様々なユーザ入力オプション14の一部を表す。ここで、セットアップ段階は、ユーザ入力情報14がユーザ入力受信部12、例えば、図3の共通インターフェイス39へ送られることの実例である。ユーザ入力オプション14の夫々は、次のように、4つのカテゴリに分類されるプロファイリング実行要件である:
1)ユーザ記憶オプション32
このカテゴリに含まれ得るプロファイリング実行要件の例は、
生成されたプロファイリング出力が記憶されるべき親フォルダを特定すること、
夫々のプロファイリング・タスクについてのID名を特定すること、及び
プロファイリング・タスクの組についてのID名を特定すること
を含む。
2)アプリケーションオプション34
このカテゴリに含まれ得るプロファイリング実行要件の例は、
目前にあるプロファイリング対象の組に特有であるデータセット、引数のリスト及び使用されるパラメータを定義すること
を含む。
3)テクノロジオプション36
このカテゴリに含まれ得るプロファイリング実行要件の例は、
プロファイリングの間に考慮される特定のHPCテクノロジのためのプロセス、スレッド、タスク又はスケジューリングオプションの数の詳細を挙げること
を含む。考慮されるHPCテクノロジのタイプは、例えば、メッセージ・パッシング・インターフェイス(MPI;Message Passing Interface)(コンピュータ・クラスタのプロセッサ間の並列コンピューティング)又はオープン・マルチプロセッシング(Multi-Processing)(OpenMP)(共有メモリ(例えば、デュアル・コア)を備えたプロセッサ間の並列コンピューティング)を含んでよい。
4)実行オプション38
このカテゴリに含まれ得るプロファイリング実行要件の例は、
ハードウェア・リソース24の選択されたシステムの所望のプールにおいて如何にしてアプリケーションが実行されるべきかに関する詳細
を含む。例えば、分散及び/又は通信トポロジ、CPUノードの数、CPUアフィニティ及びキューイング・システム。
最初の構文解析段階の後、図4のS404〜S414によって表されるように、プロファイラ選択が行われる。図4は、プロファイラ選択プロセスを説明するフローチャートを表し、カテゴリ及びプロファイラ特徴の例を含む。プロファイラ選択は、プロファイラ照合部20によって実施される処理の実例である。
プロファイラ選択は、実施されるプロファイリングのタイプの分類から開始する。分類プロセスはプロファイラ照合部20によって実施され得、S404〜S406に表されるように、ユーザ入力情報14によって特定されたプロファイリング実行要件を、プロファイラ特徴を夫々表す複数の要求値域に変換するよう変換部を構成する。夫々の要求値域は、S404によって表されるように、要件情報識別子によって特定される。ここで、‘TECH’、‘Threads’、‘MPIprocesses’及び“OpenMP Tasks”は、要件情報識別子の例である。この分類プロセス内で要件情報識別子によって表されるカテゴリは、例えば、分散メモリ、共有メモリ、ハードウェア記述、ハードウェア・パフォーマンス・カウンタ、アクセラレータ、トレーシングなどを含むことができる。
それらの要件情報識別子が設定され、従って、カテゴリがS406で決定されると、それらは、S408で、プロファイラ照合部20によってプロファイラ仕様18と比較されてそれらと照合される。プロファイラ照合部20は、ステップS410で、使用される可能性のあるプロファイラの適切なリストを識別する。これはまた、各アプリケーション・プロファイラ及びハードウェア・リソース24の対応するシステムについての利用可能なライセンスと暗黙的に対比される。使用される可能性のあるプロファイラのこのリストは、プロファイラ照合部20によって決定され、これによって、各々のプロファイラ仕様18は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、特定されたプロファイリング実行要件と比較される。結果として、全ての利用可能なプロファイラのリストのための実行の順序がS412で得られる。
プロファイラ仕様(及びハードウェア・アーチファクト・マップ)は、ハードウェア・リソース24の対象システムで実行される所与のアプリケーション・プロファイリング・タスクについての全ての必要とされる情報を含む異なったファイルとして実装される。プロファイラ記述は‘key-value’構造に従い、これによって、様々なプロファイラ特徴の夫々は、プロファイラ情報識別子によって識別され、各プロファイラ情報識別子は、対応するプロファイラ値域を有している。例えば、OpenMP及びMPIの両アプリケーションをプロファイリングすることができるプロファイラを記述するために、対応するプロファイラ記述子は次の行を含むことになる。

TECH=[OpenMP,MPI]

ここで、キー(key)は‘TECH’によって表され、値(values)は‘OpenMP’及び‘MPI’によって表される。
同じプロファイラ構造は、次いで、例えば、特定のソフトウェア・アーチファクトのような従属ライブラリへのパスと、アプリケーション・プロファイラによって測定される異なる性能特徴とを含む、何らかの他の追加情報を記述するために続けられる。プロファイリング照合部20は、次いで、どのプロファイラが特定のアプリケーション及びエクスペリメントをプロファイリングするために使用されるかを決定するために、要件情報識別子を読み出して、プロファイラ情報識別子と照合する。例えば、OpenMP/MPI複合アプリケーションの実行をプロファイリングする場合に、図4で示されるように、ユーザは、どれくらいのOpenMPスレッド及びどれくらいのMPIプロセスが、プロファイリング対象を実行するときに使用されるかを設定することを要求され得る。この情報は、何らかの他のユーザ入力情報14とともに、モニタされ、プロファイラ照合部20において要件情報識別子をプロファイラ情報識別子と比較するときに使用される。従って、この特定の場合において、アプリケーション・プロファイリング・ジョブ管理システム10は、スレッド及びプロセスが使用されるべきであることを検出することになる。結果として、プロファイラ照合部20は、OpenMP/MPIの複合アプリケーションの要件情報識別子をプロファイリング・エクスペリメントに適用する。この要件情報識別子は、次いで、図4で示されるように、各プロファイラ仕様18における対応するkey-valueと比較される。プロファイラ照合部20は、次いで、OpenMP及びMPIの要求値域を有しているとして要件情報識別子を識別し、OpenMP及びMPIに適合する対応するプロファイリング値域を有しているプロファイラを探す。従って、プロファイラ照合部20は、適合するアプリケーション・プロファイラを自動的に選択する。このプロセスは、全てのカテゴリを満足するプロファイラが選択されるまで、夫々の要件情報識別子について繰り返される。
実施形態はまた、各アプリケーション・プロファイラのための個別的なテンプレートに基づくドライバ・スクリプトを利用することによって、アプリケーション・プロファイラの夫々が容易に更新されることを可能にする。個別的なテンプレートに基づくドライバ・スクリプトは、アプリケーション・プロファイラ及び必要とされるソフトウェア・アーチファクトをロードし、プロファイラ照合部20によってプロファイラ照合を実行し、ジョブ・スケジューラ26によって実施されるプロファイリング・ジョブの実行を実施するのに必要とされる構成及び前提条件を決定する命令を提供するための明確な構造化フォーマットに従うので、新たに加えられたアプリケーション・プロファイラの夫々に特有の新しいテンプレートに基づくドライバ・スクリプトを単に生成することによって、ユーザのための利用可能なプロファイラのリストを拡張することも可能である。
図5は、図4のステップS408‘カテゴリを比較’を説明するフローチャートである。ステップS502で、変換部によってプロファイリング実行要件から変換された要件情報識別子(識別されたカテゴリとも呼ばれ得る。)が識別される。各プロファイラ仕様18(プロファイラ記述子)は、ステップS504で、プロファイラ仕様記憶部16からアクセスされ、ステップS506へ送られる。ステップS506で、プロファイラ仕様18は、プロファイラ情報識別子を要件情報識別子と比較することによって、ユーザによって入力されたプロファイラ実行要件に対してチェックされる。ステップS508で、プロファイラ情報識別子(プロファイラ特徴と呼ばれ得る。)が要件情報識別子(カテゴリと呼ばれ得る。)と一致するか否かが判定される。プロファイラ情報識別子が要件情報識別子と一致しない場合には、その特定のプロファイラ情報識別子に対応するアプリケーション・プロファイラはステップS510で捨てられ、プロセスはステップS504へ戻る。プロファイラ情報識別子が要件情報識別子と一致する場合には、プロセスは、その特定のプロファイラが何らかの更なるプロファイラ情報識別子を有しているかどうかをチェックし、チェックされるべき更なるプロファイラ情報識別子が未だあるならば、プロセスはステップS506へ戻る。ステップS512で、チェックされるべき何らかの更なるプロファイラ情報識別子(特徴と呼ばれ得る。)が存在するか否かが判定される。チェックされるべき更なるプロファイラ情報識別子が存在しないとステップS512決定されるならば、プロセスはステップS514に続く。ステップS514で、特定のアプリケーション・プロファイラが、要件情報識別子を満足するアプリケーション・プロファイラのリストに加えられる。ステップS516で、チェックされるべき更なるプロファイラ仕様18があるか否かに関してチェックが行われ、そうであるならば、プロセスはステップS504へ戻り、さもなければ、プロセスはステップS520で終了する。ステップS520で、要件情報識別子を満足するアプリケーション・プロファイラの最終リストが構成される。
図6は、プロファイラ選択が全体としてアプリケーション・プロファイリング・ジョブ管理システム10の実施形態内で行われる場合を表すフローチャートである。図6のプロファイラ選択プロセスは、プロファイラ照合部20の機能の実例である。
全ての利用可能なプロファイラのリストのための実行の順序は、各々のプロファイラ仕様18において与えられる優先順位値に依存してよい。それらの優先順位値は、プロファイラ仕様18に対する制御を有している者(例えば、システム管理者)によって決定される。従って、特定のプロファイラは、他よりも高い優先順位を有してよく、従って、最初に実行のために選択される。この優先順位は、動作要件(選好及び/又は性能)に起因するか、あるいは、適切なプロファイラの選択が正確な順序で実行されないとき(これは、プロファイラの相互依存性により起こり得る。)はいつでも生じるエラーに起因し得る。また、1つよりも多いプロファイラが同じ優先順位値を有している場合には、実行の順序は、ランダムに選択されるか、あるいは、例えば、アルファベット順で、プロファイラ記述子の読み順にデフォルト設定され得る。
ステップS602で、プロファイラ照合部20によって実施されるプロファイラ選択プロセスが開始する。ユーザ入力情報14(ユーザオプションと呼ばれ得る。)がステップS604で受け取られ、次いで、ステップS606へ送られる。ステップS606で、プロファイリング実行要件が評価される。ステップS608で、変換部は、プロファイリング実行要件を複数の要求値域に変換する。複数の要求値域はステップS610で受け取られる。その時点で、プロファイラ照合部20は、要求値域を、各々のプロファイラ仕様18からの全ての利用可能なプロファイラ情報識別子と比較する。ステップS612で、夫々の要件情報識別子についての識別された要求値域を満たすプロファイリング値域を有していると決定された全てのアプリケーション・プロファイラは、選択される。ステップS614で、ジョブ・スケジューラ26は、1つ以上のアプリケーション・プロファイリング・タスクのための実行の順序を決定し、選択されたプロファイラのリストはステップS616で生成される。プロファイラのリストがステップS616で生成された後、アプリケーション・プロファイリング・タスクの初期リスト(プロファイラ・システム・実行ファイル・エクスペリメントの組み合わせと呼ばれ得る。)がステップS618で生成される。
プロファイラの結果として現れるリストは、次いで、ステップS620で、いずれか2つのアプリケーション・プロファイラが同じプロファイリング目的のために(すなわち、プロファイリング実行要件によって定義される同じカテゴリの情報を抽出するために)選択されているかどうかを判定するために、チェックされる。ステップS622で、2つのアプリケーション・プロファイラが同じプロファイリング目的のために選択されていると決定される場合には、アプリケーション・プロファイリング・ジョブ管理システム10はステップS624に続く。ステップS624で、ユーザは、どのアプリケーション・プロファイラを使用すること好むかを決定するようプロンプトされる。ユーザは、その後に、ステップS626で、好ましいアプリケーション・プロファイラを選択し、1つ以上のアプリケーション・プロファイリング・タスクの最終のリストがステップS628で生成される。ステップS630で、プロファイラ選択プロセスは終了する。
図7は、ジョブ・スケジューラ26によるジョブのスケジューリング及びハードウェア・リソース24のシステムへのそれらのジョブのディスパッチングのプロセスを説明するフローチャートである。
ステップS702で、1つ以上のアプリケーション・プロファイリング・タスクを起動及び実行するプロセスが開始する。適切なアプリケーション・プロファイラのリストが生成されると、ジョブは、ステップS704で、全てのアプリケーション・プロファイリング・タスク(プロファイラ・システム・アプリケーション・エクスペリメントの組み合わせと呼ばれ得る。)について生成される。プロファイラ・システム・アプリケーション・エクスペリメントの組み合わせは、プロファイリング対象の適切なインスタンス、プロファイリング実行要件によって表されるエクスペリメント設定、及び/又は使用されるハードウェア・リソース24の1つ以上のシステムを含んでよく、ユーザは、プロファイリング対象のみ、ハードウェア・リソース24のシステムのみ、又はその両方をプロファイリングするよう選択することができる。ハードウェア照合部22は、ステップS706で、複数のアプリケーション・プロファイリング・タスクを1つ以上のバッチ・ジョブに分けることを進める。各バッチ・ジョブは、相互作用すると識別されたアプリケーション・プロファイリング・タスクを含む。ハードウェア・リソースの独立したシステムがステップS708で選択され、ステップS710で、各バッチ・ジョブ(ジョブのリストと呼ばれ得る。)は、1つ以上のコンピューティング環境及び/又はプロセッサの中からハードウェア・リソースの独立したシステムのうちの1つ以上を割り当てられる。ステップS710でのバッチ・ジョブの最終のリストは、ユーザの最初の設定から生じるプロファイラ・システム・アプリケーション・エクスペリメントの全ての組み合わせを含む。それらのバッチ・ジョブは、使用されるハードウェア・リソース24のシステムが動作において独立している場合について並列に実行され得る。さもなければ、それらの実行はシリアル化される。従って、アプリケーション・プロファイラの並列実行を実施するハードウェア・リソース24のシステムは、プロファイリング・プロセスの結果に影響を及ぼし得る相互間の如何なる作用も有さない。例えば、バッチ・ジョブがシステムAで実行されるべきであり、一方、他のバッチ・ジョブがシステムBで実行されるべきであり、両方のシステムA及びBがリソースを共有しない場合には、両バッチは、独立して並列に実行され得る。バッチ・ジョブは、ステップS711で実行のためにディスパッチされ、ステップS720からS732の間に実行される。これは、以下で、より詳細に説明される。アプリケーション・プロファイリング・ジョブ管理システム10はステップS712でポーズし、全てのバッチ・ジョブが完了するのを待つ。完了すると、各バッチ・ジョブの結果はステップS714で収集され、ステップS716で記憶される。全ての完了したバッチ・ジョブの結果は、ステップS718で共通の位置に格納される。
アプリケーション・プロファイリング・タスクを実行するために、対応するハードウェア・アーチファクト・マップ(システム記述子)及びプロファイラ仕様(プロファイラ記述子)がステップS720及びS722で最初に読み出される。それらの記述子(すなわち、ハードウェア・アーチファクト・マップ及びプロファイラ仕様)は、特定されたソフトウェア・アーチファクト(従属ソフトウェア)の全ての必要な情報、要件及び位置を抽出することを可能にする。適切なアプリケーション・プロファイラは、次いで、ステップS724でロードされる。これはまた、必要とされるバイナリ及びスクリプトのための正確なパスを設定することを必要とし得る。アプリケーション・プロファイラの実行のための必要な設定及び要件は、従って、プロファイラの仕様(プロファイラの記述子)を介して構成される。同様に、ハードウェア・アーチファクト・マップ(システム記述子)を用いて、パス、オペレーティング・システム要件、並びに適切なモジュール及びライブラリのロードも、ステップS726及びS728で構成される。結果として、必要な環境変数も設定される。全ての設定が完了すると、プロファイラはステップS730で実行され、出力はS732で記憶される。ステップS734は、アプリケーション・プロファイリング・タスクの集合がハードウェア・リソース24のシステムの特定のシステムにおいてバッチ・ジョブの部分として実行されることを表す。ステップS734で示されるハードウェア・リソースのシステムの数は、アプリケーション・プロファイリング・ジョブ管理システム10によって処理されるバッチ・ジョブの数を示す。ハードウェア・リソースの各システムにおいて、それらのバッチ・ジョブは局所的に直列に実行され、各バッチ・ジョブの結果は、ステップS718で、大域的アクセスのために抽出され記憶される。
特定のアプリケーション・プロファイラが実行され得るより前に特定のソフトウェア・ライブラリをロードすることがしばしば必要であり、従って、そのようなソフトウェア・ライブラリのための適切な位置が、ハードウェア・リソースの関連するシステムにおいてそれらを見つけるために構成されるべきである。それらのライブラリ、及び/又は何らかの他のソフトウェアは、プロファイラに従属すると見なされる(すなわち、特定のソフトウェア・アーチファクト)。それらのライブラリの位置は、各ハードウェア・アーチファクト・マップにおいて記憶され、ハードウェア・リソースの各システムは、異なる位置に記憶された同じライブラリを有し得る。結果として、ハードウェア・アーチファクト・マップ(システム記述子)は、シームレスな様態でそれらの特定のソフトウェア・アーチファクト(従属ライブラリ)の位置を抽出するために使用される。
プロファイラ仕様(プロファイラ記述子)の夫々は、アプリケーション・プロファイラがアプリケーションから測定及び抽出することができる様々な特徴を含む。プロファイラ仕様(プロファイラ記述子)はまた、アプリケーション・プロファイラ情報識別子、アプリケーション・プロファイラの使用のためのメカニズム、及びユーザによって供給される要件情報識別子とアプリケーションプロファイルとを照合する方法の詳細、に関する情報を含む。加えて、プロファイラ仕様(プロファイラ記述子)はまた、プロファイラが従属するあらゆるライブラリ又はソフトウェアの片(特定のソフトウェア・アーチファクト)へのパスを含み、従って、必要とされる場合に如何なる特定のソフトウェア・アーチファクト(従属ソフトウェア)も見つけることをアプリケーション・プロファイラに可能にする。
図8は、アプリケーション・プロファイラの選択、ジョブのスケジューリング及びジョブのディスパッチングのためのプロセス全体の実施形態を説明するフローチャートであり、アプリケーション・プロファイリング・ジョブ管理システム10によって実施される自動プロファイリング・プロセス全体の概要を示す。
図8の部分802乃至812は、構文解析のためにユーザ入力受信部12へ送られるユーザ入力情報14としてユーザが利用可能な基本オプション及び編集可能オプションの例を表す。ユーザ入力情報14の基本オプションは、ユーザオプション802、アプリケーションオプション804、テクノロジオプション806、及び実行オプション808を含む。ユーザ入力情報14の編集可能オプションは、詳細オプション(advanced options)記述子810及び特別キュー・スクリプト記述子812を含む。
図8のステップS814は、アプリケーション・プロファイリング・ジョブ管理システムのプロセスの開始を表し、ユーザ入力情報14が読み出され、構文解析プロセスの間にステップS816で確認される。820にあるプロファイラ仕様18は、次いで、プロファイリング対象のプロファイリングを実行するよう適切なプロファイラを選択するために、ステップS818でプロファイラ照合部20によってアクセスされる。その後に、ジョブのリストがステップS822で生成され、ステップS824で共通インターフェイスを介してジョブ・スケジューラ26へ送られる。ジョブ・スケジューラ26は、ステップS826でジョブのリストをスケジューリングすることを進める。その後に、ジョブ・スケジューラ26は、828にある、アプリケーション・プロファイリング・ジョブ管理システム10が利用可能なハードウェア・リソース24のシステムのプールに基づき、各ジョブをディスパッチする。最後に、夫々の完了されたジョブの結果はステップS830で記憶され、プロセスはステップS832で終了する。820にある、利用可能なアプリケーション・プロファイラのプール、及び828にある、ハードウェア・リソースのシステムは、システム管理者によって設定可能であってよい。
具体的な実施形態において、HPCプログラマは、行列どうしの乗算のアルゴリズム(matrix-matrix multiplication algorithm)のための複合OpenMP−MPI並列化を用いて、ソフトウェア・アプリケーションを有するプロファイリング対象であるC++コードを開発した。プログラマは、このプロファイリング対象を、その性能に関する完全な報告を得るために、プロファイリングしたいと望む。プログラムはまた、CPU情報、メモリサイズ及びタイプ、キャッシュ及びトランスレーション・ルックアサイド・バッファ(TLB;Translation Lookaside Buffer)レベル、並びにインストールされるライブラリのようなハードウェア及びソフトウェアの詳細を含め、アプリケーションが実行されているハードウェア・リソース24のシステムに関する情報を得たいと望む。この全ての情報を抽出することは、異なるプロファイリング及びオペレーティング・システムのツールを提供するようユーザに求め、それらを適切に使用する方法に関するスティープ・ラーニング・プロセスを通常は伴う。
このシナリオにおいて、HPCプログラマは、ompPのようなOpenMPアプリケーション・プロファイラ、例えばIPMのようなMPIアプリケーション・プロファイラ、例えばPerfSuiteのような、複数のハードウェア・パフォーマンス・カウンタを読み出すアプリケーション・プロファイラを用いて、プロファイリング対象をプロファイリングしたいと望む。その上、プログラマは、例えばHWLOC、psinv(PerfSuiteから)のようなハードウェア及びソフトウェア情報(特定のソフトウェア・アーチファクト)を抽出し、基礎をなすコンピューティング・システムのCPUに関する情報を含む、例えば/proc/cpuinfoのような、何らかのシステムファイルからのデータを読み出すために、何らかのオペレーティング・システム・コマンドを使用する必要があり得る。
実施形態へのアクセスがないと、HPCプログラマは、如何にして夫々のプロファイリング・テクノロジを使用してそれらを別々に実行するかを学習する必要がある。代わりに、実施形態を用いれば、HPCプログラマは、次のように、ステップにおいてユーザ入力情報14をユーザ入力受信部12へ送るために単一のコマンドを使用しさえすればよい。
Figure 2018026114
この具体的な実施形態では、このコマンドは、1000×1000の行列どうしの乗算を実行して8つのMPIプロセス及び4つのOpenMPスレッドをプロセスごとに起動し、一方で、エクスペリメントのためのラベル及び結果として現れるプロファイリング・データを記憶する位置を設定する。従って、アプリケーションは、omP、IPM、及びPerfSuiteによってプロファイリングされ、システムに関する情報は、HWLOC、psinvを実行し且つ/proc/cpuinfoを読み出すことによって、抽出される。
結果として、プロファイリング・データは、夫々のジョブについて別々のフォルダを含むフォルダ‘experiment/results’に格納される。このフォルダは、プロファイリング対象の完全且つ包括的なプロファイルとともに、ハードウェア・リソース24の基礎をなすシステムを得るための必要な情報を含む。
図9は、本発明を具現化し、且つ、実施形態の方法を実装するために使用され得る、例えばアプリケーション・プロファイリング・ジョブ管理システムのような、コンピューティング・デバイスのブロック図である。コンピューティング・デバイスは、プロセッサ993及びメモリ994を有する。任意に、コンピューティング・デバイスはまた、他のコンピューティング・デバイスとの、例えば、本発明の実施形態の他のコンピューティング・デバイスとの、通信のためのネットワーク・インターフェイス997を含む。
例えば、実施形態は、そのようなコンピューティング・デバイスのネットワークから成ってよい。任意に、コンピューティング・デバイスはまた、キーボード及びマウスのような1つ以上の入力メカニズム996と、1つ以上のモニタのような表示ユニット995とを含む。コンポーネントは、バス992を介して互いへ接続可能である。
メモリ994は、コンピュータ可読媒体を含んでよい。この語は、コンピュータ実行可能命令を運ぶよう構成されるか又はデータ構造を記憶している単一の媒体又は複数の媒体(例えば、中央集権化型又は分散型データベース及び/又は関連するキャッシュ及びサーバ)を指し得る。コンピュータ実行可能命令は、例えば、汎用のコンピュータ、特別目的のコンピュータ、又は特別目的のプロセッシングデバイス(例えば、1つ以上のプロセッサ)によってアクセス可能であって、それらに1つ以上の機能及び動作を実施させる命令を含んでよい。よって、語「コンピュータ可読記憶媒体」はまた、マシンによる実行のために命令の組を記憶、符号化又は搬送することが可能であって、マシンに本開示の方法のいずれか1つ以上を実施させる如何なる媒体も含んでよい。語「コンピュータ可読記憶媒体」は、制限なしに、固体状態メモリ、光学媒体及び磁気媒体を含むと、然るべく考えられ得る。一例として、制限なしに、そのようなコンピュータ可読媒体は、ランダム・アクセス・メモリ(RAM;Random Access Memory)、リード・オンリー・メモリ(ROM;Read-Only Memory)、電気的消去可能なプログラム可能リード・オンリー・メモリ(EEPROM;Electrically Erasable Programmable Read-Only Memory)、コンパクト・ディスク・リード・オンリー・メモリ(CD−ROM;Compact Disc Read-Only Memory)若しくは他の光学ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュ・メモリ・デバイス(例えば、固体状態記憶デバイス)を含む非一時的なコンピュータ可読記憶媒体を含んでよい。
プロセッサ993は、コンピューティング・デバイスを制御し、プロセッシング動作、例えば、本明細書及び特許請求の範囲で記載されているユーザ入力受信部12、プロファイラ仕様記憶部16、プロファイラ照合部20、ハードウェア管理部22及びジョブ・スケジューラ26の多種多様な機能を実装するようメモリに記憶されているコードを実行すること、を実行するよう構成される。メモリ994は、プロセッサ993によって読み出され且つ書き込まれるデータを記憶する。本明細書で言及されているように、プロセッサは、例えばマイクロプロセッサ、中央演算処理装置、又は同様のもののような、1つ以上の汎用のプロセッシング・デバイスを含んでよい。プロセッサは、複数命令セットコンピューティング(CISC;complex instruction set computing)マイクロプロセッサ、縮小命令セットコンピューティング(RISC;reduced instruction set computing)マイクロプロセッサ、超長命令語(VLIW;very long instruction word)マイクロプロセッサ、又は他の命令セットを実装するプロセッサ、あるいは、命令セットの組み合わせを実装するプロセッサを含んでよい。プロセッサはまた、特定用途向け集積回路(ASIC;application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA;field programmable gate array)、デジタル信号プロセッサ(DSP;digital signal processor)、ネットワーク・プロセッサ、又は同様のもののような、1つ以上の特別目的のプロセッシング・デバイスを含んでよい。1つ以上の実施形態において、プロセッサは、本明細書で説明されている動作及びステップを実施するための命令を実行するよう構成される。
表示ユニット997は、コンピューティング・デバイスによって記憶されているデータの描写を表示してよく、ユーザとコンピューティング・デバイスに記憶されているプログラム及びデータとの間の相互作用を可能にするカーソル並びにダイアログ・ボックス及びスクリーンを更に表示してよい。入力メカニズム996は、データ及び命令をコンピューティング・デバイスへ入力することをユーザに可能にし得る。
ネットワーク・インターフェイス(ネットワークI/F)997は、例えばインターネットのようなネットワークへ接続されてよく、他のそのようなコンピューティング・デバイスへネットワークを介して接続可能である。ネットワークI/F997は、ネットワークを介して他の装置から入力されるか又はそれへ出力されるデータを制御し得る。例えばマイクロホン、スピーカ、プリンタ、電源ユニット、ファン、ケース、スキャナ、トラックボール、などのような他の周辺機器が、コンピューティング・デバイスに含まれてよい。
図1のユーザ入力受信部12は、メモリ994に記憶されているプロセッシング命令(プログラム)を実行し且つデータ交換(data exchange)によりデータを交換するプロセッサ993(又は複数のプロセッサ)であってよい。特に、プロセッサ993は、図2のステップS202及びS204で見られるように、特定のプロファイリング対象及びプロファイリング実行要件を含む1つ以上のプロファイリング・タスクを実行するための所望のユーザオプションを含むユーザ入力情報14をデータ交換により受け取るプロセッシング命令を実行する。更には、プロセッサ993は、接続されている記憶ユニットにユーザ入力情報14を記憶し、及び/又は構文解析による処理のためにユーザ入力受信部12へユーザ入力情報14をデータ交換により送るプロセッシング命令を実行してよい。
図1のプロファイラ仕様記憶部16は、メモリ994に記憶されているプロセッシング命令(プログラム)を実行し且つデータ交換によりデータを交換するプロセッサ993(又は複数のプロセッサ)であってよい。特に、プロセッサ993は、図4のステップS408で見られるように、各々のアプリケーション・プロファイラのためのプロファイリング値域を識別する複数のプロファイラ情報識別子を夫々が含むプロファイラ仕様18をデータ交換により受け取るプロセッシング命令を実行する。更には、プロセッサ993は、接続されている記憶ユニットにプロファイラ仕様18を記憶するプロセッシング命令を実行してよい。
図1のプロファイラ照合部20は、メモリ994に記憶されているプロセッシング命令(プログラム)を実行し且つデータ交換によりデータを交換するプロセッサ993(又は複数のプロセッサ)であってよい。特に、プロセッサ993は、図6のステップS610乃至S618で見られるように、ユーザ入力受信部12及びプロファイラ仕様記憶部16からユーザ入力情報14及び選択されたプロファイラ仕様18をデータ交換により受け取り、複数のアプリケーション・プロファイラのうちのどれが特定されたプロファイリング実行要件を満足するかを各々のプロファイラ仕様18に基づき決定し、特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、1つ以上のアプリケーション・プロファイリング・タスクを生成するプロセッシング命令を実行する。更には、プロセッサ993は、接続されている記憶ユニットに1つ以上のプロファイリング・タスクのリストを記憶し、及び/又は1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を開始するよう1つ以上のプロファイリング・タスクをジョブ・スケジューラ26へデータ交換により送るプロセッシング命令を実行してよい。
図1のハードウェア管理部22は、メモリ994に記憶されているプロセッシング命令(プログラム)を実行し且つデータ交換によりデータを交換するプロセッサ993(又は複数のプロセッサ)であってよい。特に、プロセッサ993は、図7のステップS707で見られるように、プロファイラ照合部20から1つ以上のプロファイリング・タスクをデータ交換により受け取り、アプリケーション・プロファイリング・タスクの夫々を実行するようハードウェア・リソース24及び/又はプロセッサの1つ以上のシステムを選択するプロセッシング命令を実行する。更には、プロセッサ993は、接続されている記憶ユニットに、アプリケーション・プロファイリング・タスクの夫々を実行するハードウェア・リソースの選択された1つ以上のシステムのリストを記憶するプロセッシング命令を実行してよい。
図1のジョブ・スケジューラ26は、メモリ994に記憶されているプロセッシング命令(プログラム)を実行し且つデータ交換によりデータを交換するプロセッサ993(又は複数のプロセッサ)であってよい。特に、プロセッサ993は、図7のステップS710及びS711で見られるように、ハードウェア管理部22から、1つ以上のプロファイリング・タスクの夫々を実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムのリストをデータ交換により受け取り、ハードウェア・リソース24の各々の選択された1つ以上のシステムにより1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を開始するプロセッシング命令を実行する。更には、プロセッサ993は、接続されている記憶ユニットにハードウェア・リソースの1つ以上のシステムのリストを記憶し、及び/又は実行のために1つ以上のプロファイリング・タスクをハードウェア・リソース24の1つ以上のシステムへデータ交換に送るプロセッシング命令を実行してよい。
データ交換は、ネットワークI/Fであってよく、あるいは、例えば、一般にアクセス可能な記憶場所を介するような、内部データ交換メカニズムであってよい。
図1乃至9のアプリケーション・プロファイリング・ジョブ管理システムは、メモリ994に記憶されているプロセッシング命令(プログラム)を実行し且つデータ交換によりデータを交換するプロセッサ993(又は複数のプロセッサ)であってよい。特に、プロセッサ993は、図1のステップS202乃至S216で見られるように、ユーザ入力情報14及びプロファイラ仕様18をデータネットワークを経由して受け取り、ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するプロセッシング命令を実行する。更には、プロセッサ993は、接続されている記憶ユニットに1つ以上のアプリケーション・プロファイリング・タスクの結果を記憶するプロセッシング命令を実行してよい。
本発明を具現化する方法は、図9で表されているもののようなコンピューティング・デバイスで実施されてよい。そのようなコンピューティング・デバイスは、図9で表されているあらゆるコンポーネントを有する必要はなく、それらのコンポーネントの一部から成ってよい。本発明を具現化する方法は、ネットワークを経由して1つ以上のデータ記憶サーバと通信する単一のコンピューティング・デバイスによって実施されてよい。コンピューティング・デバイスは、1つ以上のプロファイリング・タスクからの結果を記憶するデータ・ストレージ自体であってよい。
本発明を具現化する方法は、互いに協働する複数のコンピューティング・デバイスによって実施されてよい。複数のコンピューティング・デバイスのうちの1つ以上は、1つ以上のプロファイリング・タスクからの結果の少なくとも一部を記憶するデータ記憶サーバであってよい。
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムであって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有するアプリケーション・プロファイリング・ジョブ管理システム。
(付記2)
前記ハードウェア・リソースのシステム又は1つ以上のシステムの夫々について、該夫々のハードウェア・リソースのシステムによって記憶されている複数のソフトウェア・アーチファクトの夫々の位置を特定するハードウェア・アーチファクト・マップを記憶するよう構成されるハードウェア・アーチファクト・マップ記憶部と、
夫々のアプリケーション・プロファイリング・タスクについて、前記選択されたハードウェア・リソースのシステムがソフトウェア・アーチファクトの組の位置にアクセスするために前記記憶されているハードウェア・アーチファクト・マップを使用することによって、前記特定されたアプリケーション・プロファイラが依存状態を示すソフトウェア・アーチファクトの組をアセンブルするよう構成されるアセンブリ部と
を更に有する付記1に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記3)
前記ハードウェア・アーチファクト・マップの夫々は、夫々のハードウェア・リソースのシステムについて、前記1つ以上のアプリケーション・プロファイリング・タスクの実行のために前記アセンブリ部によってアセンブルされる当該ハードウェア・リソース上の前記特定されたソフトウェア・アーチファクトの位置を示すデータへリンクされた1つ以上のハードウェア記憶識別子を含む、
付記2に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記4)
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、複数のプロファイラ情報識別子を含み、該プロファイラ情報識別子の夫々は、当該アプリケーション・プロファイラから利用可能な性能測定を示し及び/又は前記特定されたアプリケーション・プロファイラによって必要とされる1つ以上のソフトウェア・アーチファクトを示すプロファイリング値域を識別する、
付記1に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記5)
前記プロファイラ照合部は、前記ユーザ入力情報によって特定される前記プロファイリング実行要件を複数の要求値域に変換するよう構成される変換部を含み、夫々の要求値域は、要件情報識別子によって識別され、夫々の要件情報識別子は、関連するプロファイラ情報識別子を有し、
前記プロファイラ照合部は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、夫々のプロファイラ仕様を前記特定されたプロファイリング実行要件と比較するよう構成される、
付記4に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記6)
前記プロファイラ照合部は、
各アプリケーション・プロファイラのプロファイラ仕様について、
関連するプロファイラ情報識別子が、各要件情報識別子についての前記識別された要求値域を満たすプロファイリング値域を識別するかどうかを判定することによって、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを決定するよう更に構成され、
前記アプリケーション・プロファイラは、前記識別された要求値域が満たされる場合に、前記特定されたプロファイリング実行要件を満足すると決定される、
付記4に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記7)
当該アプリケーション・プロファイリング・ジョブ管理システムは、前記アプリケーション・プロファイラを実行するハードウェア・リソースのシステムの構成を決定する命令についての構造化されたフォーマットを定義するアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートを記憶するよう構成され、
前記アセンブリ部は、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な前記複数のアプリケーション・プロファイラの夫々についてのアプリケーション・プロファイラ・ドライバ・スクリプトを記憶するよう構成されるドライバ・スクリプト記憶部を含み、前記アプリケーション・プロファイラ・ドライバ・スクリプトの夫々は、前記アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって定義される前記構造化されたフォーマットを実装する、
付記1に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記8)
前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、アプリケーション・プロファイラのグループがアプリケーション・プロファイリング・タスクの実行中に実行されるべき順序を示す優先順位標識値を更に含み、これによって、より高い優先順位標識値が、より低い優先順位標識値より前に実行され、
前記優先順位標識値は、一部のアプリケーション・プロファイラが他よりも早い順序で実行されることを求めるアプリケーション・プロファイラのシーケンスの間の動作要件及び/又は相互依存性に基づき、前記優先順位標識値によって保持される値は、ユーザによって設定可能である、
付記4に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記9)
前記プロファイラ照合部は、該プロファイラ照合部が複数のアプリケーション・プロファイリング・タスクを決定する場合に、
前記複数のアプリケーション・プロファイリング・タスクをスキャンして相互作用を識別し、識別された相互作用するアプリケーション・プロファイリング・タスクを同じバッチ・ジョブにグループ化することで、前記複数のアプリケーション・プロファイリング・タスクを1つ以上のバッチ・ジョブに分け、
前記1つ以上のバッチ・ジョブの夫々のためにハードウェア・リソースの独立したシステムを選択することによって、前記アプリケーション・プロファイリング・タスクの夫々を実行するように、1つ以上のコンピューティング環境及びプロセッサからハードウェア・リソースの1つ以上のシステムを選択する
よう構成される、
付記7に記載のアプリケーション・プロファイリング・ジョブ管理システム。
(付記10)
ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムを有し、
前記アプリケーション・プロファイリング・ジョブ管理システムは、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
前記アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択するよう構成されるハードウェア管理部と、
前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
を有し、
前記ハードウェア・リソースの1つ以上のシステムを更に有し、該ハードウェア・リソースのシステムの夫々は、前記ジョブ・スケジューラの命令に従ってアプリケーション・プロファイリング・タスクを実行するよう構成される、
コンピューティング・システム。
(付記11)
ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理方法であって、
前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成し、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択し、
前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始する
ことを有するアプリケーション・プロファイリング・ジョブ管理方法。
(付記12)
コンピューティング・デバイスによって実行される場合に、該コンピューティング・デバイスに、
ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成し、
前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択し、
前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始する
ことを有する方法を実行させるコンピュータ・プログラムを記憶している非一時的なコンピュータ可読記憶媒体。
10 アプリケーション・プロファイリング・ジョブ管理システム
12 ユーザ入力受信部
14 ユーザ入力情報
16 プロファイラ仕様記憶部
18 プロファイラ仕様
20 プロファイラ照合部
22 ハードウェア管理部
24 ハードウェア・リソース
26 ジョブ・スケジューラ
32 ユーザ記憶オプション
34,804 アプリケーションオプション
36、806 テクノロジオプション
38、808 実行オプション
39 共通インターフェイス
802 ユーザオプション
810 詳細オプション記述子
812 特別キュー・スクリプト記述子
993 プロセッサ
994 メモリ
997 ネットワーク・インターフェイス

Claims (12)

  1. ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムであって、
    前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
    当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
    前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
    前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択するよう構成されるハードウェア管理部と、
    前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
    を有するアプリケーション・プロファイリング・ジョブ管理システム。
  2. 前記ハードウェア・リソースのシステム又は1つ以上のシステムの夫々について、該夫々のハードウェア・リソースのシステムによって記憶されている複数のソフトウェア・アーチファクトの夫々の位置を特定するハードウェア・アーチファクト・マップを記憶するよう構成されるハードウェア・アーチファクト・マップ記憶部と、
    夫々のアプリケーション・プロファイリング・タスクについて、前記選択されたハードウェア・リソースのシステムがソフトウェア・アーチファクトの組の位置にアクセスするために前記記憶されているハードウェア・アーチファクト・マップを使用することによって、前記特定されたアプリケーション・プロファイラが依存状態を示すソフトウェア・アーチファクトの組をアセンブルするよう構成されるアセンブリ部と
    を更に有する請求項1に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  3. 前記ハードウェア・アーチファクト・マップの夫々は、夫々のハードウェア・リソースのシステムについて、前記1つ以上のアプリケーション・プロファイリング・タスクの実行のために前記アセンブリ部によってアセンブルされる当該ハードウェア・リソース上の前記特定されたソフトウェア・アーチファクトの位置を示すデータへリンクされた1つ以上のハードウェア記憶識別子を含む、
    請求項2に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  4. 前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、複数のプロファイラ情報識別子を含み、該プロファイラ情報識別子の夫々は、当該アプリケーション・プロファイラから利用可能な性能測定を示し及び/又は前記特定されたアプリケーション・プロファイラによって必要とされる1つ以上のソフトウェア・アーチファクトを示すプロファイリング値域を識別する、
    請求項1に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  5. 前記プロファイラ照合部は、前記ユーザ入力情報によって特定される前記プロファイリング実行要件を複数の要求値域に変換するよう構成される変換部を含み、夫々の要求値域は、要件情報識別子によって識別され、夫々の要件情報識別子は、関連するプロファイラ情報識別子を有し、
    前記プロファイラ照合部は、関連するプロファイラ情報識別子及び要件情報識別子の対についての値域を比較することによって、夫々のプロファイラ仕様を前記特定されたプロファイリング実行要件と比較するよう構成される、
    請求項4に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  6. 前記プロファイラ照合部は、
    各アプリケーション・プロファイラのプロファイラ仕様について、
    関連するプロファイラ情報識別子が、各要件情報識別子についての前記識別された要求値域を満たすプロファイリング値域を識別するかどうかを判定することによって、
    前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを決定するよう更に構成され、
    前記アプリケーション・プロファイラは、前記識別された要求値域が満たされる場合に、前記特定されたプロファイリング実行要件を満足すると決定される、
    請求項4に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  7. 当該アプリケーション・プロファイリング・ジョブ管理システムは、前記アプリケーション・プロファイラを実行するハードウェア・リソースのシステムの構成を決定する命令についての構造化されたフォーマットを定義するアプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートを記憶するよう構成され、
    前記アセンブリ部は、当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な前記複数のアプリケーション・プロファイラの夫々についてのアプリケーション・プロファイラ・ドライバ・スクリプトを記憶するよう構成されるドライバ・スクリプト記憶部を含み、前記アプリケーション・プロファイラ・ドライバ・スクリプトの夫々は、前記アプリケーション・プロファイラ・ドライバ・スクリプト・テンプレートによって定義される前記構造化されたフォーマットを実装する、
    請求項1に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  8. 前記プロファイラ仕様の夫々は、夫々のアプリケーション・プロファイラについて、アプリケーション・プロファイラのグループがアプリケーション・プロファイリング・タスクの実行中に実行されるべき順序を示す優先順位標識値を更に含み、これによって、より高い優先順位標識値が、より低い優先順位標識値より前に実行され、
    前記優先順位標識値は、一部のアプリケーション・プロファイラが他よりも早い順序で実行されることを求めるアプリケーション・プロファイラのシーケンスの間の動作要件及び/又は相互依存性に基づき、前記優先順位標識値によって保持される値は、ユーザによって設定可能である、
    請求項4に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  9. 前記プロファイラ照合部は、該プロファイラ照合部が複数のアプリケーション・プロファイリング・タスクを決定する場合に、
    前記複数のアプリケーション・プロファイリング・タスクをスキャンして相互作用を識別し、識別された相互作用するアプリケーション・プロファイリング・タスクを同じバッチ・ジョブにグループ化することで、前記複数のアプリケーション・プロファイリング・タスクを1つ以上のバッチ・ジョブに分け、
    前記1つ以上のバッチ・ジョブの夫々のためにハードウェア・リソースの独立したシステムを選択することによって、前記アプリケーション・プロファイリング・タスクの夫々を実行するように、1つ以上のコンピューティング環境及びプロセッサからハードウェア・リソースの1つ以上のシステムを選択する
    よう構成される、
    請求項7に記載のアプリケーション・プロファイリング・ジョブ管理システム。
  10. ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理システムを有し、
    前記アプリケーション・プロファイリング・ジョブ管理システムは、
    前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受けるよう構成されるユーザ入力受信部と、
    前記アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶するよう構成されるプロファイラ仕様記憶部と、
    前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成するよう構成されるプロファイラ照合部と、
    前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択するよう構成されるハードウェア管理部と、
    前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始するよう構成されるジョブ・スケジューラと
    を有し、
    前記ハードウェア・リソースの1つ以上のシステムを更に有し、該ハードウェア・リソースのシステムの夫々は、前記ジョブ・スケジューラの命令に従ってアプリケーション・プロファイリング・タスクを実行するよう構成される、
    コンピューティング・システム。
  11. ソフトウェア・アプリケーションをプロファイリングする1つ以上のアプリケーション・プロファイリング・タスクを構成及び開始するよう構成されるアプリケーション・プロファイリング・ジョブ管理方法であって、
    前記ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
    当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
    前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成し、
    前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択し、
    前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始する
    ことを有するアプリケーション・プロファイリング・ジョブ管理方法。
  12. コンピューティング・デバイスによって実行される場合に、該コンピューティング・デバイスに、
    ソフトウェア・アプリケーションを含むプロファイリング対象及びプロファイリング実行要件を特定するユーザ入力情報を受け、
    当該アプリケーション・プロファイリング・ジョブ管理システムがアクセス可能な複数のアプリケーション・プロファイラの夫々のプロファイラ仕様を記憶し、
    前記複数のアプリケーション・プロファイラのうちのどれが前記特定されたプロファイリング実行要件を満足するかを、前記夫々のプロファイラ仕様に基づき決定し、前記特定されたプロファイリング実行要件を満足すると決定されたアプリケーション・プロファイラの夫々について、前記複数のアプリケーション・プロファイラの中の当該アプリケーション・プロファイラ及び前記プロファイリング対象を夫々が特定する1つ以上のアプリケーション・プロファイリング・タスクを生成し、
    前記アプリケーション・プロファイリング・タスクを実行するハードウェア・リソース及び/又はプロセッサの1つ以上のシステムを選択し、
    前記1つ以上のアプリケーション・プロファイリング・タスクの夫々の実行を各々の前記選択されたハードウェア・リソースの1つ以上のシステムにより開始する
    ことを有する方法を実行させるコンピュータ・プログラムを記憶している非一時的なコンピュータ可読記憶媒体。
JP2017122021A 2016-08-09 2017-06-22 アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法 Active JP6939132B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102016214786.2A DE102016214786A1 (de) 2016-08-09 2016-08-09 Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren
DE102016214786.2 2016-08-09

Publications (2)

Publication Number Publication Date
JP2018026114A true JP2018026114A (ja) 2018-02-15
JP6939132B2 JP6939132B2 (ja) 2021-09-22

Family

ID=59564108

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017122021A Active JP6939132B2 (ja) 2016-08-09 2017-06-22 アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法

Country Status (4)

Country Link
US (1) US10338956B2 (ja)
EP (1) EP3285170B1 (ja)
JP (1) JP6939132B2 (ja)
DE (1) DE102016214786A1 (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021121879A (ja) * 2019-04-18 2021-08-26 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited データ処理方法および関連製品
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11442786B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
US11544059B2 (en) 2018-12-28 2023-01-03 Cambricon (Xi'an) Semiconductor Co., Ltd. Signal processing device, signal processing method and related products
US11609760B2 (en) 2018-02-13 2023-03-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11675676B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2632141C2 (ru) * 2015-06-30 2017-10-02 Общество С Ограниченной Ответственностью "Яндекс" Способ и компьютерное устройство для динамической индексации и загрузки кодов модулей
DE102016223484B4 (de) * 2016-11-25 2021-04-15 Fujitsu Limited Bestimmen von Ähnlichkeiten in Computersoftwarecodes zur Leistungsanalyse
US10812416B2 (en) * 2017-12-27 2020-10-20 International Business Machines Corporation Reduced number of counters for reliable messaging
WO2020026256A1 (en) * 2018-08-02 2020-02-06 Telefonaktiebolaget Lm Ericsson (Publ) Inspection entity and method performed therein for handling an output fault of a system
US11138018B2 (en) * 2018-12-14 2021-10-05 Nvidia Corporation Optimizing execution of computer programs using piecemeal profiles
US10977075B2 (en) * 2019-04-10 2021-04-13 Mentor Graphics Corporation Performance profiling for a multithreaded processor
CN111414170A (zh) * 2020-03-05 2020-07-14 莱诺斯科技(北京)股份有限公司 一种可视化编排测试过程的装置及方法
US11113105B1 (en) * 2020-06-09 2021-09-07 Infosys Limited Computer implemented system and method for generating platform agnostic digital worker

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090199160A1 (en) 2008-01-31 2009-08-06 Yahoo! Inc. Centralized system for analyzing software performance metrics
US8340942B2 (en) * 2010-04-26 2012-12-25 International Business Machines Corporation Identifying opportunities to improve multiprocess system performance
US20120084028A1 (en) 2010-09-30 2012-04-05 Ibm Corporation Framework and Methodology for a Real-Time Fine-Grained Power Profiling with Integrated Modeling
US8572244B2 (en) * 2011-08-05 2013-10-29 Bank Of America Corporation Monitoring tool deployment module and method of operation
US8839200B1 (en) 2012-07-23 2014-09-16 Google Inc. Generating profiling data
US9465712B2 (en) * 2013-06-26 2016-10-11 Silicon Graphics International Corp. Assessment of a high performance computing application in relation to network latency due to the chosen interconnects

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11740898B2 (en) 2018-02-13 2023-08-29 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11620130B2 (en) 2018-02-13 2023-04-04 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11663002B2 (en) 2018-02-13 2023-05-30 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11720357B2 (en) 2018-02-13 2023-08-08 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11709672B2 (en) 2018-02-13 2023-07-25 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11704125B2 (en) 2018-02-13 2023-07-18 Cambricon (Xi'an) Semiconductor Co., Ltd. Computing device and method
US11507370B2 (en) 2018-02-13 2022-11-22 Cambricon (Xi'an) Semiconductor Co., Ltd. Method and device for dynamically adjusting decimal point positions in neural network computations
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11609760B2 (en) 2018-02-13 2023-03-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
US11442785B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11442786B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
US11544059B2 (en) 2018-12-28 2023-01-03 Cambricon (Xi'an) Semiconductor Co., Ltd. Signal processing device, signal processing method and related products
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
JP2021521500A (ja) * 2019-04-18 2021-08-26 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited データ処理方法および関連製品
JP2021121879A (ja) * 2019-04-18 2021-08-26 カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited データ処理方法および関連製品
US11762690B2 (en) 2019-04-18 2023-09-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
JP7044808B2 (ja) 2019-04-18 2022-03-30 カンブリコン テクノロジーズ コーポレーション リミテッド データ処理方法および関連製品
US11675676B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium

Also Published As

Publication number Publication date
US10338956B2 (en) 2019-07-02
EP3285170B1 (en) 2022-05-11
US20180046497A1 (en) 2018-02-15
EP3285170A1 (en) 2018-02-21
JP6939132B2 (ja) 2021-09-22
DE102016214786A1 (de) 2018-02-15

Similar Documents

Publication Publication Date Title
JP6939132B2 (ja) アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法
US20220247633A1 (en) Methods, systems and apparatus to improve cluster efficiency
US20220188086A1 (en) Off-load servers software optimal placement method and program
US8667019B2 (en) Placement goal-based database instance consolidation
US20060080666A1 (en) Method and system for scheduling jobs based on resource relationships
US8555277B2 (en) Method and apparatus for activating a virtual machine in a virtual solution
US11188348B2 (en) Hybrid computing device selection analysis
EP3032413B1 (en) Code generation method, compiler, scheduling method, apparatus and scheduling system
JPWO2018066040A1 (ja) 管理計算機及びテスト環境決定方法
CN102257478A (zh) 操作数据结构
Aksakalli et al. Systematic approach for generation of feasible deployment alternatives for microservices
Lin et al. Modeling and simulation of spark streaming
Wu et al. A distributed workflow management system with case study of real-life scientific applications on grids
Lehmann et al. How workflow engines should talk to resource managers: A proposal for a common workflow scheduling interface
CN109033452B (zh) 一种数据仓库智能构建装载方法及系统
Spinner et al. A reference architecture for online performance model extraction in virtualized environments
CN103631635A (zh) 用于使用预调配的变异模板来创建虚拟机的方法和系统
US20160110234A1 (en) Apparatus and method for processing complex event based on high load path
JP2022542007A (ja) テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
CN113518974A (zh) 用于找出并标识网络中的计算节点的系统和方法
Kecskemeti et al. Virtual appliance size optimization with active fault injection
Long et al. A Simultaneous computing framework for metamodel-based design optimization
KR101506656B1 (ko) 애플리케이션 품질 관리를 위한 시스템 및 그 방법
Kashyap et al. Big data at hpc wales
US11893428B1 (en) Tracing service interactions without global transaction identifiers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210706

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210816

R150 Certificate of patent or registration of utility model

Ref document number: 6939132

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150