(57)【要約】  改善されたソフトウェア最適化ツールフレームワークが提供される。これは、実行されると、ユーザ指定のアプリケーションおよび／またはプロセスの実行中のすべてのインスタンスに自身をアタッチするソフトウェアエージェントを作成し、単一のマシンまたは複数のマシン（たとえば、コンピュータクラスタ内）にアタッチする。ソフトウェアエージェントがアタッチされると、ツールは、アタッチされたアプリケーションおよび／またはプロセスごとに、指定されたアプリケーションまたはプロセスのコードの指定されたターゲットセクションの入力および出力データをキャプチャするように構成できる。一実施形態では、ソフトウェアプログラマーが単一の機能又は複数の機能又はコード部分を含むコードの特定のターゲットセクションを最適化することを望むことができる。事前に識別されたコードセクションに基づいて、ツールはコードのターゲットセクションと共に、キャプチャされた入力および出力データをバイナリファイルに書き込むことができ、コードのターゲットセクションを含む入力および出力データの周りに最適化フレームワークを構築することができる。
2021501405.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ回路基板上に構成されたマイクロプロセッサであって、入力／出力チャネルを有するように構成されたマイクロプロセッサと、
前記マイクロプロセッサと通信するように構成されたメモリと、前記メモリと前記マイクロプロセッサとの間に延在するデータバスと、
前記マイクロプロセッサと通信するように構成された不揮発性メモリと、
ソフトウェアプログラマーがコンピュータシステム上のソースコードを閲覧編集できるようなユーザインターフェースと、
マイクロプロセッサが、ターゲットプロセスの名前、ソースコードファイルのファイル名、ソースコードファイル内のターゲットコードセクションを識別する行番号のセット、抽出される変数名のリスト、および意図された抽出頻度を、入力として認識する中央ディスパッチャプログラムを実行できるようにする不揮発性メモリ上に格納されたソフトウェアプログラムと、
前記ターゲットプロセスの名前によって識別されるソフトウェアエージェントに制御を与えるように構成された中央ディスパッチャプログラムと、
前記ソースコードファイル内の前記ターゲットコードセクションを識別する行番号のセットの最初の行番号に達したときに一時停止するように前記ターゲットプロセスに指示し、前記ターゲットプロセスを実行し、ダンプデータファイルに抽出される変数名のリストで識別される変数値をダンプし、その後、所望の反復回数に達するまでこのプロセスを繰り返すように構成されたソフトウェアエージェント、
を特徴とする非分散コンピュータシステムを含む、
非分散コンピューティングシステムで使用するためのコンピュータソフトウェア最適化システム。
【請求項２】
前記中央ディスパッチャは、前記アプリケーションのコードベースおよび前記ダンプデータファイルを前記ソフトウェアエージェントから入力として受信する、請求項１に記載のコンピュータソフトウェア最適化システム。
【請求項３】
前記中央ディスパッチャは、事前構成された最適化フレームワークファイルを入力として受け取る、請求項１または２に記載のコンピュータソフトウェア最適化システム。
【請求項４】
前記中央ディスパッチャは前記事前構成された最適化フレームワークファイルに、前記ダンプデータファイルからの情報と、前記ソースコードファイル内の前記ターゲットコードセクションを識別する一連の行番号によって識別されるアプリケーションのコードベースからの関連コードセクションとを取り込むことによって、取り込んだ最適化フレームワークファイルを作成するように構成される、請求項３に記載のコンピュータソフトウェア最適化システム。
【請求項５】
前記コンピュータソフトウェア最適化システムはエンドユーザであるコンピュータプログラマーに、取り込まんだ最適化フレームワークファイルと、前記ソースコードファイル内の前記ターゲットコードセクションを識別する一連の行番号によって識別される前記アプリケーションのコードベースからの前記関連コードセクションの編集可能バージョンとを表示する、請求項４に記載のコンピュータソフトウェア最適化システム。
【請求項６】
前記コンピュータソフトウェア最適化システムは前記ダンプデータファイルからの前記変数データを用いて、前記関連するコードセクションの編集されたバージョンを再実行し、それによって実際のランタイムデータを有するテストランを提供するように構成される、先行する請求項のいずれかに記載のコンピュータソフトウェア最適化システム。
【請求項７】
コンピュータ回路基板上に構成されたマイクロプロセッサであって、入力／出力チャネルを有するように構成されたマイクロプロセッサと、
前記マイクロプロセッサと通信するように構成されたメモリと、前記メモリと前記マイクロプロセッサとの間に延在するデータバスと、
前記マイクロプロセッサと通信するように構成された不揮発性メモリと、
ソフトウェアプログラマーがコンピュータシステム上のソースコードを閲覧編集できるようなユーザインターフェースと、
前記マイクロプロセッサが、
ターゲットプロセスの名前、ソースコードファイルのファイル名、ソースコードファイル内のターゲットコードセクションを識別する一連の行番号、抽出される変数名のリスト、および意図した抽出頻度を、入力として受け取る中央ディスパッチャプログラムを実行し、
前記ターゲットプロセスの名前で識別され、前記ソースコードファイルの前記ターゲットコードセクションを識別する前記一連の行番号の最初の行番号に達したときに一時停止するように前記ターゲットプロセスに指示するように構成されており、前記ターゲットプロセスを実行し、抽出する変数名の前記リストで識別された前記変数値をダンプデータファイルにダンプし、目的の反復回数が達成されるまでこのプロセスを繰り返す、ソフトウェアエージェントプログラムを実行する、
というステップを遂行できるようにする前記不揮発性メモリ上に格納されたソフトウェアプログラム、
を含む非分散コンピュータシステムを配備する、
というステップにより特徴付けられた、非分散コンピューティングシステムで使用するためのコンピュータソフトウェア最適化システムの方法。
【請求項８】
前記中央ディスパッチャは、前記アプリケーションのコードベースおよび前記ダンプデータファイルを前記ソフトウェアエージェントからの入力として受信する、請求項７に記載のコンピュータソフトウェア最適化システム。
【請求項９】
前記中央ディスパッチャは、事前構成された最適化フレームワークファイルを入力として受け取る、請求項７または８に記載のコンピュータソフトウェア最適化システム。
【請求項１０】
前記中央ディスパッチャは前記事前構成された最適化フレームワークファイルに、前記ダンプデータファイルからの情報と、前記ソースコードファイル内の前記ターゲットコードセクションを識別する一連の行番号によって識別されるアプリケーションのコードベースからの関連コードセクションとを取り込むことによって、取り込んだ最適化フレームワークファイルを作成するように構成される、請求項９に記載のコンピュータソフトウェア最適化システム。
【請求項１１】
前記コンピュータソフトウェア最適化システムはエンドユーザであるコンピュータプログラマーに、取り込んだ最適化フレームワークファイルと、前記ソースコードファイル内の前記ターゲットコードセクションを識別する一連の行番号によって識別される前記アプリケーションのコードベースからの前記関連コードセクションの編集可能バージョンとを表示する、請求項１０に記載のコンピュータソフトウェア最適化システム。
【請求項１２】
前記コンピュータソフトウェア最適化システムは前記ダンプデータファイルからの前記変数データを使用して、前記関連するコードセクションの編集されたバージョンを再実行し、それによって実際のランタイムデータでテストランを提供するように構成される、請求項１１に記載のコンピュータソフトウェア最適化システム。
【請求項１３】
前記コンピュータソフトウェア最適化システムは、前記編集されたバージョンの前記関連コードセクションの再実行中に新しいダンプデータファイルを作成するように構成される、請求項７〜１２のいずれかに記載のコンピュータソフトウェア最適化システム。
【請求項１４】
二つ以上のコンピュータシステムを配備し、各コンピュータシステムは、
コンピュータ回路基板上に構成されたマイクロプロセッサであって、入力／出力チャネルを有するように構成されたマイクロプロセッサと、
前記マイクロプロセッサと通信するように構成されたメモリと、前記メモリと前記マイクロプロセッサとの間に延在するデータバスと、
前記マイクロプロセッサと通信するように構成された不揮発性メモリと、
ソフトウェアプログラマーが前記コンピュータシステム上のソースコードを閲覧編集できるようなユーザインターフェースを含み、
前記マイクロプロセッサが、ターゲットプロセスの名前、ソースコードファイルのファイル名、ソースコードファイル内のターゲットコードセクションを識別する一連の行番号、抽出される変数名のリスト、および意図した抽出頻度を、入力として受け取る中央ディスパッチャプログラムを実行する、
というステップを遂行できるようにする少なくとも一つのコンピュータシステムの不揮発性メモリ上に格納されたソフトウェアプログラムと、
各システムのマイクロプロセッサが、前記ターゲットプロセスの名前で識別され、前記ソースコードファイルの前記ターゲットコードセクションを識別する前記一連の行番号の最初の行番号に達したときに一時停止するように前記ターゲットプロセスに指示するように構成されており、前記ターゲットプロセスを実行し、抽出される変数名の前記リストで識別された前記変数値をダンプデータファイルにダンプし、目的の反復回数に達するまでこのプロセスを繰り返す、ソフトウェアエージェントプログラムを実行する、
というステップを遂行することを可能にするように構成されたコンピュータシステムの各々の不揮発性メモリに格納されたソフトウェアプログラムと、
各ソフトウェアエージェントプログラムから前記ダンプデータファイルを収集するステップをさらに遂行する前記少なくとも１つのコンピュータシステムの不揮発性メモリに格納されたソフトウェアプログラムと、
を含むことを特徴とする、分散コンピューティングシステムで使用するためのコンピュータソフトウェア最適化システムの方法。
【請求項１５】
前記中央ディスパッチャは、前記アプリケーションのコードベースと、前記ソフトウェアエージェントのそれぞれからのダンプデータファイルの内容とを入力として受け取る、請求項１４に記載のコンピュータソフトウェア最適化システム。
【請求項１６】
前記中央ディスパッチャは、分散コンピューティングシステムからの情報を取り込むように適合された事前構成された最適化フレームワークファイルを入力として受信する、請求項１４または１５に記載のコンピュータソフトウェア最適化システム。
【請求項１７】
前記中央ディスパッチャは前記事前構成された最適化フレームワークファイルに、前記ダンプデータファイルからの情報と、前記ソースコードファイル内の前記ターゲットコードセクションを識別する一連の行番号によって識別されるアプリケーションのコードベースからの関連コードセクションとを取り込むように構成され、それによって、分散コンピューティングシステム用に、取り込んだ最適化フレームワークファイルを作成する、請求項１６に記載のコンピュータソフトウェア最適化システム。
【請求項１８】
前記コンピュータソフトウェア最適化システムはエンドユーザであるコンピュータプログラマーに、取り込んだ最適化フレームワークファイルと、前記ソースコードファイル内の前記ターゲットコードセクションを識別する一連の行番号によって識別される前記アプリケーションのコードベースからの前記関連コードセクションの編集可能バージョンとを表示する、請求項１７に記載のコンピュータソフトウェア最適化システム。
【請求項１９】
前記コンピュータソフトウェア最適化システムは前記ダンプデータファイルからの前記変数データを使用して、前記関連するコードセクションの編集されたバージョンを再実行し、それによって実際のランタイムデータでテストランを提供するように構成される、請求項１４〜１８のいずれかに記載のコンピュータソフトウェア最適化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、ソフトウェアおよびプログラムコードの最適化に関する。
【背景技術】
【０００２】
コンピュータソフトウェアはしばしば、ソフトウェアをより効率的にする最適化を行うことが有益である。コンピュータソフトウェアおよびプログラムコードの最適化は一般に周知であるが、一般に、コンピュータプログラマーおよびソフトウェアエンジニアによる試行および実験によって手動で実行される。しばしば、コンピュータプログラマーは、最適化する関数およびプログラムセグメント内の特定の最適化データ出力ルーチンをプログラムする。これは、非常にカスタマイズされた時間のかかるプロセスであり、出力されるデータもまた、手動で分析される必要がある。コンピュータプログラマーまたはソフトウェアエンジニアは何らかの最適化出力情報を得ると、その情報を分析し、データからどのように学習できるかを考慮することができる。
【０００３】
単一プロセスと分散システムの両方の科学的カーネルの最適化を考慮する場合、主流の事前アプローチは、要求されたデータを出力するために、特にすべてのターゲットカーネルのためにオリジナルコードベースのソースコードを修正し、次に抽出されたデータの周りに最適化フレームワークを手動で構築することを含む。元のコードベースに対するこれらの変更は長くなり、コードのフローに無関係であることが多いため、通常は一時的なものであり、ソースコードをコミットする前に特定のコードベースから削除することが意図されている。実際に、除去プロセスは手動で実施される傾向があり、時折、コード内にアーチファクトが残され、したがって、非効率的な最終コードが特定のソースコードデータベースにコミットされることになる可能性がある。
【０００４】
これらの問題を考慮すると、分散型および非分散型コンピュータソフトウェアの両方に最適化出力を確実かつ正確に提供することができる高度なソフトウェアおよびプログラミング最適化方法が、当業界において現在必要とされている。
【発明の概要】
【０００５】
本開示の実施形態は、分散コンピュータソフトウェアおよび非分散コンピュータソフトウェアの両方のための最適化出力を確実かつ正確に提供することができる高度なソフトウェアおよびプログラミング最適化技法を提供することを目的とする。
【０００６】
本明細書で説明される実施形態は、実行したときに、それが単一のマシンまたは複数のマシン（たとえば、コンピュータクラスター内）においても、ユーザ指定のアプリケーションおよび／またはプロセスのすべての実行中のインスタンスに、アタッチする複数のエージェントを作成するソフトウェアツールとして実装することができる新規な方法を提供することを目的とする。いったんアタッチすると、アタッチされたアプリケーションおよび／またはプロセスごとに、ツールは、指定されたアプリケーションおよび／またはプロセスのためのコードの指定されたターゲットセクションの入力および出力データを取り込む。一実施形態では、コードの指定されたターゲットセクションが単一の機能または複数の機能またはコード部分を含むことができる。次に、このツールはキャプチャされた入力および出力データをコードのターゲットセクションと共にバイナリファイルに書き込み、コードのターゲットセクションを含む入力および出力データの周りに最適化フレームワークを構築することができる。次いで、最適化エンジニアはこの最適化フレームワークを使用して、ターゲットコードセクションの最適化されたバージョンを書き込むことができ、実際のデータおよび最初のランから得られた結果に対して最適化されたバージョンをテストすることができる。この実際のデータは、非合成データとも呼ばれる。非合成データを利用することによって、与えられたプログラムのためのソースコードを開発し続けているエンジニアによって、高度に特異な最適化を達成することができる。
【０００７】
この技術は、カーネル最適化フレームワーク抽出およびカプセル化（Ｋｅｒｎｅｌ  Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ  Ｅｘｔｒａｃｔｉｏｎ  ａｎｄ  Ｅｎｃａｐｓｕｌａｔｉｏｎ）または「ＫＯＦＥＥ」と呼ぶことができる
【０００８】
少なくとも１つの実施形態によれば、コンピュータ回路基板上に構成されたマイクロプロセッサと、入力／出力チャネルで構成されたマイクロプロセッサと、マイクロプロセッサと通信するように構成されたメモリと、メモリとマイクロプロセッサとの間に延在するデータバスと、マイクロプロセッサと通信するように構成された不揮発性メモリと、ソフトウェアプログラマーがコンピュータシステム上のソースコードを見て修正することができるようにするユーザインターフェースと、ターゲットプロセスの名前と、ソースコードファイルのファイル名と、ソースコードファイル内のターゲットコードセクションを識別する１組の行番号と、抽出される変数名のリストと、意図された抽出頻度とを入力として受け取る中央ディスパッチャプログラムをマイクロプロセッサが実行することを可能にする不揮発性メモリ上に格納されたソフトウェアプログラムと、ターゲットプロセスの名前で識別されるソフトウェアエージェントに制御を与えるように構成される中央ディスパッチャプログラムと、ソースコードファイル内のターゲットコードセクションを識別する行番号のセットの最初の行番号に達したときに休止するようにターゲットプロセスに命令するように構成され、ターゲットプロセスを実行し、抽出される変数名のリスト内で識別された変数値をダンプデータファイルにダンプし、次いで、所望の反復回数が達成されるまでこのプロセスを繰り返すソフトウェアエージェントと、を備える非分散型コンピュータシステムで使用するためのコンピュータソフトウェア最適化システムが提供される。
【０００９】
一実施形態によれば、中央ディスパッチャは、アプリケーションのコードベースおよびダンプデータファイルを入力としてソフトウェアエージェントから受け取る。
【００１０】
一実施形態によれば、中央ディスパッチャは、事前構成された最適化フレームワークファイルを入力として受け取る。
【００１１】
一実施形態によれば、中央ディスパッチャは、ソースコードファイル内のターゲットコードセクションを識別する行番号のセットによって識別されるアプリケーションのコードベースからのダンプデータファイルおよび関連コードセクションからの情報を、事前構成された最適化フレームワークファイルに取り込むように構成され、これによって、取り込んだ最適化フレームワークファイルが作成される。
【００１２】
一実施形態によれば、コンピュータソフトウェア最適化システムはソースコードファイル内のターゲットコードセクションを識別する一連の行番号によって識別されるアプリケーションのコードベースから、エンドユーザであるコンピュータプログラマーに、取り込んだ最適化フレームワークファイルおよび関連コードセクションの編集可能バージョンを表示する。
【００１３】
一実施形態によれば、コンピュータソフトウェア最適化システムはダンプデータファイルからの変数データを使用して関連コードセクションの編集されたバージョンを再実行するように構成され、それにより、実際のランタイムデータを有するテストランを提供する。
【００１４】
一実施形態によれば、コンピュータ回路基板上に構成されたマイクロプロセッサであって、入力／出力チャネルを有するように構成されたマイクロプロセッサと、前記マイクロプロセッサと通信するように構成されたメモリと、前記メモリと前記マイクロプロセッサとの間に延在するデータバスと、前記マイクロプロセッサと通信するように構成された不揮発性メモリと、ソフトウェアプログラマーがコンピュータシステム上のソースコードを閲覧編集できるようなユーザインターフェースと、前記マイクロプロセッサが、ターゲットプロセスの名前、ソースコードファイルのファイル名、ソースコードファイル内のターゲットコードセクションを識別する一連の行番号、抽出される変数名のリスト、および意図した抽出頻度を、入力として受け取る中央ディスパッチャプログラムを実行し、前記ターゲットプロセスの名前で識別され、前記ソースコードファイルの前記ターゲットコードセクションを識別する前記一連の行番号の最初の行番号に達したときに一時停止するように前記ターゲットプロセスに指示するように構成されており、前記ターゲットプロセスを実行し、抽出する変数名の前記リストで識別された前記変数値をダンプデータファイルにダンプし、目的の反復回数が達成されるまでこのプロセスを繰り返す、ソフトウェアエージェントプログラムを実行する、というステップを遂行できるようにする前記不揮発性メモリ上に格納されたソフトウェアプログラム、を含む非分散コンピュータシステムを配備する、というステップにより特徴付けられた、非分散コンピューティングシステムで使用するためのコンピュータソフトウェア最適化システムの方法が提供される。
【００１５】
一実施形態によれば、中央ディスパッチャは、アプリケーションのコードベースおよびダンプデータファイルを入力としてソフトウェアエージェントから受け取る。
【００１６】
一実施形態によれば、中央ディスパッチャは、事前構成された最適化フレームワークファイルを入力として受け取る。
【００１７】
一実施形態によれば、中央ディスパッチャは、ソースコードファイル内のターゲットコードセクションを識別する行番号のセットによって識別されるアプリケーションのコードベースからのダンプデータファイルおよび関連コードセクションからの情報を、事前構成された最適化フレームワークファイルに取り込むように構成され、これによって、取り込んだ最適化フレームワークファイルが作成される。
【００１８】
一実施形態によれば、コンピュータソフトウェア最適化システムはソースコードファイル内のターゲットコードセクションを識別する一連の行番号によって識別されるアプリケーションのコードベースから、エンドユーザであるコンピュータプログラマーに、取り込んだ最適化フレームワークファイルおよび関連コードセクションの編集可能バージョンを表示する。
【００１９】
一実施形態によれば、コンピュータソフトウェア最適化システムはダンプデータファイルからの変数データを使用して関連コードセクションの編集されたバージョンを再実行するように構成され、それにより、実際のランタイムデータを有するテストランを提供する。
【００２０】
一実施形態によれば、コンピュータソフトウェア最適化システムは、関連するコードセクションの編集されたバージョンの再実行中に新しいダンプデータファイルを生成するように構成される。
【００２１】
一実施形態によれば、二つ以上のコンピュータシステムを配備し、各コンピュータシステムは、コンピュータ回路基板上に構成されたマイクロプロセッサであって、入力／出力チャネルを有するように構成されたマイクロプロセッサと、マイクロプロセッサと通信するように構成されたメモリと、メモリとマイクロプロセッサとの間に延在するデータバスと、マイクロプロセッサと通信するように構成された不揮発性メモリと、ソフトウェアプログラマーがコンピュータシステム上のソースコードを閲覧編集できるようなユーザインターフェースを含み、前記マイクロプロセッサが、ターゲットプロセスの名前、ソースコードファイルのファイル名、ソースコードファイル内のターゲットコードセクションを識別する一連の行番号、抽出される変数名のリスト、および意図した抽出頻度を、入力として受け取る中央ディスパッチャプログラムを実行する、というステップを遂行できるようにする不揮発性メモリ上に格納されたソフトウェアプログラムと、各システムのマイクロプロセッサが、前記ターゲットプロセスの名前で識別され、前記ソースコードファイルの前記ターゲットコードセクションを識別する前記一連の行番号の最初の行番号に達したときに一時停止するように前記ターゲットプロセスに指示するように構成されており、前記ターゲットプロセスを実行し、抽出される変数名の前記リストで識別された前記変数値をダンプデータファイルにダンプし、目的の反復回数に達するまでこのプロセスを繰り返す、ソフトウェアエージェントプログラムを実行することを可能にする、構成されたコンピュータシステムの各々の不揮発性メモリに格納されたソフトウェアプログラムと、各ソフトウェアエージェントプログラムからダンプデータファイルを収集するステップをさらに遂行する少なくとも１つのコンピュータシステムの不揮発性メモリに格納されたソフトウェアプログラムと、を含むことを特徴とする、分散コンピューティングシステムで使用するためのコンピュータソフトウェア最適化システムの方法が提供される。
【００２２】
一実施形態によれば、中央ディスパッチャは、アプリケーションのコードベースと、各ソフトウェアエージェントからのダンプデータファイルの内容とを入力として受け取る。
【００２３】
一実施形態によれば、中央ディスパッチャは、分散コンピューティングシステムからの情報を取り込むように構成された事前構成された最適化フレームワークファイルを入力として受け取る。
【００２４】
一実施形態によれば、中央ディスパッチャはソースコードファイル内のターゲットコードセクションを識別する行番号のセットによって識別されるアプリケーションのコードベースからのダンプデータファイルおよび関連コードセクションからの情報を、事前構成された最適化フレームワークファイルに取り込むように構成され、それによって、分散コンピューティングシステム用に、取り込んだ最適化フレームワークファイルが作成される。
【００２５】
一実施形態によれば、コンピュータソフトウェア最適化システムは、ソースコードファイル内のターゲットコードセクションを識別する一連の行番号によって識別されるアプリケーションのコードベースから、エンドユーザであるコンピュータプログラマーに、取り込んだ最適化フレームワークファイルおよび関連コードセクションの編集可能バージョンを表示する。
【００２６】
一実施形態によれば、コンピュータソフトウェア最適化システムはダンプデータファイルからの変数データを使用して関連コードセクションの編集されたバージョンを再実行するように構成され、それにより、実際のランタイムデータを有するテストランを提供する。
【図面の簡単な説明】
【００２７】
本開示の実施形態の前述の態様、特徴、および利点は実施形態の以下の説明および添付の図面を参照して考慮される場合に、さらに理解されるのであろう。添付の図面に示される本開示の実施形態を説明する際に、明確にするために、特定の用語が使用される。しかしながら、本開示は使用される特定の用語に限定されることを意図するものではなく、各特定の用語は同様の目的を達成するために同様の方法で動作する等価物を含むことを理解されたい。
【００２８】
図１は、単一のプロセスおよび単一のマシンで構成される、本明細書で説明されるソフトウェア最適化技法の１つの実施形態のブロック図を示す。
【００２９】
図２は、複数のプロセスおよび複数のマシンで構成される、本明細書で説明されるソフトウェア最適化技法の１つの実施形態のブロック図を示す。
【００３０】
図３は、複数のプロセスおよび複数のマシンで構成される、本明細書で説明されるソフトウェア最適化技法の１つの実施形態のワークフローのブロック図を示す。
【発明を実施するための形態】
【００３１】
以下、添付図面を参照して詳細に説明する実施形態を参照することにより、本発明の利点及び特徴、並びにそれらを達成する方法が明らかになるのであろう。しかしながら、本発明は、以下に開示される実施形態に限定されるものではなく、様々な異なる形態で実施することができる。実施形態は本発明の開示を完了するために、および本発明の範囲を当業者に完全に表すためにのみ提供される。
【００３２】
説明を簡単かつ明確にするために、図面は一般的な構成方法を示し、周知の特徴および技法の説明および詳細は、本発明の説明される実施形態の議論を不必要に曖昧にすることを避けるために省略されてもよい。さらに、図面中の要素は、必ずしも一定の縮尺で描かれていない。例えば、図中のいくつかの要素の寸法は本発明の実施形態の理解を改善するのを助けるために、他の要素に対して誇張されていることがある。明細書全体を通して、同様の参照番号は同様の要素を指す。
【００３３】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００３４】
以下に記載される実施形態はソフトウェア最適化システムに関連し、共通用語の以下の用語リストは、このシステムの理解を助けるために提供される。
ソフトウェア最適化：ソフトウェアシステムの一部がより効率的に動作したり、使用するリソースが少なくなるようにソフトウェアシステムを変更するプロセス。
プロセス：実行中のコンピュータプログラムのインスタンス。
ソースコード：人によってプレーンテキストで書かれたソフトウェアのバージョン。
変数：ソースコード内の記号名であり、実行時の値に関連付けられ、関連付けられた値は変更される可能性がある。
バイナリダンプ：コンピュータメモリの内容をバイナリ形式で外部格納装置にコピーする操作。
カーネル：共通の数値演算を実行するソースコード内のソフトウェアプロシージャ。
最適化フレームワーク：特定のカーネルを中心としたソフトウェア最適化の実装、検証、評価に役立つソフトウェアをサポートする。
コンピュータクラスタ：単一のシステムとして見えるように連携する、大まかに、または密接に接続された一連のコンピュータ。
ＫＯＦＥＥ：この研究で論じた方法の名前。Ｋｅｒｎｅｌ  Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｆｒａｍｅｗｏｒｋ  Ｅｘｔｒａｃｔｉｏｎ  ａｎｄ  Ｅｎｃａｐｓｕｌａｔｉｏｎ（カーネル最適化フレームワークの抽出およびカプセル化）の略。
【００３５】
図１を参照すると、一実施形態では、ソフトウェア最適化システム１００が単一のコンピューティングシステム上で実行される単一のプロセスと並行して実行されるように構成される。単一のコンピューティングシステムは種々のタイプのコンピュータ、マイクロコンピュータ、モバイルコンピュータなどを含むことができ、一般に、少なくとも１つのプロセッサ、メモリ、入出力システム（「Ｉ／Ｏシステム」）、およびオペレーティングシステムおよび／またはソフトウェアを記憶するための不揮発性メモリを有するように構成されたシステムを指す。再び図１を参照すると、ソフトウェア最適化システム１００は図示の実施形態に関連して説明したように、入力１１０として、ターゲットプロセスの名前、ソースコードファイル名、ターゲットコードセクションの行番号のセット、抽出すべき変数名のリスト、および所期の抽出頻度を受け取る。中央ディスパッチャ１２０は、ステップ１２２で実行されるか、または開始され、ステップ１２４で１つのソフトウェアエージェント１５０（「ＢＥＡＮ」とも呼ばれる）を作成する。一実施形態では、中央ディスパッチャ１２０が、単一の計算システム上で実行されているオペレーティングシステムカーネルへのアクセスを有するか、またはオペレーティングシステムカーネルと統合されるように構成される。次に、中央ディスパッチャ１２０は、ソフトウェアエージェント１５０に制御を与えるステップ１２６を実行する。ソフトウェアエージェント１５０が制御を有すると、ソフトウェアエージェント１５０はいくつかのステップを実行することができる。ソフトウェアエージェント１５０はステップ１５２でターゲットプロセスにアタッチし、次いで、ステップ１５４で、データ抽出のための行番号に達したときに休止するようにターゲットプロセスに命令する。一実施形態ではデータ抽出のための行番号がターゲットコードセクションのための行番号のセット内の第１の行番号であるように構成され、第２の行番号はデータ抽出を実行するための最終行番号として構成される。
【００３６】
次に、ソフトウェアエージェント１５０はプロセスがステップ１５６で実際に一時停止されたかどうかをチェックし、プロセスがまだ一時停止されていない場合は一時停止するのを待つ。一時停止されると、抽出される変数名のリストからの全ての変数の内容が、ステップ１５８でメモリファイルにダンプされる。次いで、一時停止されたプロセスは、ステップ１６０で実行を継続するように指示される。次に、必要な反復回数が完了したかどうかを確認するために、ステップ１６２においてカウンタに対してチェックが実行され、必要な回数がまだ完了していない場合には、ソフトウェアエージェント１５０がステップ１５４において、データ抽出のための行番号の監視に戻り、再び、その行番号に達したときに、ターゲットプロセスに一時停止するように指示する。図１に示すように、各ステップ１５４、１５６、１５８、１６０、および１６２を含むこのシーケンスの残りは、ステップ１６２で完了したものとして必要な反復が検証されるまで続く。ソフトウェアエージェント１５０によって必要な反復が完了したことが検証されると、エージェントはターゲットプロセスからデタッチし１６４、ステップ１６６でディスパッチャ１２０に制御を戻す。
【００３７】
データ抽出プロセスを通じて、ソフトウェアエージェント１５０のデータダンプは、バイナリデータとしてリポジトリまたはダンプファイルに格納される（１４０）。データ抽出ステップが完了し、中央ディスパッチャ１２０に制御が戻されると、アプリケーション１１２のコードベースをリソースとして使用して、ターゲットカーネルを含むソースコードが抽出される（１２８）。次いで、リポジトリファイルからの抽出されたデータ１４０とアプリケーションのコードベース１１２は、ステップ１３０において、最適化ルーチンに入力されたターゲットコードセクションのための行番号のセットと一致するアプリケーションのコードベース１１２から抽出されたデータとコードスニペットを、リポジトリファイルから抽出されたデータ１４０と共に事前構成された最適化フレームワークに取り込む（１１４）ことによって、最適化フレームワークを構築するために使用される。中央ディスパッチャ１２０のコード実行、次いで停止し（１３２）、最適化エンジニアは、このプロセスから作成された最適化フレームワークの観察および相互作用に基づいて、ターゲットとされるプログラムセクションを修正することができる。
【００３８】
図２を参照すると、一実施形態では、ソフトウェア最適化システム２００が複数のコンピューティングシステム上で実行される複数のプロセスと並列に実行されるように構成される。構成された複数のコンピューティングシステムの個々のコンピューティングシステムは種々のタイプのコンピュータ、マイクロコンピュータ、モバイルコンピュータなどを含むことができ、一般に、少なくとも１つのプロセッサ、メモリ、入出力システム（「Ｉ／Ｏシステム」）、およびオペレーティングシステムおよび／またはソフトウェアを記憶するための不揮発性メモリを有するように構成されたシステムを指す。
【００３９】
再び図２を参照すると、ソフトウェア最適化システム２００はこの図示の実施形態に関連して説明したように、入力２１０として、ターゲットプロセスの名前、ソースコードファイル名、ターゲットコードセクションの行番号のセット、抽出すべき変数名のリスト、および所望する抽出頻度を受け取る。一実施形態では、これらの入力２１０のそれぞれは複数のプロセスのそれぞれについて同じであってもよく、または複数のプロセスのそれぞれについて個別に定義されてもよい。
【００４０】
中央ディスパッチャプログラム２２０（またはルーチン）は実行または開始され（２２２）、複数のプロセスのそれぞれについて１つのソフトウェアエージェント（「ＢＥＡＮ」とも呼ばれる）を作成し、「Ｎ」個のソフトウェアエージェントが作成されるようにする。一実施形態では中央ディスパッチャ２２０が複数のコンピューティングシステムのうちの少なくとも１つで実行されているオペレーティングシステムカーネルにアクセスするか、またはそれと統合されるように構成される。中央ディスパッチャ２２０はターゲットホストのすべてに接続するステップをとる（２２４）。中央ディスパッチャ２２０がターゲットプロセスの実行中のインスタンスの数についてすべてのホストに照会し、その値を「Ｎ」個として格納する（２２６）。これは各ソフトウェアエージェント２３０がターゲットプロセスの単一のインスタンスに接続するように「Ｎ」個のソフトウェアエージェントまたはＢＥＡＮが作成される場合である（２２８）。次に、中央ディスパッチャ２２０は、ステップ２３０において、ソフトウェアエージェント２５０（個々のソフトウェアエージェント２５２、２５４、２５６、２５８、２６０、および２６２を表す）の各々に制御を与える。ソフトウェアエージェント２５０が制御を有すると、ソフトウェアエージェント２５０によって多数のステップを実行することができる。ソフトウェアエージェント２５０はそれぞれのターゲットプロセスの各々にアタッチし、（図１に関して単一のプロセスに関して示されたステップと同様に）データ抽出のための行番号に達したときに休止するようにターゲットプロセスに命令する。一実施形態ではデータ抽出のための行番号がターゲットコードセクションのための行番号のセット内の第１の行番号であるように構成され、第２の行番号はデータ抽出を実行するための最終行番号として構成される。
【００４１】
次に、ソフトウェアエージェント２５０はプロセスが実際に一時停止したかどうかをチェックし、プロセスがまだ一時停止していない場合には一時停止するのを待つ（単一のプロセスの実施形態に関してより詳細に図１に示すステップ）。一時停止すると、抽出される変数名のリストからのすべての変数の内容が、データを書き込むソフトウェアエージェントに関する識別情報を持つメモリファイルにダンプされる。その後、一時停止したプロセスは、実行を続行するように指示される。次に、カウンタに対してチェックが実行され、必要な反復回数が完了したかどうかが確認される。必要な回数がまだ完了していない場合、ソフトウェアエージェントはデータ抽出のために行番号の監視に戻り、その行番号に達したときにターゲットプロセスを一時停止するように再び指示する。このシーケンスの残りの部分は、ステップ２６４において、すべてのソフトウェアエージェントについて必要な繰り返しが完了したことが確認されるまで続く。ソフトウェアエージェント２５０によって必要な反復が完了したことが検証されると、ソフトウェアエージェント２５０はそれぞれターゲットプロセスからデタッチされ、ステップ２６８で中央ディスパッチャ２２０に制御を戻す。すべてのソフトウェアエージェント２５０からのバイナリデータが収集され（２６６）、すべてのバイナリデータがバイナリデータリポジトリファイルに書き込まれ（２４０）、中央ディスパッチャ２２０に転送される。一実施形態では、収集されるバイナリデータがソフトウェアエージェントによって提供されるフォーマットである。代替実施形態では、収集されたバイナリデータを再フォーマットまたは再編成するために、追加のステップを取ることができる。
【００４２】
データ抽出ステップが完了し、中央ディスパッチャ２２０に制御が戻されると、アプリケーションのコードベース２１２をリソースとして使用して、ターゲットカーネルを含むソースコードが抽出される（２３２）。次に、バイナリデータリポジトリファイルから抽出されたデータ２４０およびアプリケーションのコードベース２１２は、ステップ２３４において、リポジトリファイルから抽出されたデータ２４０および最適化ルーチンに入力されたターゲットコードセクションの行番号のセットと一致するアプリケーションのコードベース２１２からのコードスニペットを、事前に構成された最適化フレームワークファイル２１４に取り込むことによって、最適化フレームワークを構築するために使用される。中央ディスパッチャ２２０のコード実行、次いで停止し（２３６）、および最適化エンジニアは、このプロセスから作成された最適化フレームワークの観察および相互作用に基づいてプログラムセクションを修正することができる。
【００４３】
図３を参照すると、本明細書で説明するソフトウェア最適化技法の１つの実施形態のワークフロー３００のブロック図が示されている。この例示的な例では、複数のプロセスおよび複数のマシンが構成されている。代替実施形態では、より多くのコンピュータクラスタおよび／または追加のマシンおよびターゲットプロセスを構成することができる。ステップ１において、中央ディスパッチャは、４つのソフトウェアエージェント３１０ａ（「ＢＥＡＮＳ」とも呼ばれる）を作成する。各ソフトウェアエージェントまたはＢＥＡＮ（３２０ａに示す）は、ソフトウェアプログラマーが識別し、最適化したい１つのターゲットプロセスに対応する。中央ディスパッチャは最初、３２０ａに示す各ソフトウェアエージェントの制御下にある。コンピュータクラスタ３３０ａは、第１のマシン３３２ａおよび第２のマシン３３４ａで構成される。第１のマシン３３２ａはターゲットプロセス１の３３６ａを実行し、ターゲットデータ３４４ａの第１のセットはターゲットプロセス１の３３６ａに関連付けられる。この例では、第１のマシンはターゲットプロセス２の３３８ａも実行し、ターゲットデータの第２のセット３４６ａがターゲットプロセス２の３３８ａに関連付けられる。第２のマシン３３４ａはターゲットプロセス３の３４０ａを実行し、ターゲットデータ３４８ａの第３のセットはターゲットプロセス３の３４０ａに関連付けられる。この例では、第２のマシンもターゲットプロセス４の３４２ａを実行し、ターゲットデータの第４のセット３５０ａがターゲットプロセス４の３４２ａに関連付けられる。
【００４４】
再び図３を参照すると、ステップ２において、中央ディスパッチャ３２０ｂは、各ソフトウェアエージェント（「ＢＥＡＮ」）を送信して、コンピュータクラスタ３３０ｂ内の対応するプロセスにアタッチする。ソフトウェアエージェント１はマシン１の３３２ｂのターゲットプロセス１の３３６ｂにアタッチし、ターゲットプロセス１の３３６ｂが実行されるときにターゲットデータ３４４ｂの第１のセットを収集する。ソフトウェアエージェント２はマシン１の３３２ｂのターゲットプロセス２の３３８ｂにアタッチし、ターゲットプロセス２の３３８ｂが実行されるときにターゲットデータ３４６ｂの第２のセットを収集する。ソフトウェアエージェント３はマシン２の３３４ｂのターゲットプロセス３の３４０ｂにアタッチし、ターゲットプロセス３の３４０ｂが実行されるときにターゲットデータ３４８ｂの第３のセットを収集する。ソフトウェアエージェント４はマシン２の３３４ｂのターゲットプロセス４の３４２ｂにアタッチし、ターゲットプロセス４の３４２ｂが実行されるときにターゲットデータ３５０ｂの第４のセットを収集する。
【００４５】
ステップ３において、各ソフトウェアエージェントはそれぞれのターゲットデータのコピーを作成し、データを中央ディスパッチャ３２０ｃに送り返す。このステップの終わりに、マシン１の３３２ｃおよびマシン２の３３４ｃからなるコンピュータクラスタ３３０ｃはターゲットプロセス１の３３６ｃ、ターゲットプロセス２の３３８ｃ、ターゲットプロセス３の３４０ｃ、およびターゲットプロセス４の３４２ｃのターゲットコード部分の実行を完了し、ターゲットデータ３４４ｃ、３４６ｃ、３４８ｃ、および３５０ｃはすべて収集され、中央ディスパッチャ３２０ｃに送り返される。ステップ４において、中央ディスパッチャ３２０ｄはソースコードからターゲットカーネルを抽出し、それを抽出されたデータと共に使用して、最適化フレームワークを作成する。この実施形態のこのステップでは、ターゲットコードカーネル３６０からのアプリケーションソースコード３６０が入力として中央ディスパッチャ３２０ｄに提供される。次いで、中央ディスパッチャ３２０ｄはアプリケーションソースコード３６０およびターゲットデータセット３４４ｄ、３４６ｄ、３４８ｄ、および３５０ｄのそれぞれからターゲットコードの関連部分を取り出す。ターゲットデータセットおよびアプリケーションソースコード３６０から抽出されたデータは、両方とも、事前に構成された最適化フレームワークファイル３７０に取り込むことにより、最適化フレームワークを構築するために利用される。この最適化フレームワークファイルにより、コンピュータプログラマーは実際の入出力データに基づいてコードセクションを研究し、最適化することができる。
【００４６】
一実施形態では、上記の技法および方法をＣ、Ｃ＋＋、Ｆｏｒｔｒａｎ、および他の同様のプログラミング言語で書かれたターゲットアプリケーションおよびコードセクションに実装することができる。他の同様なプログラミング言語に関しては、この実装において、プログラミング環境および言語が特定の変数のバイナリコンテンツを便利に抽出することができる堅牢なデバッガをサポートまたは提供すること、および特定の変数のアドレスおよびサイズなどのランタイム情報を抽出または抽出を助けることができる堅牢なデバッグ情報リーダライブラリを提供することが有用である。
【００４７】
一般に、本明細書で説明するソフトウェア構成および技法は、単一プロセスまたは分散ソフトウェアにおいて様々なターゲットカーネルを最適化するために使用することができる。例えば、一実施形態では、上述の技法および方法がリザーバシミュレーションソフトウェアを最適化するために有用であり得る。例えば、リザーバシミュレーションソフトウェアはスパースマトリックスベクトル乗算カーネルを含むことができ、記載された構成および技法を使用して、データを抽出し、スパースマトリックスベクトル乗算カーネルの周りに最適化フレームワークを構築することができる。
【００４８】
上記の説明から、汎用ハードウェアと組み合わせることができるソフトウェアを含む本発明の多数の異なる実施形態が想定される。コンピュータシステムは実施形態の方法を実施するためのソフトウェアプログラムのための命令を含む非一時的なコンピュータ可読媒体を含む様々な実施形態の方法を実行するために、様々な構成要素を用いて作成することができる。
【００４９】
上記の開示は、本発明の様々な実施形態を例示することを意味する。開示を全体的に考慮すれば、様々な修正が当業者に明らかになるであろう。
【図１】
2021501405.tif 000003
【図２】
2021501405.tif 000004
【図３】
2021501405.tif 000005
【国際調査報告】
2021501405.tif 000006
2021501405.tif 000007
2021501405.tif 000008