(57)【要約】【課題】複数の処理要素を含む階層的並列環境内で分散型ランタイム診断を実行するための技術を提供する。【解決手段】ユーザは、ランタイム中に、診断を実行すべき処理要素、当該処理要素が実行すべきアルゴリズム、当該アルゴリズムが処理すべきデータ・セット、当該処理要素が実行すべき診断機能、当該診断機能を実行するための条件及び当該処理要素に対してローカルのメモリのための可視化パラメータを構成することができる。その結果、階層的並列環境内のデバッグを支援するのに十分な制御度及びカスタマイゼーションを以て、ランタイム診断を実行することができる。【選択図】  図４
2010198612.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理要素を含む階層的並列環境内で分散ランタイム診断を実行するためのコンピュータ実装方法であって、
（ａ）前記階層的並列環境の少なくとも第１の処理要素を診断のために指定するユーザ入力を受信するステップと、
（ｂ）データ・セットを使用して前記第１の処理要素が実行すべきアルゴリズムを指定するユーザ入力を受信するステップと、
（ｃ）条件を指定するユーザ入力を受信するステップとを有し、
前記条件が、前記アルゴリズム中に、診断機能をいつ実行すべきかを指定し、
（ｄ）前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を、前記第１の処理要素に送信するステップと、
（ｅ）前記条件が満たされるとき、前記第１の処理要素上で前記診断機能を呼び出すステップとをさらに有する、コンピュータ実装方法。
【請求項２】
前記階層的並列環境の第２の処理要素を診断のために指定するユーザ入力を受信するステップと、
前記指定されたアルゴリズム、前記指定されたデータ・セット、第２の診断機能及び前記指定された条件を、前記第２の処理要素に送信するステップと、
前記条件が満たされるとき、前記第２の処理要素上で前記第２の診断機能を呼び出すステップとをさらに有する、請求項１記載のコンピュータ実装方法。
【請求項３】
データ・サイズ及びサンプリング・レートを指定するユーザ入力を受信するステップと、
前記指定されたデータ・サイズ及び前記指定されたサンプリング・レートに基づき、可視化情報を表示するステップとをさらに有する、請求項１記載のコンピュータ実装方法。
【請求項４】
前記指定されたアルゴリズムが診断作業機能を有し、前記指定されたアルゴリズム、前記指定されたデータ・セット及び前記診断機能のうち少なくとも１つが、前記第１の処理要素による使用のためにメッセージを介してメモリにロードされる、請求項１記載のコンピュータ実装方法。
【請求項５】
前記階層的並列環境がマスタ処理要素を含み、前記メッセージが前記マスタ処理要素によって送信され、
データ・サイズ及びサンプリング・レートを指定するユーザ入力を受信するステップと、
前記第１の処理要素によって、前記指定されたデータ・サイズのデータを前記指定されたサンプリング・レートで前記マスタ処理要素に返送するステップと、
前記返送されたデータに基づき、可視化情報を表示するステップとをさらに有する、請求項４記載のコンピュータ実装方法。
【請求項６】
前記診断機能がチェックサムを計算する、請求項４記載のコンピュータ実装方法。
【請求項７】
前記指定された条件が、行番号、ループ反復回数、プログラム・カウンタ及びイベントの出現のうち少なくとも１つを含み、前記診断作業機能が、前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を格納するための前記第１の処理要素に対してローカルのメモリの領域を割り振る、請求項４記載のコンピュータ実装方法。
【請求項８】
複数の処理要素を含む階層的並列環境内で分散ランタイム診断を実行するためのプログラムを保持するコンピュータ可読ストレージ媒体であって、
前記プログラムが、コンピュータに、
（ａ）前記階層的並列環境の少なくとも第１の処理要素を診断のために指定するユーザ入力を受信するステップと、
（ｂ）データ・セットを使用して前記第１の処理要素が実行すべきアルゴリズムを指定するユーザ入力を受信するステップと、
（ｃ）条件を指定するユーザ入力を受信するステップとを実行させ、
前記条件が、前記アルゴリズム中に、診断機能をいつ実行すべきかを指定し、
前記プログラムが、前記コンピュータに、
（ｄ）前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を、前記第１の処理要素に送信するステップと、
（ｅ）前記条件が満たされるとき、前記第１の処理要素上で前記診断機能を呼び出すステップとをさらに実行させる、コンピュータ可読ストレージ媒体。
【請求項９】
前記プログラムが、前記コンピュータに、
前記階層的並列環境の第２の処理要素を診断のために指定するユーザ入力を受信するステップと、
前記指定されたアルゴリズム、前記指定されたデータ・セット、第２の診断機能及び前記指定された条件を、前記第２の処理要素に送信するステップと、
前記条件が満たされるとき、前記第２の処理要素上で前記第２の診断機能を呼び出すステップとをさらに実行させる、請求項８記載のコンピュータ可読ストレージ媒体。
【請求項１０】
前記プログラムが、前記コンピュータに、
データ・サイズ及びサンプリング・レートを指定するユーザ入力を受信するステップと、
前記指定されたデータ・サイズ及び前記指定されたサンプリング・レートに基づき、可視化情報を表示するステップとをさらに実行させる、請求項８記載のコンピュータ可読ストレージ媒体。
【請求項１１】
前記指定されたアルゴリズムが診断作業機能を有し、前記指定されたアルゴリズム、前記指定されたデータ・セット及び前記診断機能のうち少なくとも１つが、前記第１の処理要素による使用のためにメッセージを介してメモリにロードされる、請求項８記載のコンピュータ可読ストレージ媒体。
【請求項１２】
前記階層的並列環境がマスタ処理要素を含み、前記メッセージが前記マスタ処理要素によって送信され、
前記プログラムが、前記コンピュータに、
データ・サイズ及びサンプリング・レートを指定するユーザ入力を受信するステップと、
前記第１の処理要素によって、前記指定されたデータ・サイズのデータを前記指定されたサンプリング・レートで前記マスタ処理要素に返送するステップと、
前記返送されたデータに基づき、可視化情報を表示するステップとをさらに実行させる、請求項１１記載のコンピュータ可読ストレージ媒体
【請求項１３】
前記診断機能がチェックサムを計算する、請求項１１記載のコンピュータ可読ストレージ媒体。
【請求項１４】
前記指定された条件が、行番号、ループ反復回数、プログラム・カウンタ及びイベントの出現のうち少なくとも１つを含み、前記診断作業機能が、前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を格納するための前記第１の処理要素に対してローカルのメモリの領域を割り振る、請求項１１記載のコンピュータ可読ストレージ媒体。
【請求項１５】
プロセッサと、
複数の処理要素を含む階層的並列環境内で分散ランタイム診断を実行するためのプログラムを保持するメモリとを備えるシステムにして、
前記プログラムが、前記プロセッサに、
（ａ）前記階層的並列環境の少なくとも第１の処理要素を診断のために指定するユーザ入力を受信するステップと、
（ｂ）データ・セットを使用して前記第１の処理要素が実行すべきアルゴリズムを指定するユーザ入力を受信するステップと、
（ｃ）条件を指定するユーザ入力を受信するステップとを実行させ、
前記条件が、前記アルゴリズム中に、診断機能をいつ実行すべきかを指定し、
前記プログラムが、前記プロセッサに、
（ｄ）前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を、前記第１の処理要素に送信するステップと、
（ｅ）前記条件が満たされるとき、前記第１の処理要素上で前記診断機能を呼び出すステップとをさらに実行させる、システム。
【請求項１６】
前記プログラムが、前記プロセッサに、
前記階層的並列環境の第２の処理要素を診断のために指定するユーザ入力を受信するステップと、
前記指定されたアルゴリズム、前記指定されたデータ・セット、第２の診断機能及び前記指定された条件を、前記第２の処理要素に送信するステップと、
前記条件が満たされるとき、前記第２の処理要素上で前記第２の診断機能を呼び出すステップとをさらに実行させる、請求項１５記載のシステム。
【請求項１７】
前記プログラムが、前記プロセッサに、
データ・サイズ及びサンプリング・レートを指定するユーザ入力を受信するステップと、
前記指定されたデータ・サイズ及び前記指定されたサンプリング・レートに基づき、可視化情報を表示するステップとをさらに実行させる、請求項１５記載のシステム。
【請求項１８】
前記指定されたアルゴリズムが診断作業機能を有し、前記指定されたアルゴリズム、前記指定されたデータ・セット及び前記診断機能のうち少なくとも１つが、前記第１の処理要素による使用のためにメッセージを介してメモリにロードされる、請求項１５記載のシステム。
【請求項１９】
前記階層的並列環境がマスタ処理要素を含み、前記メッセージが前記マスタ処理要素によって送信され、
前記プログラムが、前記プロセッサに、
データ・サイズ及びサンプリング・レートを指定するユーザ入力を受信するステップと、
前記第１の処理要素によって、前記指定されたデータ・サイズのデータを前記指定されたサンプリング・レートで前記マスタ処理要素に返送するステップと、
前記返送されたデータに基づき、可視化情報を表示するステップとをさらに実行させる、請求項１８記載のシステム。
【請求項２０】
前記診断機能がチェックサムを計算する、請求項１８記載のシステム。
【請求項２１】
前記指定された条件が、行番号、ループ反復回数、プログラム・カウンタ及びイベントの出現のうち少なくとも１つを含み、前記診断作業機能が、前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を格納するための前記第１の処理要素に対してローカルのメモリの領域を割り振る、請求項１８記載のシステム。
【請求項２２】
少なくとも１つの主処理要素及び複数の従属処理要素を含むコンピュータ環境内で分散ランタイム診断を実行するためのコンピュータ実装方法であって、
（ａ）前記主処理要素によって、１つ以上の前記従属処理要素上の実行可能コードを呼び出すステップを有し、
前記１つ以上の従属処理要素のうち少なくとも第１の従属処理要素上の前記実行可能コードは、指定された条件が満たされるとき、診断機能を呼び出すように構成され、
（ｂ）前記指定された条件が満たされるとき、前記第１の従属処理要素上の前記実行可能コードの実行中に、当該実行可能コードを介して、前記第１の従属処理要素上の前記診断機能を呼び出すステップと、
（ｃ）前記第１の従属処理要素によって、前記診断機能の呼び出しから得られた結果を、前記第１の従属処理要素に対してローカルのメモリの専用領域内に格納するステップと、
（ｄ）前記第１の従属処理要素によって、前記結果を前記主処理要素に報告するステップとをさらに有する、コンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ・ツールに係り、さらに詳細に説明すれば、階層的並列環境内の分散ランタイム診断のためのデバッグ・ツールに係る。
【背景技術】
【０００２】
異機種処理要素の広いアレイにわたってデータを処理するソフトウェア・システムでは、種々の通信層は、必ずしもデータ保全性を保証しないことがある。かかるソフトウェア・システムの１例である分散並列アプリケーションは、複数のＸ８６プロセッサ上で実行される複数の部分及び複数のＣｅｌｌＢＥ（CellBroadband Engine）プロセッサ上で実行される複数の部分を含む。ソフトウェア開発者は、単体テストに合格した複雑な分散アプリケーションを作成することがある。しかし、この分散アプリケーションが実行されるとき、戻されるデータは、期待した結果からわずかに異なることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般に、かかるシナリオでは、かかるデータ異常の原因を分散型異機種ランドスケープにわたって識別することは、非常に困難である。この原因は、ソフトウェア・バグ、ハードウェア障害又は設計上の欠陥の何れかであり得る。このことは、データ保全性を保証すること、ソフトウェア・システムの保全性を保証すること、性能分析及び階層的並列ソフトウェアの迅速且つ効率的な開発に対する障害となる。
【課題を解決するための手段】
【０００４】
本発明の１つの側面は、複数の処理要素を含む階層的並列環境内で分散ランタイム診断を実行するためのコンピュータ実装方法に向けられている。この方法は、
（ａ）前記階層的並列環境の少なくとも第１の処理要素を診断のために指定するユーザ入力を受信するステップと、
（ｂ）データ・セットを使用して前記第１の処理要素が実行すべきアルゴリズムを指定するユーザ入力を受信するステップと、
（ｃ）条件を指定するユーザ入力を受信するステップとを有し、
前記条件が、前記アルゴリズム中に、診断機能をいつ実行すべきかを指定し、
（ｄ）前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を、前記第１の処理要素に送信するステップと、
（ｅ）前記条件が満たされるとき、前記第１の処理要素上で前記診断機能を呼び出すステップとをさらに有する。
【０００５】
本発明の第２の側面は、複数の処理要素を含む階層的並列環境内で分散ランタイム診断を実行するためのプログラムを保持するコンピュータ可読ストレージ媒体に向けられている。前記プログラムは、コンピュータに、
（ａ）前記階層的並列環境の少なくとも第１の処理要素を診断のために指定するユーザ入力を受信するステップと、
（ｂ）データ・セットを使用して前記第１の処理要素が実行すべきアルゴリズムを指定するユーザ入力を受信するステップと、
（ｃ）条件を指定するユーザ入力を受信するステップとを実行させ、
前記条件が、前記アルゴリズム中に、診断機能をいつ実行すべきかを指定し、
前記プログラムは、前記コンピュータに、
（ｄ）前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を、前記第１の処理要素に送信するステップと、
（ｅ）前記条件が満たされるとき、前記第１の処理要素上で前記診断機能を呼び出すステップとをさらに実行させる。
【０００６】
本発明の第３の側面は、プロセッサと、複数の処理要素を含む階層的並列環境内で分散ランタイム診断を実行するためのプログラムを保持するメモリとを備えるシステムに向けられている。前記プログラムは、前記プロセッサに、
（ａ）前記階層的並列環境の少なくとも第１の処理要素を診断のために指定するユーザ入力を受信するステップと、
（ｂ）データ・セットを使用して前記第１の処理要素が実行すべきアルゴリズムを指定するユーザ入力を受信するステップと、
（ｃ）条件を指定するユーザ入力を受信するステップとを実行させ、
前記条件が、前記アルゴリズム中に、診断機能をいつ実行すべきかを指定し、
前記プログラムは、前記プロセッサに、
（ｄ）前記指定されたアルゴリズム、前記指定されたデータ・セット、前記診断機能及び前記指定された条件を、前記第１の処理要素に送信するステップと、
（ｅ）前記条件が満たされるとき、前記第１の処理要素上で前記診断機能を呼び出すステップとをさらに実行させる。
【０００７】
本発明の第４の側面は、少なくとも１つの主処理要素及び複数の従属処理要素を含むコンピュータ環境内で分散ランタイム診断を実行するためのコンピュータ実装方法に向けられている。この方法は、
（ａ）前記主処理要素によって、１つ以上の前記従属処理要素上の実行可能コードを呼び出すステップを有し、
前記１つ以上の従属処理要素のうち少なくとも第１の従属処理要素上の前記実行可能コードは、指定された条件が満たされるとき、診断機能を呼び出すように構成され、
（ｂ）前記条件が満たされるとき、前記第１の従属処理要素上の前記実行可能コードの実行中に、当該実行可能コードを介して、前記従属処理要素上の前記診断機能を呼び出すステップと、
（ｃ）前記第１の従属処理要素によって、前記診断機能の呼び出しから得られた結果を、前記第１の従属処理要素に対してローカルのメモリの専用領域内に格納するステップと、
（ｄ）前記第１の従属処理要素によって、前記結果を前記主処理要素に報告するステップとをさらに有する。
【発明の効果】
【０００８】
本発明は、データ異常又はアプリケーション誤動作の源を階層的並列環境にわたって識別することができるという効果を奏する。具体的には、本発明は、階層的並列環境内のデバッグを支援するのに十分な制御度及びカスタマイゼーションを以て、ランタイム診断を実行することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に従った、階層的並列環境のプロセッサの全容を示す図である。
【図２】本発明の実施形態に従った、階層的並列環境の構造を示す図である。
【図３】本発明の実施形態に従った、階層的並列環境内で分散ランタイム診断を実行するためのグラフィカル・ユーザ・インタフェースを示す図である。
【図４】本発明の実施形態に従った、マスタ処理要素によって分散ランタイム診断を構成し且つ実行するための方法を示すフローチャートである。
【図５】本発明の実施形態に従った、指定された処理要素上で分散ランタイム診断を構成し且つ実行するための方法を示すフローチャートである。
【図６】本発明の実施形態に従った、指定された処理要素上で診断機能を実行するための方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
従って、本発明の実施形態（以下「実施形態」と表記）は、データ異常又はアプリケーション誤動作の源を階層的並列環境にわたって識別するための技術を提供する。例えば、実施形態は、ソフトウェア開発者に対し、階層的並列環境内で分散ランタイム診断がどのように実行されるかを制御するための手段を提供する。さらに、実施形態は、ソフトウェア開発者が、処理要素及び詳細な下位レベル・コードの両方の観点から分散ランタイム診断を制御することを可能にする。さらに、実施形態は、分散型並列異機種アプリケーションの収集可能なランタイム情報について高度の制御を提供する。特に、開発者は、テスト・ケース、データ、これらのテストをいつ実行すべきか及びどの処理要素がテスト・ケースを実行すべきかを制御することができる。テスト・ケースを制御することは、行われる特定の診断活動（例えば、ミリ秒ごとのプログラム・カウンタの格納又はローカル・メモリ内のアレイに対するハッシュの適用）を制御することを含む。また、ソフトウェア開発者は、所与のテスト設計の一部として、処理中のデータの予備知識を組み入れることができる。さらに、ソフトウェア設計者は、診断コードをいつ実行すべきか及びどの処理要素が診断コードを実行すべきかを制御することができる。最後に、可視化のために、ソフトウェア設計者は、どのようなデータ結果が可視化され且つどのようなときに当該データ結果が階層的並列環境を通して戻されるかを制御することができる。このように、ソフトウェア開発者は、階層的並列環境を徹底的に調査することにより、特定の時間に特定の処理位置から特定のデータ・セットに対する情報を取得することができる。さらに、ソフトウェア開発者は、ランタイム中に、処理要素の性能特性を制御することができる。
【００１１】
以下、実施形態を説明する。しかし、本発明は、本明細書に開示した特定の実施形態に制限されないことを理解されたい。以下で説明する特徴及び要素の任意の組み合わせは、異なる実施形態に関係するか否かに拘わらず、本発明を実装又は実施するように意図される。さらに、実施形態は、他の可能な解決手段及び従来技術に比べて優れた効果を奏することができるが、所与の実施形態が特定の効果を奏するか否かは、本発明を制限するものではない。従って、以下で説明する側面、特徴、実施形態及び効果は、例示であるに過ぎず、請求項において明示的に記載されている場合を除き、請求項に係る発明の制限事項であると見なされない。同様に、「本発明」という用語の使用は、本明細書に開示した任意の発明的主題の一般化として解すべきではなく、請求項において明示的に記載されている場合を除き、請求項に係る発明の制限事項であると見なされるべきではない。
【００１２】
実施形態は、コンピュータ・システムに関連して使用するためのプログラムとして実装される。かかるプログラムは、（本明細書に開示した方法を含む）実施形態の機能を定義し、種々のコンピュータ可読ストレージ媒体上に保持することができる。例えば、コンピュータ可読ストレージ媒体は、（ｉ）情報を永久的に格納するための書き込み不能なストレージ媒体（例えば、ＣＤ−ＲＯＭドライブによって読み取り可能なＣＤ−ＲＯＭディスクのようなコンピュータ内の読み取り専用メモリ装置）と、（ｉｉ）変更可能な情報を格納するための書き込み可能なストレージ媒体（例えば、ディスケット・ドライブ内のフレキシブル・ディスク又はハードディスク・ドライブ）とを含む。かかるコンピュータ可読ストレージ媒体は、本発明の機能を指令するコンピュータ可読命令を担持する場合、本発明の実施形態である。他の媒体は、コンピュータに情報を伝送するための通信媒体を含み、かかる通信媒体は、電話網、無線通信ネットワーク等を含む。特に、後者の実施形態は、インターネット及び他のネットワークと情報を送受することを含む。かかる通信媒体は、本発明の機能を指令するコンピュータ可読命令を搬送する場合、本発明の実施形態である。広義には、コンピュータ可読ストレージ媒体及び通信媒体は、本明細書においてコンピュータ可読媒体と称することができる。
【００１３】
一般に、実施形態を実装するために実行されるルーチンは、オペレーティング・システム又は特定のアプリケーションの一部、コンポーネント・プログラム、モジュール、オブジェクト又は命令のシーケンスとすることができる。一般に、本発明のコンピュータ・プログラムは、複数の命令から構成され、そしてこれらの命令は、ネイティブ・コンピュータによって機械可読フォーマット（従って、実行可能な命令）に変換される。また、プログラムは、変数及びデータ構造から構成され、その一方又は両方は、当該プログラムに対しローカルに存在するか、メモリ内に存在するか、又はストレージ装置上に存在する。さらに、以下で説明する種々のプログラムは、特定の実施形態で実装される当該プログラムを使用するアプリケーションに基づいて、これを識別することができる。しかし、以下で使用する特定のプログラム命名法は、便宜上のものであるに過ぎないから、本発明は、かかる命名法によって識別されるか又は暗示される特定のアプリケーション内でのみ使用するように制限されない。
【００１４】
以下、１つのプロセッサ（ＰＰＵ：Power Processor Unit）並びにそのＬ１及びＬ２キャッシュを有する１つのＰＰＥ（Power Processor Element ）を含むＣｅｌｌＢＥを参照して、実施形態を説明する。各Ｃｅｌｌ ＢＥコンピュータは、複数のＳＰＥ（SynergisticProcessor Element）と、ローカル・ストアと、高帯域の内部バスである１つのＥＩＢ（Element Interconnect Bus）とを含む。各ＳＰＥは、１つのＳＰＵ（Synergistic Processor Unit）を提供する。本明細書及び図面の記述は、ＣｅｌｌＢＥコンピュータを想定しているが、実施形態は、他のプロセッサ・アーキテクチャに関連して使用するように容易に適合させることができる。
【００１５】
図１は、実施形態に従った、コンピュータ環境１００のプロセッサの全容を示す。図示のように、コンピュータ環境１００は、複数の処理要素を含む。これらの処理要素は、第１のコンピュータのマスタ処理要素１１０と、第２のコンピュータのＸ８６処理要素１２０と、第３のコンピュータのＸ８６処理要素１３０と、第４のコンピュータのＣｅｌｌ ＰＰＵ １４０及びＳＰＵ １４５と、第５のコンピュータのＣｅｌｌ ＢＥ １５０及びＳＰＵ１５５と、第６のコンピュータのＣｅｌｌ ＢＥ １６０及びＳＰＵ １６５と、２つのＸ８６処理要素１２０及び１３０のための（グラフィック処理装置のような）アクセラレータ１７０とを含む。
【００１６】
マスタ処理要素１１０は、階層的並列環境１００内で分散ランタイム診断を実行する。図示のように、処理要素１２０、１３０、１４０、１４５、１５０、１５５、１６０及び１６５は、マスタ処理要素１１０から（矢印で表される）制御メッセージを受信し、（矢印で表される）結果をマスタ処理要素１１０に渡す。各処理要素１１０、１２０、１３０、１４０、１４５、１５０、１５５、１６０、１６５は、ランタイム診断コードによる使用のためにローカル・メモリの或る領域を割り振る。本明細書では、ローカル・メモリのこの領域を「診断領域（DiagArea）」と称する。
【００１７】
図２は、実施形態に従った、コンピュータ環境２００の構造を示す。コンピュータ環境２００は、図１のＸ８６マスタ処理要素１１０と、Ｃｅｌｌ ＰＰＵ １４０と、複数のＳＰＵ １４５とを含む。図示のように、Ｘ８６コンピュータ２１０は、Ｘ８６プロセッサ１１０と、メモリ２１２と、ストレージとを含む。さらに、ＣｅｌｌＢＥコンピュータ２４０は、Ｃｅｌｌ ＰＰＵ １４０と、８個のＣｅｌｌＳＰＵ １４５と、ＥＩＢ ２４３と、メモリ２４２と、ストレージ（図示せず）とを含む。一般に、各コンピュータ２１０、２４０に含まれる１つ以上のプロセッサ１１０、１４０、１４５は、メモリ２１２、２４２及び任意のストレージ装置（例えば、ハード・ドライブ、フラッシュ・メモリ又はＣＤ若しくはＤＶＤ−ＲＯＭのようなコンピュータ可読ストレージ媒体）から命令及びデータを取得する。各プロセッサ１１０、１４０、１４５は、命令、論理及び数学的な処理を実行するプログラム可能論理装置である。さらに、コンピュータ２１０及び２４０は、ストレージ（例えば、ハードディスク・ドライブ、フラッシュ・メモリ装置、光学媒体等）を含むことができる。コンピュータ２１０及び２４０は、ネットワーク２０５に動作可能に接続される。メモリ２１２及び２４２は、診断作業機能（diagnostic worker function）２１４、２４４及びオペレーティング・システムを含む。オペレーティング・システムは、コンピュータ２１０及び２４０の動作を管理するために使用されるソフトウェアである。オペレーティング・システムの例は、ＵＮＩＸ（登録商標）、マイクロソフトＷｉｎｄｏｗｓ（登録商標）オペレーティング・システムのバージョン及びＬｉｎｕｘ（登録商標）オペレーティング・システムを含む。
【００１８】
図示のように、メモリ２１２は、診断コントローラ２１３を格納する。診断コントローラ２１３は、マスタ処理要素上で実行され且つ実施形態に従った分散ランタイム診断の諸側面を制御するように構成されたソフトウェア・アプリケーションを提供することができる。特に、診断コントローラ２１３は、階層の下位レベルの処理要素上で、どのような診断活動をいつ実行すべきかを制御する。また、各ＣｅｌｌＳＰＵ １４５は、診断作業機能２４６を格納するローカル・メモリを含むことができる。
【００１９】
しかし、コンピュータ環境２００内のコンピュータ・システムは、既存のコンピュータ・システム（例えば、デスクトップ・コンピュータ、サーバ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ等）を含むことができる点に留意されたい。すなわち、図２に示すコンピュータ環境２００は、コンピュータ環境の１例であるに過ぎない。実施形態は、これらのコンピュータ・システムが高速ネットワークによって接続された個別コンピュータのクラスタのような複雑なマルチユーザ・コンピュータ・システム、単一ユーザ・ワークステーション又は不揮発性ストレージを欠くネットワーク・アプライアンスであるかに否かに拘わらず、他の環境を使用して実装することができる。さらに、図２に示され且つ本明細書で説明するソフトウェア・アプリケーションは、既存のコンピュータ・システム上で実行されるコンピュータ・ソフトウェア・アプリケーションを使用して実装することができる。しかし、本明細書で説明するソフトウェア・アプリケーションは、既存の任意のコンピュータ環境又はプログラミング言語に制限されないのであり、新しいコンピュータ・システムが使用可能になると、これを活用するように適合させることができる。
【００２０】
マスタ処理要素１１０は、診断コントローラ２１３を実行する。診断コントローラ２１３は、階層の下位レベルの処理要素上で、どのような診断活動を実行すべきかを制御する。各処理要素１１０、１４０、１４５は、診断作業機能２１４、２４４、２４６を有する実行可能イメージを実行することにより、（ｉ）マスタ処理要素１１０による初期設定及び（ｉｉ）マスタ処理要素１１０とのその後の通信を可能にする。各処理要素１１０、１４０、１４５は、関連する診断作業機能２１４、２４４、２４６をアクティブ化して分散ランタイム診断の制御を可能にするための、特定のメッセージを受信するように構成することができる。
【００２１】
マスタ処理要素１１０は、診断作業機能２１４、２４４、２４６を有する実行可能イメージを各処理要素１１０、１４０、１４５のローカル・メモリ２１２、２４２にロードする。診断作業機能２１４、２４４、２４６は、各処理要素１１０、１４０、１４５のローカル・メモリ２１２、２４２内の専用領域を割り振るように構成された開始ルーチンを含む。図２では、この専用領域は、メモリ２４２内の診断領域２５０として図示されている。診断領域２５０は、ランタイム診断による使用のために予約される。この専用メモリ領域を割り振った後、診断作業機能２１４、２４４、２４６は、中断状態に入ることができる。この中断状態では、診断作業機能２１４、２４４、２４６は、当該診断作業機能の実行を再開させるウェイクアップ・メッセージを処理要素１１０、１４０、１４５が受信するまで、非アクティブに留まる。
【００２２】
診断コントローラ２１３は、分散ランタイム診断を実行するためのグラフィカル・ユーザ・インタフェースを提供する。図３は、実施形態に従った、階層的並列環境内で分散ランタイム診断を実行するためのグラフィカル・ユーザ・インタフェース３００を示す。図示のように、グラフィカル・ユーザ・インタフェース３００は、可視化ウィンドウ３０５によって表される階層的並列環境３０２のために、分散ランタイム診断がどのように実行されるかを、ユーザが構成することを可能にする。一般に、階層的並列環境３０２は、図１のコンピュータ環境１００に対応する。図式的には、グラフィカル・ユーザ・インタフェース３００は、診断機能入力３１０と、データ／コード入力３２０と、条件入力３３０と、位置入力３４０と、可視化パラメータと、可視化ウィンドウ３０５とを含む。可視化パラメータは、可視化データ・レート入力３５０及び可視化データ・サイズ入力３５５を含むことができる。
【００２３】
図示のように、可視化ウィンドウ３０５は、分散ランタイム診断が実行されている、階層的並列環境３０２のトポロジを表示する。このトポロジは、マスタ処理要素１１０と、処理要素１４０、１４５、１５０、１５５を含む。図示のように、可視化ウィンドウ３０５は、ランタイム診断が２つの処理要素３６４、３６５（この例では、これらの２つの処理要素は斜線で強調されている）上で実行されているという可視的な指示を含む。また、可視化ウィンドウ３０５は、処理要素３６４（この例では、処理要素３６４は斜線で強調されている）のデータにおけるエラーをランタイム診断が検出したという可視的な指示を含む。
【００２４】
診断機能入力３１０は、実行すべき診断機能を指定するユーザ入力を受信する。この診断機能のための実行可能コードは、診断コントローラ２１３によって送信された制御メッセージを介して、動的にロードすることができる。例えば、ユーザは、ロードすべき診断機能「F1()」を提供するファイルを、ナビゲータを介して、指定することができる。図示のように、診断機能「F1()」は、診断機能入力３１０を使用して指定される。診断機能「F1()」は、ハッシュのようなチェックサムを計算することができる。例えば、診断機能は、「calculateMessageCount(messageID)」、すなわちローカル・メモリの領域の開始アドレスから終了アドレスまでの巡回冗長検査（ＣＲＣ）を計算する診断機能とすることができる。さらに他の例として、診断機能は、「calculateMessageCount(messageID)」、すなわち処理要素がマスタ処理要素からメッセージを受信し且つ診断領域２５０内のカウンタを更新するような診断機能とすることができる。もちろん、診断機能「F1()」は、種々の診断機能を実行するように構成することができる。さらに、各処理要素は、異なる診断機能（例えば、F1() 、F2()、F3() 等）を実行することができる。
【００２５】
実施形態では、ユーザは、結果が直ちに戻されるか、診断機能が実行を完了するまで保存されるか、指定された時間インターバルの後に送信されるか、又は指定されたイベントの出現持に送信されるかを制御することができる。かかる機能性を使用すると、ユーザは、実行メトリクス及びデータ有効性メトリクスの両方を収集することができる。
【００２６】
データ／コード入力３２０は、実行すべきアルゴリズム及び当該アルゴリズムが処理すべきデータ・セットを指定するユーザ入力を受信する。図示のように、「fft2D()」（すなわち、２次元の高速フーリエ変換アルゴリズム）は、実行すべきアルゴリズムとして指定され、「wristmri123.bin」は、「fft2D()」が処理すべきデータ・セットを保持するファイルとして指定される。実施形態では、このアルゴリズムを単一の処理要素だけを含む環境内で実行することにより、既知のデータ依存チェックポイントにおけるデータを事前に計算することができる。その後、この事前計算済みのデータを使用して、分散型異機種システム内で計算されたデータの有効性をチェックすることができる。例えば、「fft2D()」については、或るデータ・セットが与えられると、１セットのチェックサムを事前に計算することができ、これを分散型異機種環境内の検証キーとして使用することができる。
【００２７】
条件入力３３０は、条件を指定するユーザ入力を受信する。この条件は、指定されたアルゴリズムの実行中、指定された診断機能を実行すべき時間を指定する。図示のように、「Loop count = 100,000」という条件が指定される。すなわち、データ・セット「wristmri123.bin」を処理するアルゴリズム「fft2D()」内の１つのループの１０万回目の反復の実行中に、診断機能「F1()」が呼び出される、他の例は、１０分ごとに１回の割合で診断機能「F1()」を呼び出す条件と、指定されたアルゴリズムのためのプログラム・カウンタの特定の値に基づいて診断機能「F1()」を呼び出す条件と、処理要素のローカル・メモリの全ての入力ＤＭＡ（直接メモリ・アクセス）のために診断機能「F1()」を呼び出す条件とを含む。
【００２８】
位置入力３４０は、ランタイム診断を実行すべき処理要素を指定するユーザ入力を受信する。図示のように、指定されたアルゴリズム及び指定された診断機能を実行すべきものとして、２つの処理要素３６４及び３６５が指定されている。実施形態では、ユーザは、ランタイム診断を、１つの処理要素、複数の処理要素、又は全ての処理要素上で実行すべきことを指定することができる。可視化レート入力３５０は、可視化目的のための指定された処理要素からマスタ処理要素１１０までのデータ戻りレート（すなわち、サンプリング・レート）を指定するユーザ入力を受信する。図示のように、データは、毎ミリ秒のレートで戻されるように指定されている。可視化データ・サイズ入力３５５は、可視化目的のための指定された処理要素からマスタ処理要素１１０までの戻りデータ・サイズを指定するユーザ入力を受信する。図示のように、アスタリスク（*）は、指定された処理要素のローカル・メモリの全サイズが戻されるべきであるという指定を表す。また、可視化ウィンドウ３０５は、可視化目的のために指定された処理要素から戻されたデータを表示することもできる。例えば、戻りデータ・サイズが１００個の浮動小数点値であれば、これらの値を可視化ウィンドウ３０５内に表示することができる。
【００２９】
図４は、実施形態に従った、分散ランタイム診断を構成し且つ実行するための方法４００を示すフローチャートである。この方法４００は、ステップ４１０で開始する。ステップ４１０で、診断コントローラ２１３は、診断を実行すべき処理要素を指定するユーザ入力を受信する。例えば、ユーザは、特定の処理要素（例えば、処理要素３６４）上で診断を実行すべきであることを指定するために、図３の可視化ウィンドウ３０５と対話することができる、ステップ４２０で、診断コントローラ２１３は、この処理要素が実行すべきアルゴリズムを指定するユーザ入力を受信する。例えば、ユーザは、処理要素３６４がアルゴリズム「fft2D()」（すなわち、２次元の高速フーリエ変換アルゴリズム）を実行すべきであることを指定することができる。ステップ４３０で、診断コントローラ２１３は、このアルゴリズムが処理すべきデータ・セットを指定するユーザ入力を受信する。例えば、ユーザは、テスト対象のデータ・セット（例えば、図３の「wristmri123.bin」）を保持するファイルを指定することができる。
【００３０】
ステップ４４０で、診断コントローラ２１３は、この処理要素が実行すべき診断機能を指定するユーザ入力を受信する。例えば、ユーザは、特定の処理要素（例えば、処理要素３６４）が診断機能として「F1()」を実行すべきであることを指定するために図３の可視化ウィンドウ３０５と対話することができる。ステップ４５０で、診断コントローラ２１３は、この診断機能を実行するための条件を指定するユーザ入力を受信する。例えば、ユーザは、この条件として「Loop count = 100,000」を指定することができる。すなわち、この処理要素がアルゴリズム「fft2D()」内のループの１０万回目の反復の実行中にあるとき、この診断機能を実行しなければならない。
【００３１】
ステップ４６０で、診断コントローラ２１３は、指定されたアルゴリズム、指定されたデータ・セット、指定された診断機能及び指定された条件を指定された処理要素のローカル・メモリにロードするために、１つ以上のメッセージを指定された処理要素に送信する。ステップ４７０で、診断コントローラ２１３は、指定された処理要素から結果を受信する。実施形態では、この診断機能を実行することにより計算された結果を、診断コントローラ２１３に戻すことができる。そのようにすると、診断コントローラ２１３は、エラー又は障害が存在するか否かを検出することができる。ステップ４８０で、診断コントローラ２１３は、指定された処理要素からの結果を表示する。ステップ４８０の後、この方法４００が終了する。
【００３２】
図５は、実施形態に従った、指定された処理要素上の診断作業機能２４６によって分散ランタイム診断を構成し且つ実行するための方法５００を示すフローチャートである。この方法５００は、ステップ５１０で開始する。ステップ５１０で、診断作業機能２４６は、診断コントローラ２１３からメッセージを受信する。診断作業機能２４６は、階層の処理要素のうちの１つに存在することができる。例えば、前述のように、この処理要素に対してローカルのメモリの領域を、診断作業機能２４６を格納するために割り振ることができる。さらに、このメモリ領域には、診断作業機能２４６によって生成された他の入力及び出力（時間、データ、結果等）を格納することができる。ステップ５２０で、診断作業機能２４６は、前記メッセージがロードすべきアルゴリズムを指定するか否かを決定する。そうであれば、診断作業機能２４６は、ステップ５２５で、指定されたアルゴリズム（例えば、fft2D()）をローカル・メモリ（具体的には、このローカル・メモリの診断領域）にロードする。
【００３３】
ステップ５３０で、診断作業機能２４６は、前記メッセージがロードすべきデータ・セットを指定するか否かを決定する。そうであれば、ステップ５３５で、診断作業機能２４６は、指定されたデータ・セットをローカル・メモリにロードする。ステップ５４０で、診断作業機能２４６は、前記メッセージがロードすべき診断機能を指定するか否かを決定する。そうであれば、ステップ５４５で、診断作業機能２４６は、指定された診断機能（例えば、診断機能「F1()）」をローカル・メモリにロードする。
【００３４】
ステップ５５０で、診断作業機能２４６は、前記メッセージがロードすべき条件を指定するか否かを決定する。そうであれば、ステップ５５５で、診断作業機能２４６は、指定された条件（例えば、Loop count = 100,000）をローカル・メモリにロードする。ステップ５６０で、診断作業機能２４６は、前記メッセージが診断開始を指定するか否かを決定する。そうであれば、ステップ５６５で、診断作業機能２４６は、診断の実行を開始する。すなわち、階層的並列環境は、診断システムによって指定されるようなデータ・セット「wristmri123」を使用して、データの処理（例えば、アルゴリズム「fft2d()」の実行）を開始し、その結果、診断作業機能を実行する（例えば、ループの１００,０００回の各反復の後に診断機能「F1()」が呼び出される）。
【００３５】
図６は、実施形態に従った、指定された処理要素上で診断機能を実行するための方法６００を示すフローチャートである。この方法６００は、ステップ６１０で開始する。ステップ６１０で、診断作業機能２４６は、指定されたデータ・セットを処理対象として指定されたアルゴリズムの第１行を実行する。例えば、診断作業機能２４６は、アルゴリズム「fft2D()」（すなわち、２次元の高速フーリエ変換アルゴリズム）の第１行を実行することができる。ステップ６２０で、診断作業機能２４６は、指定された条件が真であるか否かをテストする。例えば、診断作業機能２４６は、現在の実行段階がアルゴリズム「fft2D()」内のループの１０万回目の反復にあるか否かをテストすることができる。実施形態では、アルゴリズム「fft2D()」は、診断領域２５０に値を書き込むための手段を有することができる。ステップ６２０のテスト結果が真であれば、ステップ６２５で、診断作業機能２４６は、指定された診断機能を実行する（例えば、診断機能「F1()」が呼び出される）。ステップ６３０で、診断作業機能２４６は、指定されたアルゴリズムの終わりに達したか否かを決定する。そうでなければ、診断作業機能２４６は、ステップ６１０にループ・バックする。さもなければ、ステップ６３０の後、この方法６００が終了する。
【００３６】
もちろん、本明細書に開示した実施形態は、例示を目的とするものであって、本発明を制限するものではないことが意図される。他の実施形態も、広く予測されるからである。当業者には明らかなように、例えば、「診断機能の実行を停止」、「診断情報を返送」、「アルゴリズムの実行を停止」等のような他の制御メッセージを、実施形態によってサポートすることができる。さらに、診断機能の結果は、マスタ処理要素上の診断コントローラ又は指定された処理要素上の診断作業機能によって検証することができる。
【００３７】
前述の説明は、本発明の実施形態に向けられているが、本発明の基本的な範囲から逸脱することなく、他の実施形態を考案することができる。本発明の範囲は、以下の請求項の記載によって決定される。
【符号の説明】
【００３８】
１００・・・コンピュータ環境
１１０・・・マスタ処理要素
１２０、１３０・・・Ｘ８６処理要素
１４０、１５０、１６０・・・ＣｅｌｌＰＰＵ
１４５、１５５、１６５・・・ＳＰＵ
１７０・・・アクセラレータ
２００・・・コンピュータ環境
２０５・・・ネットワーク
２１０・・・Ｘ８６コンピュータ
２１２、２４２・・・メモリ
２１４、２４４・・・診断作業機能
２４０・・・ＣｅｌｌＢＥコンピュータ
２４３・・・ＥＩＢ
２５０・・・診断領域
３００・・・グラフィカル・ユーザ・インタフェース 
３０５・・・可視化ウィンドウ
３１０・・・診断機能入力
３２０・・・データ／コード入力
３３０・・・条件入力
３４０・・・位置入力
３５０・・・可視化データ・レート入力
３５５・・・可視化データ・サイズ入力
３６４、３６５・・・処理要素
【図１】
2010198612.tif 000003
【図２】
2010198612.tif 000004
【図３】
2010198612.tif 000005
【図４】
2010198612.tif 000006
【図５】
2010198612.tif 000007
【図６】
2010198612.tif 000008