(57)【要約】  任意のジョブ管理プログラム又はスケジューラを使用可能な分散計算環境を提供するための方法、システム、及び計算プログラム製品を開示する。この分散計算環境では、１つ又は複数の技術計算タスクを含むジョブがホスト又はクライアントに作成され、ポータブルフォーマットで上述の任意ジョブスケジューラに提出される。このジョブのポータブルフォーマットはスケジューラのプラットフォーム構造から独立しているので、スケジューラは、そのプラットフォーム構造に関係なくジョブを処理できる。次に、スケジューラはポータブルフォーマットのジョブを１つ又は複数のリモートワーカーに転送する。何れのスケジューラでもジョブを受け取り且つリモートワーカーに分散可能となるように、本発明はポータブルフォーマットを用いてジョブをスケジューラに提供し、ジョブをリモートワーカーに分散する。
2008530707.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置において、ジョブを作成し且つスケジューラに提出する方法であって、
技術計算環境において１つ又は複数の技術計算タスクを含むジョブを作成する段階と、
異なるタイプの複数スケジューラと互換性があるポータブルフォーマットで前記ジョブを保存する段階と、
スケジューラと通信チャンネルを確立する段階と、
前記ポータブルフォーマットの前記ジョブを前記スケジューラに、前記スケジューラとの前記通信チャンネルを介して提出する段階とを含む、方法。
【請求項２】
前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項１に記載の方法。
【請求項３】
クライアントのライセンス情報をジョブに含める段階をさらに含む、請求項１に記載の方法。
【請求項４】
前記クライアントのライセンス情報が、該クライアントがライセンスを受けているソフトウェアコンポーネント又は製品に関する情報を含む、請求項３に記載の方法。
【請求項５】
前記保存する段階が、前記ジョブをバイナリフォーマットで保存する段階を含む、請求項１に記載の方法。
【請求項６】
前記保存する段階が前記ジョブを、該ジョブがデータの直列化ストリームで記憶される記憶媒体において該ジョブを直列化する段階を含む、請求項１に記載の方法。
【請求項７】
前記提出する段階が、前記ジョブに関する情報を前記スケジューラに前記通信チャンネルを介して提出する段階を含む、請求項１に記載の方法。
【請求項８】
前記ジョブに関する前記情報が、前記スケジューラによるポータブルフォーマットの前記ジョブの１つ又は複数ワーカーへの分散を可能とし、該１つ又は複数ワーカーが前記ジョブ内の前記１つ又は複数の技術計算タスクを実行可能となる、請求項７に記載の方法。
【請求項９】
前記スケジューラから前記通信チャンネルを介して前記ジョブの結果を受け取る段階をさらに含む、請求項１に記載の方法。
【請求項１０】
ワーカー装置において、ジョブを受け取り且つ実行する方法であって、
スケジューラと通信チャンネルを確立する段階と、
前記スケジューラから前記通信チャンネルを介してジョブをポータブルフォーマットで受け取る段階であって、該ポータブルフォーマットが異なるタイプの複数のスケジューラと互換性がある、受け取る段階と、
前記ジョブ内の１つ又は複数の技術計算タスクに関する情報を受け取る段階と、
技術計算環境において、前記スケジューラから受け取った前記１つ又は複数の技術計算タスクに関する前記情報に基づいて前記ジョブ内の前記１つ又は複数の技術計算タスクを実行する段階とを含む、方法。
【請求項１１】
前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項１０に記載の方法。
【請求項１２】
前記ジョブがクライアントのライセンス情報を含み、前記１つ又は複数の技術計算タスクが、前記ジョブ内の前記クライアントのライセンス情報に従って実行される、請求項１０に記載の方法。
【請求項１３】
前記ポータブルフォーマットがバイナリフォーマットを含む、請求項１０に記載の方法。
【請求項１４】
前記実行する段階が、記憶媒体から前記ジョブを非直列化する段階を含む、請求項１０に記載の方法。
【請求項１５】
前記１つ又は複数の技術計算タスクを実行した結果を、前記スケジューラに前記通信チャンネルを介して返す段階をさらに含む、請求項１０に記載の方法。
【請求項１６】
技術計算環境において１つ又は複数の技術計算タスクを含むジョブを作成するクライアントと、
異なるタイプの複数スケジューラと互換性があるポータブルフォーマットで前記ジョブを保存する記憶媒体と、
前記クライアントとスケジューラとの間に第１通信チャンネルを確立するためのインターフェースとを含み、前記クライアントが、ポータブルフォーマットのジョブを当該スケジューラへ当該第１通信チャンネルを介して提出する、システム。
【請求項１７】
前記第１インターフェースが前記スケジューラに関する情報を抽象化するアダプタを含む、請求項１６に記載のシステム。
【請求項１８】
前記アダプタは、複数の任意スケジューラを包括する第１グループのプロパティを与える、請求項１７に記載のシステム。
【請求項１９】
前記アダプタは、前記スケジューラに固有の第２グループのプロパティを与えることによって前記スケジューラとインターフェースを取るよう拡張される、請求項１８に記載のシステム。
【請求項２０】
前記スケジューラからポータブルフォーマットで前記ジョブを受け取る１つ又は複数のワーカーと、
ワーカーと前記スケジューラとの間に第２通信チャンネルを確立するための第２インターフェースとをさらに含み、前記ワーカーが、前記ジョブを前記スケジューラから当該第２通信チャンネルを介して受け取る、請求項１６に記載のシステム。
【請求項２１】
前記第２インターフェースが前記スケジューラに関する情報を抽象化するアダプタを含む、請求項２０に記載のシステム。
【請求項２２】
前記アダプタは、複数の任意スケジューラを包括する第１グループのプロパティを与える、請求項２１に記載のシステム。
【請求項２３】
前記アダプタは、前記スケジューラに固有の第２グループのプロパティを与えることによって前記スケジューラとインターフェースを取るよう拡張される、請求項２２に記載のシステム。
【請求項２４】
前記クライアントが、前記ジョブに関する前記情報を前記スケジューラに前記第１通信チャンネルを介して提出して、前記スケジューラが、ポータブルフォーマットの前記ジョブを１つ又は複数ワーカーに前記情報に基づいて分散可能とする、請求項２０に記載のシステム。
【請求項２５】
前記ワーカーが、前記ジョブ内の１つ又は複数の技術計算タスクに関する情報を受け取ると共に、前記スケジューラから受け取った前記１つ又は複数の技術計算タスクに関する前記情報に基づいて、前記ジョブ内の前記１つ又複数の技術計算タスクを実行する、請求項２０に記載のシステム。
【請求項２６】
前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項１６に記載のシステム。
【請求項２７】
ポータブルフォーマットがバイナリフォーマットを含む、請求項１６に記載のシステム。
【請求項２８】
前記ジョブがクライアントのライセンス情報を含み、前記１つ又は複数の技術計算タスクが、前記ジョブ内の前記クライアントのライセンス情報に従って実行される、請求項１６に記載のシステム。
【請求項２９】
前記ワーカーが、前記１つ又は複数の技術計算タスクを実行した結果を、前記スケジューラに前記第２通信チャンネルを介して返す、請求項１６に記載のシステム。
【請求項３０】
前記スケジューラが、前記ジョブの結果を前記クライアントに前記第１通信チャンネルを介して返す、請求項１６に記載のシステム。
【請求項３１】
前記クライアントと、前記スケジューラと、前記１つ又複数のワーカーとを接続する通信ネットワークをさらに含む、請求項２０に記載のシステム。
【請求項３２】
電子装置で実行可能な命令を保持したコンピュータプログラム製品であって、
技術計算環境において１つ又は複数の技術計算タスクを含むジョブを作成する段階と、
異なるタイプの複数スケジューラと互換性があるポータブルフォーマットで前記ジョブを保存する段階と、
スケジューラと通信チャンネルを確立する段階と、
前記ポータブルフォーマットの前記ジョブを前記スケジューラに、前記スケジューラとの前記通信チャンネルを介して提出する段階とを含む、コンピュータプログラム製品。
【請求項３３】
前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項３２に記載のコンピュータプログラム製品。
【請求項３４】
ジョブがクライアントのライセンス情報を含む、請求項３２に記載のコンピュータプログラム。
【請求項３５】
前記ジョブがバイナリフォーマットで保存される、請求項３２に記載のコンピュータプログラム。
【請求項３６】
前記ジョブが記憶媒体で直列化される、請求項３２に記載のコンピュータプログラム。
【請求項３７】
前記ジョブに関する情報を前記スケジューラに前記通信チャンネルを介して提出する段階をさらに含む、請求項３２に記載のコンピュータプログラム製品。
【請求項３８】
前記ジョブに関する前記情報が、前記スケジューラによるポータブルフォーマットの前記ジョブの１つ又は複数ワーカーへの分散を可能とし、該１つ又は複数ワーカーが前記ジョブ内の前記１つ又は複数の技術計算タスクを実行可能となる、請求項３７に記載のコンピュータプログラム製品。
【請求項３９】
前記ジョブの結果を前記スケジューラから前記通信チャンネルを介して受け取る段階をさらに含む、請求項３２に記載のコンピュータプログラム製品。
【請求項４０】
電子装置における、ジョブを受け取り且つ実行するコンピュータプログラム製品であって、
スケジューラと通信チャンネルを確立する段階と、
前記スケジューラから前記通信チャンネルを介してジョブをポータブルフォーマットで受け取る段階であって、該ポータブルフォーマットが異なるタイプの複数のスケジューラと互換性がある、受け取る段階と、
前記ジョブ内の１つ又は複数の技術計算タスクに関する情報を受け取る段階と、
技術計算環境において、前記スケジューラから受け取った前記１つ又は複数の技術計算タスクに関する前記情報に基づいて前記ジョブ内の前記１つ又は複数の技術計算タスクを実行する段階とを含む、コンピュータプログラム製品。
【請求項４１】
前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項４０に記載のコンピュータプログラム製品。
【請求項４２】
前記ジョブがクライアントのライセンス情報を含み、前記１つ又は複数の技術計算タスクが、前記ジョブ内の前記クライアントのライセンス情報に従って実行される、請求項４０に記載のコンピュータプログラム製品。
【請求項４３】
前記ポータブルフォーマットがバイナリフォーマットを含む、請求項４０に記載のコンピュータプログラム製品。
【請求項４４】
前記実行する段階が、記憶媒体から前記ジョブを非直列化する段階を含む、請求項４０に記載のコンピュータプログラム製品。
【請求項４５】
前記１つ又は複数の技術計算タスクを実行した結果を前記スケジューラに前記通信チャンネルを介して返す段階をさらに含む、請求項４０に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許文書の開示の一部には著作権の保護対象が含まれる。その著作権者は、本特許文書すなわち特許開示が特許商標庁の特許記録に掲載されているため、他人による複写作成に異存はないが、それ以外の全ての著作権を所有する。
関連出願
【０００２】
本願は、２００３年１２月３日付けの係属中の米国特許出願第１０／７２９７５２号と、２００４年７月２１日付けの係属中の米国特許出願第１０／８９６，６７１号と、２００４年７月２１日付けの係属中の米国特許出願第１０／８９６，７８４号との一部継続出願である２００４年９月１３日付けの係属中の米国特許出願第１０／９４０，１５１号の一部継続出願である「分散計算環境におけるポータブルフォーマットのジョブの分散（原語：Distribution
of Job in a Portable Format in Distributed Computing Environments）」と題する２００５年２月１７日付けの米国特許出願第１１／０６０９７１号の利益を主張し、それらの内容はここに引用して本開示の一部とする。
【０００３】
本発明は一般に分散計算環境に関し、より詳細には、こうした分散計算環境においてジョブをポータブルフォーマットで分散するためのシステム、方法、及びコンピュータプログラム製品に関する。
【背景技術】
【０００４】
ＭＡＴＬＡＢ（登録商標）は、多彩な産業分野にわたる技術者、科学者、数学者、及び教育者に技術的計算を応用するための環境を提供するマサチューセッツ州ナティック所在のThe MathWorks社の製品である。ＭＡＴＬＡＢ（登録商標）は、数理計算、データ解析、視覚化、及びアルゴリズム開発用の数学的ツール及びグラフィカルツールを提供する直感的且つ高性能の言語及び技術計算環境である。ＭＡＴＬＡＢ（登録商標）は、数値解析、行列計算、信号処理、及びグラフィックを使い勝手がよい環境で統合するものであり、この環境では問題と解が伝統的なプログラミングを用いることなく親しみがある数学的表記法で表現される。ＭＡＴＬＡＢ（登録商標）は複雑な工学及び科学問題を解くために用いられ、その際に問題をシミュレートする数学モデルを構築することで解を得る。モデルは、多数の境界条件、データパラメータ、又は幾つかの初期推測の下で当該モデルを実行することでプロトタイプ化し、テストし、分析する。ＭＡＴＬＡＢ（登録商標）では、こうしたモデルを容易に修正し、新たな変数をプロットし、或いは当該問題を迅速な対話型方式で再処理したりできる。これはＦｏｒｔｒａｎやＣ等の非解釈プログラミングでは一般的には不可能である。
【０００５】
デスクトップ・アプリケーションとしてＭＡＴＬＡＢ（登録商標）を使えば、科学者や技術者は慣れ親しんだワーカー環境で複雑な分析やモデリングを直感的に実行できる。しかし、単一ワーカーの計算機能力と、複雑な問題の計算集約的な反復処理を実行するために必要な計算機能力との関係により、単一ワーカーが解くことができる問題の大きさに限りがある場合がある。例えば、大規模で複雑な航空機モデルのシミュレーションは、特定組のパラメータを備えた単一計算で実行するにはそれなりの時間がかかる。しかし、この問題の分析には、異なる組のパラメータ（例えば、１００の異なる高度レベル及び５０の異なる航空機重量）を用いて複数回にわたりモデルを計算しなければならない場合があり、これは様々な条件下でのモデルの挙動を理解するには必要となることがある。望み通りに問題を分析するには５０００回の計算が必要であり、単一のコンピュータでこれらのシミュレーションを実行するには望ましくない過度の時間がかかってしまうはずである。この場合、ネットワーク上の多くのコンピュータ資源が遊休状態となる一方で、この単一コンピュータにはこの計算を行うために全時間を割り当てることになってしまう。さらに、このソフトウェアの対話式特徴の利点は、計算時間の増加とともに減少する。
【０００６】
多くの工学及び科学問題がより大規模且つ複雑なモデリングを必要とするに従って、計算もより多くの資源及び時間を必要とするようになる。計算があまりに大規模で複雑になり、単一のコンピュータ上で無理のない時間で完了できなくなれば、計算時間を減少させる解決策が必要になる。１つの解決策として、大規模且つ複雑な工学及び科学計算に対処するため分散計算システムが提供されてきた。こうした分散計算システムでは、ジョブ管理プログラム又はスケジューラを用いて所与の計算をリモート計算エンティティに分散することで、これらリモート計算エンティティによる分散計算を可能とする。このジョブ管理プログラム又はスケジューラは様々なベンダーから提供されており、多くの独特の特徴を備えているものがある。従って、分散計算環境は任意ベンダーが提供する任意のジョブ管理プログラム（すなわち、複数の様々なジョブ管理プログラムのうち任意のもの）とインターフェースを取る必要がある。しかし、従来の分散計算環境では、ジョブ管理プログラム又はスケジューラは１つのジョブ内の複数タスクを扱い、これらタスクをリモート計算エンティティに分散するが、これによって分散計算環境が、ジョブ管理プログラム又はスケジューラのプラットフォーム構造へ依存する度合いを高めてしまう。従って、ジョブ管理プログラム又はスケジューラのプラットフォーム構造から独立した分散計算環境を提供する必要性が存在する。
発明の概要
【０００７】
本発明は、任意のジョブ管理プログラム又はスケジューラが使用可能な分散計算環境を提供する。本発明の分散計算環境では、１つ又は複数のタスクを含むジョブがホスト又はクライアントで作成され、ポータブルフォーマットで前記任意のジョブスケジューラに提出される。前記ジョブ又はタスクの前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立しているので、前記スケジューラは、前記スケジューラの前記プラットフォーム構造とは無関係に前記ジョブ又はタスクを処理できる。次に、前記スケジューラは、前記ポータブルフォーマットの前記ジョブ又はタスクを１つ又は複数のリモートワーカーに転送する。前記スケジューラは、前記リモートワーカーから前記タスクを実行した結果を受け取り、それらを前記ホスト又はクライアントに戻すことができる。本発明は、何れのスケジューラでも前記ジョブを受け取り且つ前記リモートワーカーに分散可能となるように、ポータブルフォーマットを用いて前記ジョブをスケジューラに依頼し、前記ジョブを前記リモートワーカーに分散する。
【０００８】
さらに本発明は、前記ホスト又はクライアントが前記ジョブに関する情報を前記任意スケジューラに提出できるように、前記ホスト又はクライアントと前記任意スケジューラとの間のインターフェースを提供する。前記ジョブに関する情報は、前記スケジューラが前記ジョブを１つ又は複数のリモートワーカーに分散するために用いられる。本発明では、前記任意スケジューラと前記リモートワーカーとの間の通信チャンネルを確立するために前記任意スケジューラとのインターフェースも提供することで、前記任意スケジューラが当該通信チャンネルを介して前記リモートワーカーに前記ジョブを分散可能とする。前記スケジューラは、それぞれのリモートワーカーで実行すべき１つ又は複数のタスクの指示に関する情報を前記リモートワーカーに送ることもできる。前記リモートワーカーは前記指示された１つ又は複数のタスクを実行し、前記１つ又は複数のタスクの実行結果を前記任意スケジューラに返すと、今度は前記スケジューラが当該結果を前記ホスト又はクライアントに転送する。
【０００９】
本発明の一様態によれば、ジョブを作成し、スケジューラに提出するための方法及びコンピュータプログラム製品がクライアント内に与えられる。本方法は、１つ又は複数の計算タスクを含むジョブを作成する段階と、当該ジョブをポータブルフォーマットで保存する段階とを含む。本方法は、更に、スケジューラとの通信チャンネルを確立する段階と、前記ポータブルフォーマットの前記ジョブを当該スケジューラに当該通信チャンネルを介して提出する段階とを含む。本方法は、前記スケジューラから前記通信チャンネルを介して前記ジョブの結果を受け取る段階を含むこともできる。
【００１０】
本発明の別の様態によれば、ジョブを受け取り且つ実行するための方法及びコンピュータプログラム製品がワーカー内に与えられる。本方法は、スケジューラとの通信チャンネルを確立する段階と、ポータブルフォーマットのジョブを当該スケジューラから当該通信チャンネルを介して受け取る段階とを含む。さらに、本方法は、前記ジョブの１つ又は複数の計算タスクの指示に関する情報を受け取る段階と、前記スケジューラから受け取った前記１つ又は複数のタスクの指示に関する前記情報に基づいて前記１つ又は複数のタスクを実行する段階とを含む。
【００１１】
本発明の別の様態では、あるシステムは、１つ又は複数の計算タスクを備えたジョブを作成するためのクライアントを含む。さらに、前記システムは、前記ジョブをポータブルフォーマットで保存するための記憶装置も含む。前記システムは、前記クライアントとスケジューラとの間に通信チャンネルを確立するためのインターフェースを含み、前記クライアントが任意ポータブルフォーマットの前記ジョブを当該スケジューラに当該通信チャンネルを介して提出できる。
【発明を実施するための最良の形態】
【００１２】
本発明の幾つかの実施形態を以下に説明する。しかし、本発明はこれら実施形態に限定されるものでなく、本明細書に明示された内容への追加及び修正が本発明の範囲に含まれるよう意図されていることは注目すべきである。さらに、本明細書に記載された様々な実施形態の特徴は互いに排他的でなく、様々な順列や組合せが明示されていなくても本発明の精神及び範囲から逸脱することなく、本発明はこれら順列や組合せで共存可能であることは理解すべきである。
【００１３】
本発明の例示的な実施形態は、任意のスケジューラを使用可能な分散計算環境を提供する。この例示的な実施形態の分散計算環境では、タスクを技術計算クライアント上で作成し、更に複数ジョブに編成できる。ジョブとはアクティビティの論理単位、すなわちひとまとまりで処理或いは／管理されるタスクである。タスクはＭＡＴＬＡＢ（登録商標）コマンドのような実行すべき技術計算コマンドと、引数の数と、引数への任意入力データとを定義する。ジョブとは１つ又は複数タスクのグループである。
【００１４】
例示的な実施形態は、ＭＡＴＬＡＢ（登録商標）分散技術計算環境に関連して例示的な目的のみで説明する。この例示的実施形態はＭＡＴＬＡＢ（登録商標）に基づいた分散形応用例に関連して説明するが、通常の技能を備えた当業者であれば、本発明を他の技術計算環境（例えば、National
Instruments社からのLabVIEW（登録商標）若しくはMATRIXx、Wolfram Research社からのMathematica（登録商標）、Mathsoft
Engineering & EducationからのMathcad、又はWaterloo Maple社の一部門であるMaplesoftからのMaple（商標）など）における技術計算タスクの処理分散に適用できることは理解するはずである。
【００１５】
本発明の例示的な実施形態では、複数の技術計算タスクを含むジョブを任意スケジューラに提出し、複数のコンピュータシステム上で当該タスクを実行するため、当該ジョブを複数のリモート技術計算ワーカーに分散することができる。このジョブは、ＭＡＴファイルフォーマットのようなポータブルフォーマットで上述の任意スケジューラに提示される。この例示的な実施形態では、上述のポータブルフォーマットは、様々なシステムに移動可能なプログラム又はデータベースのフォーマットを指す。この例示的な実施形態は、ＭＡＴファイルフォーマットを用いてジョブをスケジューラに提出する。ＭＡＴファイルフォーマットはスケジューラのプラットフォーム構造から独立しているので、スケジューラはそのプラットフォーム構造とは無関係にジョブを処理できる。通常の技能を備えた当業者であれば、ＭＡＴファイルフォーマットは例示的なフォーマットであり、バイナリフォーマット又はシリアルフォーマットなどの他の任意フォーマットでジョブを提出できることも理解するはずである。
【００１６】
次に、スケジューラは、ＭＡＴファイルフォーマットのジョブを、当該ジョブの技術計算タスクに関する指示情報と共に１つ又は複数のリモートワーカーに転送し、当該リモートワーカーは指示されたタスクの技術計算を行い、その結果を上述の任意スケジューラに返す。すると、このスケジューラはその結果を技術計算クライアントに転送する。この例示的な実施形態では、スケジューラとは、一連のタスクの進行状況を追跡し且つこれらタスク実行用の資源を割り当てるプロセス又はプログラムを指す。スケジューラは付加的機能を備えたジョブ又はタスク管理プログラムを指すことが多いが、スケジューラ、ジョブ管理プログラム、及びタスク管理プログラムを含む用語は本発明のこの例示的実施形態の説明では交換可能に使用されている。
【００１７】
さらに本発明の例示的な実施形態は、上述のホスト又はクライアントが、ジョブと当該ジョブに関する情報とを上述の任意スケジューラに提出できるように、ホスト又はクライアントと当該任意スケジューラとの間のインターフェースを取る。当該ジョブに関する上述の情報は、上述のスケジューラが当該ジョブを１つ又は複数のリモートワーカーに分散するために用いられる。本発明では、上述の任意スケジューラとのインターフェースも提供することで当該任意スケジューラと上述のリモートワーカーとの間の通信チャンネルを確立し、この任意スケジューラが当該通信チャンネルを介して当該リモートワーカーにジョブを分散可能とする。このスケジューラは、ジョブ内の１つ又は複数のタスクの指示に関する情報をリモートワーカーに送り、リモートワーカーがジョブ内の１つ又は複数の指示タスクを実行し、この１つ又は複数タスクの実行結果を、上述の任意スケジューラとリモートワーカーとの間に確立した通信チャンネルを介して当該任意スケジューラに返すことができる。すると、このスケジューラはその結果をホスト又はクライアントに転送できる。
【００１８】
図１は、本発明の例示的な実施形態を実施するのに適した代表的な計算装置１００である。計算装置１００は、ワーカー、サーバ、ネットワークコンピュータ、量子コンピュータ、光コンピュータ、バイオコンピュータ、インターネット機器、モバイル装置、ページャ、タブレットコンピュータ等を含むがそれには限定されない様々な形式を取りうる。通常の技能を備えた当業者であれば、計算装置１００は例示目的であって、本発明を限定するものでないことは理解するはずである。 
【００１９】
計算装置１００は電子式でよく、中央処理装置（ＣＰＵ）１１０と、記憶装置１３０と、入力制御１４０と、モデム１５０と、ネットワーク・インターフェース１６０と、ディスプレイ１７０となどを含むことができる。ＣＰＵ１１０は、計算装置１００の各構成要素を制御して分散計算環境を提供する。メモリ１２０は命令やデータを一時的に格納し、それらをＣＰＵ１１０に与えることで、ＣＰＵ１１０が計算装置１００を作動させ、この分散計算環境を運用する。メモリ１２０は、コンピュータシステム・メモリ又はＤＲＡＭ、ＳＲＡＭ、ＥＤＯ・ＲＡＭなどのランダムアクセス・メモリを含むことができる。さらに、メモリ１２０は、他の種類のメモリ又はそれらの組合せを含むこともできる。ハードディスクドライブ又はＣＤ−ＲＯＭなどの記憶装置１３０は、通常、アプリケーション用のソフトウェアツールを含んでいる。記憶装置１３０は、具体的には、計算装置１００のオペレーティングシステム（ＯＳ）１３１のコードと、上述の分散計算環境（例えば、ＭＡＴＬＡＢ（登録商標）分散計算環境など）を実現するアプリケーションを含むオペレーティングシステム上で実行するアプリケーション１３２のコードと、この分散計算環境で作成されるジョブ及びタスク並びにそれらジョブ及びタスクの実行結果のデータ１３３とを含む。入力制御１４０はキーボード１８０、ポインティング・デバイス１９０、及び他の入力装置とインターフェースを取ることができる。計算装置１００は、入力制御１４０を介してジョブ及びタスクを作成するのに必要な入力データを受け取ることができる。計算装置１００は、ユーザがジョブ及びタスクを作成するためのユーザインターフェースをディスプレイ１７０に表示できる。計算装置１００は、コンピュータモニタなどのディスプレイ１７０を介してユーザが計算装置１００と対話可能とする他のユーザインターフェース（グラフィカル・ユーザインタフェース（ＧＵＩ）を含む）を表示することもできる。モデム１５０及びネットワーク・インターフェース１６０は図２を参照して後述する。
【００２０】
図２は、例示的な実施形態の分散計算に適した代表的なネットワーク環境２００である。ネットワーク環境２００は、通信ネットワーク２１０を介してクライアント２２０に接続されたサーバ２３０を含むことができる。さらに、これらサーバ２３０は通信ネットワーク２１０を介してワーカー２４０に接続できる。クライアント２２０、サーバ２３０、及びワーカー２４０は、図１に示した計算装置１００上に実装できる。計算装置１００のネットワーク・インターフェース１６０及びモデム１５０は、クライアント２２０、サーバ２３０、及びワーカー２４０が、通信ネットワーク２１０を介して他のクライアント２２０、サーバ２３０、及びワーカー２４０と通信可能とする。通信ネットワーク２１０は、インターネット、ＬＡＮ（ローカルエリア・ネットワーク）、ＷＡＮ（ワイドエリア・ネットワーク）、ＭＡＮ（メトロポリタンエリア・ネットワーク）などを含むことができる。これら通信設備は本発明の分散的実装をサポートできる。クライアント２２０、サーバ２３０、及びワーカー２４０は図３を参照して次に詳述する。
【００２１】
図３は、代表的な分散計算システム３００の例示的な実施形態を示す。分散計算システム３００は、ネットワーク２１０上のサーバ２３０にネットワーク通信チャンネルを介して通信するクライアント２２０上で実行する技術計算クライアント２２１を含む。サーバ２３０は任意のスケジューラ２３１を含む。スケジューラ２３１は、ネットワーク２１０のネットワーク通信チャンネルを介して、ワーカー２４０、２５０、及び２６０上の技術計算ワーカー２４１、２５１、及び２６２と通信する。分散計算システム３００により、技術計算クライアント２２１は、ワーカー２４０、２５０、及び２６０上の技術計算ワーカー２４１、２５１、及び２６１から利用可能な計算資源を使用してタスクの技術計算が可能となる。これが技術計算クライアント２２１を解放するので、このクライアントが他のタスクを実行でき、或いはクライアント２２０を解放し、このクライアントが他のソフトウェアアプリケーションを実行できる。技術計算ワーカー２４１、２５１、及び１６１は必要に応じて技術計算クライアント２２１が利用可能である。技術計算ワーカー２４１、２５１、及び２６１のワーカー２４０、２５０、及び２６０が技術計算クライアント２２１からのタスクの技術計算を実行していないときは、これらワーカー２４０、２５０、及び２６０は、他のソフトウェアアプリケーションを実行でき、或いは、技術計算ワーカー２４１、２５１、及び１６１は他の技術計算クライアントからのタスクの技術計算を実行できる。通常の技能を備えた当業者であれば、システム３００は例示的なものであり、他の実施形態ではサーバ２３０は多数のクライアントにサービスを提供でき、クライアント２２０は多数のサーバからサービスを要求できることは理解するはずである。
【００２２】
技術計算クライアント２２１は、技術計算及びグラフィックモデリング環境を提供し、モデルをシミュレートするための数学的アルゴリズムを定義する技術計算ソフトウェアアプリケーションでよい。技術計算クライアント２２１はＭＡＴＬＡＢ（登録商標）分散計算クライアントでよく、これはＭＡＴＬＡＢ（登録商標）の独立型デスクトップ・アプリケーションが提供する機能の全て又は一部を含むことができる。又、技術計算クライアント２２１はＭＡＴＬＡＢ（登録商標）製品ファミリで利用可能なソフトウェアプログラムの何れかとすることができる。さらに、技術計算クライアント２２１は、アプリケーションプログラミング・インタフェースなどのインターフェースを介して或いは他の手段によりＭＡＴＬＡＢ（登録商標）機能にアクセスする特注ソフトウェアプログラム又は他のソフトウェアとしてもよい。通常の技能を備えた当業者であれば、本システムの機能にアクセスできるタイプのクライアントを様々に組合せ可能なことは理解するはずである。
【００２３】
技術計算クライアント２２１のアプリケーションプログラミング・インタフェース（ＡＰＩ）及び／又はプログラミング言語を使って、クライアント２２０に対してローカル又はワーカー上にあるリモートの技術計算環境により実行すべき技術計算タスクを表す関数を定義できる。ローカル技術計算環境は、技術計算クライアント２２１の一部又はクライアント２２０上で実行する技術計算ワーカーでよい。上述のプログラミング言語は、技術計算環境に分散されるジョブを定義し、そのジョブをワーカー上或いはクライアント２２０上の技術計算ワーカーに伝達する機構を含んでいる。例えば、技術計算クライアント２２１は、１０個の数字の無作為の組を生成する関数を宣言し、さらにワーカー上で実行する技術計算ワーカーにその関数の実行を委ねることができる。又、ＭＡＴＬＡＢ（登録商標）分散計算クライアントのＡＰＩ及びプログラミング言語は、別の技術計算環境からのジョブの技術計算の実行結果を受け取る機構も含む。
【００２４】
技術計算ワーカー２４１、２５１、及び２６１は、技術計算クライアント２２１により定義又は作成されたタスクを含むタスクの技術計算実行用の技術計算環境を提供する技術計算ソフトウェアアプリケーションでよい。技術計算ワーカー２４１、２５１、及び２６１は、ＭＡＴＬＡＢ（登録商標）分散計算アプリケーション、モジュール、サービス、ソフトウェアコンポーネント、又はセッションとすることができ、これらはＭＡＴＬＡＢ（登録商標）のプログラミング言語で定義された関数の技術計算へのサポートを含む。技術計算ワーカー２４１、２５１、及び２６１は、技術計算タスクを表す関数及びソフトウェアコンポーネントを含むこともできるし、実行目的で受け取るタスクの技術計算を実行するのに必要となるソフトウェアコンポーネントのみを含んでもよい。技術計算ワーカー２４１、２５１、及び２６１は、ＭＡＴＬＡＢ（登録商標）製品ファミリの任意モジュール、ライブラリ、又はソフトウェアコンポーネントを実行可能に構成してよい。従って、技術計算ワーカー２４１、２５１、及び２６１は、ＭＡＴＬＡＢ（登録商標）ソフトウェアコンポーネントの全部又は一部をワーカー２４０、２５０、及び２６０にインストールしておいてもよいし、ネットワーク２１０内の別のシステムでアクセス可能としてもよい。技術計算ワーカー２４１、２５１、及び２６１は、技術計算クライアント２２１がクライアント自身の技術計算環境で技術計算を実行しているかのように、タスクの技術計算を実行できる。
【００２５】
技術計算クライアント２２０には、サーバ２３０上の任意スケジューラ２３１がクライアント２２０上の技術計算クライアント２２１とインターフェースを取れるようにするインターフェース２２２が含まれる。インターフェース２２２は技術計算クライアント２２１と任意スケジューラ２３１との間に通信チャンネルを確立して、技術計算クライアント２２１がジョブを当該通信チャンネルを介して任意スケジューラ２３１に提出できるようにする。さらに、技術計算クライアント２２０は、ジョブの実行結果を、技術計算クライアント２２１と任意スケジューラ２３１との間にインターフェース２２２により確立された通信チャンネルを介して受け取る。通常の技能を備えた当業者であれば、インターフェース２２２を技術計算クライアント２２１内、或いはネットワーク・インターフェース１６０内に設けてもよいことは理解するはずである。
【００２６】
ワーカー２４０、２５０、及び２６０は、サーバ２３０上の任意スケジューラ２３１が、ワーカー２４０、２５０、及び２６０上の技術計算ワーカー２４１、２５１、及び２６２それぞれとインターフェースを取れるようにするインターフェース２４２、２５２、及び２６２を含む。インターフェース２４２、２５２、及び２６２は、任意スケジューラ２３１と技術計算ワーカー２４１、２５１、及び１６１との間に通信チャンネルを確立して、任意スケジューラ２３１がジョブを当該通信チャンネルを介して技術計算ワーカー２５１、２６１、及び２７１に提出できるようにする。さらに、この任意スケジューラは、当該通信チャンネルを介してタスクの実行結果を受け取ることもできる。通常の技能を備えた当業者であれば、インターフェース２４２、２５２、及び２６２を技術計算ワーカー２４１、２５１、及び２６１内、或いはネットワーク・インターフェース１６０内に設けてもよいことは理解するはずである。
【００２７】
これらインターフェースは、上述の任意スケジューラのベンダーや当該スケジューラのインターフェースプロトコルからは独立して上述の通信チャンネルを確立する。これらインターフェースは、様々なベンダーが提供する任意スケジューラと通信チャンネルを確立でき、その際、当該任意スケジューラの「インターフェースプロトコル」すなわち「インターフェースフォーマット」からは独立してこれら通信チャンネルを確立できる。「インターフェースプロトコル」すなわち「インターフェースフォーマット」は、この任意スケジューラとの間でデータを送受信するための一組の規則を指す。この規則の組は、任意スケジューラとの間でデータを転送及び受信するためのデータフォーマットを定義でき、さらに、該当する場合はデータ伝送に用いるエラー検査の種類と、該当する場合はデータ圧縮方法と、データ送信が終了したことを送信機構が示す方式と、任意スケジューラがデータを受信したことを示す方式とを少なくとも定義できる。
【００２８】
図４は、例示的な実施形態における代表的なインターフェース２２２を示すブロック図である。通常の技能を備えた当業者であれば、図４は、クライアント２２０上の技術計算クライアント２２１の代表的なインターフェース２２２を示し、又、ワーカー２４０、２５０、及び２６０上の技術計算ワーカー２４１、２５１、及び１６１のインターフェース２４２、２５２、及び２６２を類似の様態で実装できることは理解するはずである。インターフェース２２２は、インターフェースエンジン３１０、スケジューラオブジェクト３２０、及びアダプタ３３０を含むことができる。後述するように、インターフェースエンジン３１０、スケジューラオブジェクト３２０、及びアダプタ３３０は別個のエンティティとして説明しているが、通常の技能を備えた当業者であればこれらの２つ以上を単一のエンティティとして実装してもよいことは理解するはずである。
【００２９】
インターフェースエンジン３１０は、技術計算クライアント２２１と任意スケジューラ２３１との間のデータ伝送を管理する役割を担う。さらに、インターフェースエンジン３１０は、技術計算クライアント２２１又は任意スケジューラ２３１が理解可能な形式にデータをフォーマットする役割も担う。インターフェースエンジン３１０はスケジューラオブジェクト３２０とインターフェースを取り、任意スケジューラ２３１と技術計算クライアント２２１との間でどのようにデータを伝送するかを定義する通信プロトコルを決定する。インターフェースエンジン３１０が任意スケジューラ２３１に通信できるよう、インターフェースエンジン３１０はアダプタ３３０と通信する。インターフェース２２２は、異なる任意スケジューラ２６０とインターフェースを取るため複数のアダプタ３３０を含むことができる。従って、スケジューラ２３１それぞれに１つのアダプタ３３０を備えることもできる。例示的な実施形態のアダプタは、異なる任意スケジューラ２６０の何れとでもインターフェースできるよう拡張可能である。このアダプタは任意スケジューラ２６０を包括する基本プロパティを備えていてもよい。これら基本プロパティは、ベンダーがいずれかにかかわらず全てのサポートされたスケジューラに当てはまる。又、このアダプタは、様々な任意スケジューラ２６０それぞれに固有な付加的プロパティを備えていてもよい。スケジューラ固有のプロパティは特定ベンダーのスケジューラにのみ当てはまる。スケジューラ固有のプロパティを加えることにより、アダプタをその特定スケジューラとインターフェースを取るよう拡張できる。アダプタ３３０は、任意スケジューラ２３１に固有な情報の抽象化を行う手助けとなる。抽象化したデータは、インターフェース２２２によりスケジューラオブジェクト３２０などの１つ又は複数のオブジェクトを作成するために使用される。これについては図５を参照して後に詳述する。
【００３０】
インターフェース２２２は、インターフェースエンジン３１０及びアダプタ３３０を使って技術計算クライアント２２１と任意スケジューラ２３１との間に通信チャンネルを設ける。従って、この通信チャンネルはインターフェースの種類及びプロトコル並びにこの任意スケジューラのベンダーから独立した様態で動作するので、技術計算クライアント２２１は一組の機能、方法、及び制御手段を用いて任意スケジューラ２３１とインターフェースを取り且つ連係できる。
【００３１】
図５は、クライアント２２０がジョブを作成し、そのジョブをスケジューラ２３１に提出する代表的な動作を示すフローチャートである。クライアント２２０はネットワーク２１０上で１つ又は複数のスケジューラを発見し、そのスケジューラを自分のインターフェース２２２に登録する（ステップ５１０）。ＭＡＴＬＡＢ（登録商標）分散計算環境では、ユーザは「findresource」コマンドを使って利用可能なスケジューラを識別でき、さらにクライアント２２０のＭＡＴＬＡＢセッションでこのスケジューラを表すオブジェクトを作成できる。ユーザはそれぞれのスケジューラのプロパティを調べて、どのスケジューラを使用したいかを決める。ユーザはスケジューラを特定すると、それを分離し且つクライアント２２０上に単一のオブジェクトを作成できる。
【００３２】
図６は、スケジューラオブジェクトを作成し且つそのスケジューラオブジェクトを用いて当該スケジューラとの通信チャンネルを確立するための代表的な動作を示す。通常の技能を備えた当業者であれば、インターフェース２２２について説明したこの代表的な動作は、ワーカー２４０、２５０、及び２６０上の技術計算ワーカー２４１、２５１、及び２６１のインターフェース２４２、２５２、及び２６２の動作にも当てはまることは理解するはずである。
【００３３】
インターフェース２２２は、技術計算クライアント２２１と任意スケジューラ２３１との間の通信チャンネル確立の要求を受け取ることができる（ステップ６１０）。インターフェースエンジン３１０は、任意スケジューラ２３１に適した利用可能なアダプタ３３０を見つけるためディレクトリ又はファイル若しくはルックアップテーブルなどの他の適切なデータ構造を検索する。利用可能なアダプタのこの検索は通信チャンネル要求を受け取ったときに一度実行でき、この結果は記憶装置又は適切な記憶媒体に記憶できる。しかしながら、インターフェース２２２を適合して、新たなアダプタがプラグインされた場合には、こうした要求を受け取るたびに利用可能なアダプタへの新たな検索を実行させることもできる。本発明の例示的な実施形態の説明では、利用可能なアダプタの情報は初期検索後に記憶されるものとする。インターフェースエンジン３１０は全ての利用可能なアダプタを初期化するか、任意スケジューラ２３１との使用に適した１つ又は複数の選択したアダプタを初期化できる。初期化した各アダプタ３３０は、ブール戻り値など何らかの形式の指標をインターフェースエンジン３１０に与えて初期化の完了又は失敗を表示する。初期化したアダプタからの全ての値を受け取ると、インターフェースエンジン３１０は初期化に成功した利用可能なアダプタのリストを技術計算クライアント２２１に返す。
【００３４】
もしアダプタ３３０が任意スケジューラ２３１に利用可能であれば（ステップ６３０）、アダプタ３３０が任意スケジューラ２３１に関わる情報を既に抽象化しているかどうかと、その抽象化情報を含むファイル、クラス定義、又はオブジェクトが存在するかなどそうした情報が利用可能かどうかとを判断する（ステップ６４０）。この情報が利用できない場合、インターフェースエンジン３１０は、アダプタ３３０を介して利用可能な全てのスケジューラを探すためアダプタ３３０を呼び出すか問い合わせる。アダプタ３３０は、アダプタ３３０を介して利用可能なスケジューラのリストを返す。通常の技能を備えた当業者であれば、アダプタ３３０及びスケジューラ２３１は、当該任意スケジューラ２３１と通信するには必ず選択したアダプタを用いなければならない一対一の関係を確立できることは理解するはずである。しかしながら、通常の技能を備えた当業者であれば、各スケジューラ２３１が類似の通信方法を使用する限り、アダプタは複数のスケジューラと通信できることも理解するはずである。利用可能なアダプタ３３０が存在しないと判断されると（ステップ６３０）、インターフェース２２２は通信チャンネルを確立するプロセスを終了する。
【００３５】
アダプタ３３０は任意スケジューラ２３１のプロパティ、機能、及び情報に関する問い合わせを受ける。すると、アダプタ３３０は要求された情報を抽象化し、任意スケジューラ２３１の機能及びプロパティ情報をインターフェースエンジン３１０に返す。又、アダプタ３３０は適切なフィールドに適切な値を備えたテンプレートを返すか、任意スケジューラ２３１の適切なソース及びプロパティ情報を含む１つ又は複数のオブジェクトを返すこともできる。さらに、アダプタ３３０は、任意スケジューラ２３１に固有なデータを用いてファイル又はオブジェクトを更新できる。
【００３６】
任意スケジューラ２３１に関わるアダプタ３３０によるスケジューラ情報の抽象化を容易にするため、インターフェース２２２はスケジューラオブジェクト３２０の作成を補助する読取り機構を提供できる。本発明の一実施形態では、この読取り機構は任意スケジューラ２３１のプロパティ情報を含むファイルである。こうしたプロパティ情報は、任意スケジューラ２３１に関わるプロパティ名と、プロパティタイプと、プロパティ制約条件と、ヘルプ情報と、アダプタ３３０又はインターフェースエンジン３１０が読み、スケジューラオブジェクト３２０を作成できる他の類似情報とを含むがそれらに限定されない。通常の技能を備えた当業者であれば、この読取り機構は任意スケジューラ２３１のプロパティ情報に限定されるものでなく、機能及び他の情報を含みうることは理解するはずである。本発明の一実施形態では、この読取り機構はマーク付け言語ファイルとして構造化されている。
【００３７】
アダプタ３３０が１つ又は複数のオブジェクトを返すと、インターフェースエンジン３１０は、任意スケジューラ２３１の属性及びメソッドを含むオブジェクトをインスタンス生成するようアダプタ３３０に要求する。アダプタ３３０はこうしたオブジェクトをインスタンス生成し、ハンドルをアダプタ３３０に返されるこのオブジェクトに作成する。このハンドルは、技術計算クライアント２２１及びインターフェースエンジン３１０が任意スケジューラ２３１との通信で利用するためスケジューラオブジェクト３２０に含められる。例えば、インターフェースエンジン３１０はアダプタ３３０からハンドルを受け取ると、スケジューラオブジェクト３２０を作成する生成関数を呼び出すことができる。この生成関数は与えられたハンドルを用いて、選択した生成関数の引数に対応するスケジューラオブジェクト３２０の比率を設定できる。
【００３８】
スケジューラオブジェクト３２０は、技術計算クライアント２２１と任意スケジューラ２３１との間の通信チャンネルの高レベル表現である。アダプタ３３０が与えるスケジューラ抽象は、１つ又は複数のスケジューラ２６０のプロパティを与える。さらに、スケジューラオブジェクト３２０は、１つ又は複数スケジューラ２６０の構成設定へのアクセスを与える。アダプタ３３０が与えるスケジューラ抽象は、１つ又は複数スケジューラ２６０のメソッドの収集体を与えることもできる。
これらプロパティ及びメソッドのリストを下記に示す。
スケジューラオブジェクトのプロパティ
【００３９】
【表１】
2008530707.tif 000003
スケジューラオブジェクトの機能
【００４０】
【表２】
2008530707.tif 000004
【００４１】
スケジューラオブジェクト３２０は、関連付けられたアダプタ３３０に与えられた名前などの入力、一意なスケジューラ識別子、及びその他の類似した入力を含むことができる。アダプタ名入力は、任意スケジューラ２３１とインターフェースエンジン３１０との間の通信を管理するアダプタ３３０を記述するために用いる語句である。この一意なスケジューラ識別子は、与えられていなければ、インターフェースエンジン３１０により識別された利用可能な識別子に設定される。スケジューラオブジェクト３２０は、スケジューラオブジェクト３２０の入力により一意に識別される任意スケジューラ２３１に関連付けられる。
【００４２】
通常の技能を備えた当業者であれば、ＭＡＴＬＡＢ（登録商標）環境では、ＭＡＴＬＡＢ（登録商標）Ｍファイルの実行に当たって、Ｍファイルが呼び出された時に存在した構成でスケジューラオブジェクト３２０が再生成されるようにＭファイルを構成できることは理解するはずである。このようにユーザは、全ての設定を手動で再構成することなく後の使用のために構成設定の状態を収集できる。さらに、構成設定を再生成するファイル又は他の実行可能手段を実行することにより、ユーザは、自分の必要性に適した予め構成されたオブジェクトを再生成する関数を容易に生成できる。すると生成した関数をアプリケーションに統合できる。しかしながら、通常の技能を備えた当業者であれば、他の実行可能ファイルを他のソフトウェア環境で生成して、その実行可能ファイルが呼び出された時に構成設定を用いてスケジューラオブジェクトを再生成できることは理解するはずである。
【００４３】
インターフェース２２２は、技術計算クライアント２２１と任意スケジューラ２３１との間の通信チャンネルを確立する（ステップ６７０）。すなわち、技術計算クライアント２２１はインターフェースエンジン３１０を呼び出す。するとインターフェースエンジン３１０がアダプタ３３０を呼び出す。アダプタ３３０は任意スケジューラ２３１と通信し、技術計算クライアント２２１と任意スケジューラ２３１との間に接続すなわち通信チャンネルを確立する。通常の技能を備えた当業者であれば、任意スケジューラ２３１及び任意スケジューラ２３１の能力次第では、インターフェース２２２は技術計算クライアント２２１と任意スケジューラ２３１との間、又は技術計算クライアント２２１と多数の任意スケジューラとの間に多数のスレッド或いは多数の通信チャンネルを実現できることは理解するはずである。
【００４４】
図５を再び参照すると、ユーザはジョブをクライアント２２０にローカルに作成する。技術計算クライアント２２１のアプリケーションプログラミング・インタフェース（ＡＰＩ）及び／又はプログラミング言語を使って、リモート技術ワーカー２４１、２５１、及び２６１により実行すべき技術計算タスクを表すジョブを定義できる。このプログラミング言語は、技術計算環境に分散されるジョブを定義する機構を含むことができる。例えば、ユーザは、クライアント２２１におけるＭＡＴＬＡＢ（登録商標）セッションにおいて次のステートメントでジョブを作成できる。このコマンドがクライアントセッションで実行されれば、ジョブオブジェクトがクライアント２２０でジョブクラスからインスタンス生成される。
scheduler = findresource('LSF')
j = scheduler.createjob
ユーザは、ＭＡＴＬＡＢ（登録商標）の次のステートメントでジョブオブジェクトのプロパティを見ることができる。
j.get
UserName: 'jlmartin'
Tag: ''
State: 'pending'
CreateTime: 'Tue Nov 23 14:37:51 GMT 2004'
SubmitTime: ''
StartTime: ''
FinishTime: ''
Tasks: [0x1 double]
JobData:
[]
SerializedProductList: []
【００４５】
こうして作成されたジョブはスケジューラへのコールバック又はリンクを備えておらず、すなわち、このジョブはネットワーク２１０においてスケジューラ２３１からは独立して作成される。.  このジョブの状態（原語：State）プロパティは「保留中（原語：pending）」である。これは、このジョブはスケジューラ２３１で実行するための待ち行列に入れられていないので、ユーザはこのジョブにタスクを追加できることを表す。ユーザがこのジョブを作成した後で保留状態にある間、ユーザはこのジョブのタスクを作成できる（ステップ５３０）。タスクはジョブの実行時にワーカーにより評価される関数を定義する。例示的な実施形態では、タスクはＭＡＴＬＡＢ（登録商標）コマンドのような実行すべき技術計算コマンドと、引数の数と、引数への任意の入力データとを定義する。代表的なタスクを次に示した。
t = j.createTask(@rand, 1, {1})
このタスクは乱数を生成する。ユーザは、ＭＡＴＬＡＢ（登録商標）の次のステートメントでタスクオブジェクトのプロパティを見ることができる。
t.get
ID: 0
Function:
@rand
NumberOfOutputArguments: 1
InputArguments: {[1]}
OutputArguments:
[]
CaptureCommandWindowOutput: 0
CommandWindowOutput: ''
State: 'pending'
ErrorMessage: ''
ErrorIdentifier: ''
Timeout: 0
CreateTime: 'Tue Nov 23 14:38:11 GMT
2004'
StartTime: ''
FinishTime: ''
Worker: ''
Parent: [1x1 distcomp.localjob]
【００４６】
図５を再び参照すると、ジョブとタスクをクライアント２２０に作成した後、ユーザはこのジョブをポータブルフォーマットでスケジューラ２３１に提出し、リモートワーカー２４０、２５０、及び２６０でこのジョブを実行させ、そのタスクを評価させる（ステップ５４０）。
【００４７】
図７は、クライアント２２０がジョブをスケジューラ２３０に提出する代表的な動作を示すフローチャートである。先ず、クライアント２２０のライセンス情報がジョブに含められる（ステップ７１０）。本発明の例示的な実施形態は、クライアント２２０においてソフトウェアコンポーネント又は製品の動的ライセンス方式を採用できる。これは、引用して本明細書に援用する「分散形システムにおける動的ライセンス（原語：DYNAMIC
LICENSING IN A DISTRIBUTED SYSTEM）」と題した同時係属中の米国特許出願（米国特許出願第１０／８９６，６７１号）に記載されている。計算クライアント２２１で生成されるジョブは、異なるソフトウェアコンポーネント又は製品での１つ又は複数の関数呼び出しを含むことができる。ジョブはその中に含まれるタスクの評価のためリモートワーカーに分散できる。ジョブが複数ワーカー２７０に分散されると、計算クライアント２２１がライセンスを受けているソフトウェアコンポーネント又は製品に関する情報もそのジョブ内で分散される。
【特許文献１】米国特許出願第１０／８９６，６７１号公報
【００４８】
図８は、本発明の例示的な実施形態における、スケジューラ２３１に提出される代表的なジョブオブジェクトである。ジョブ８００は複数のタスク８１０、８２０、及び８３０を含む。ジョブ８００はクライアント２２０のライセンス情報８４０も含んでいる。リモートワーカーは、クライアント２２０のソフトウェアコンポーネント又は製品に関するライセンス情報８４０と共にジョブ８００を受け取り、その情報に基づいてこれらソフトウェアコンポーネント又は製品のライセンスを動的に与える。ワーカーは、これらソフトウェアコンポーネント又は製品に関わる動的に与えられたライセンスを用いてタスクを実行する。技術計算ワーカーによるライセンス情報の利用は図９を参照して後に詳述する。
【００４９】
図７を再び参照すると、次にジョブオブジェクトは、スケジューラ２３１のプラットフォーム構造から独立したポータブルフォーマットに符号化される（ステップ７２０）。ポータブルフォーマットとは、様々なシステムに移動可能なプログラム又はデータベースのフォーマットを指す。例示的な実施形態では、ジョブオブジェクトは、ＭＡＴＬＡＢ（登録商標）の「保存（原語：save）」機能を用いてＭＡＴファイルに直列化又は符号化される。「保存」機能はジョブオブジェクトを連続的なバイトストリームに符号化する。これには、ジョブオブジェクトをアーキテクチャから独立したファイル保存に適した形式に符号化し、別のアプリケーションへパイピングし、又は、敷衍して述べるとネットワークを介して伝送することが含まれる。こうしたストリームは一時的（ＲＡＭベース）でも永続的（ディスクベース）でもよい。一時的なストリームを用いてスケジューラへ伝送するジョブオブジェクトを作成できる。ディスク上のファイルのような永続的ストリームでは、現在のセッション終了後もジョブオブジェクトを記憶できる。何れの場合も、ストリーム内の情報を後に利用して、元々のものと同じジョブオブジェクトを含むデータ構造を構築できる。ワーカーがバイトストリームを受け取ると、符号化処理の反対の手順を実行して元々のジョブオブジェクトの複写を得る。これについては図９を参照して後に詳述する。
【００５０】
ＭＡＴファイルはデータをバイナリ形式で保存し、多次元数値配列、文字配列、セル配列、構造、及びオブジェクトを含むＭＡＴＬＡＢ（登録商標）配列タイプをサポートする。ＭＡＴファイルは、ヘッダ及び１つ又は複数のデータ要素を含む。各データ要素はタグとデータとを含む。タグはデータ要素内のバイト数と、データ要素内のデータの型とを指定する。タグを用いることで、ＭＡＴファイルフォーマットはＭＡＴファイル内の個別データ要素へのアクセスを迅速化する。通常の技能を備えた当業者であれば、ＭＡＴファイルフォーマットは例示的な形式であって、他のポータブルフォーマットを他の実施形態で使用できることは理解するはずである。
【００５１】
図７を再び参照すると、ポータブルフォーマットで符号化されたジョブオブジェクトは、クライアント２２０とスケジューラ２３１との間の通信チャンネルを介してスケジューラ２３１に提出される（ステップ７３０）。さらに、ジョブのプロパティなどのジョブに関する情報もスケジューラ２３１に送って、スケジューラ２３１が、この情報を用いてジョブをポータブルフォーマットでリモートワーカーに分散できるようにする。図５を参照して述べたように、ジョブのプロパティは、ユーザ名（原語：UserName）、タグ（原語：Tag）、状態（原語：State）、作成日時（原語：CreateTime）、提出日時（原語：SubmitTime）、開始日時（原語：StartTime）、終了日時（原語：FinishTime）、タスク（原語：Tasks）、ジョブデータ（原語：JobData）、直列化製品リスト（原語：SerializedProductList）、等を含む。
【００５２】
通常の技能を備えた当業者であれば、ジョブ８００を１つ又は複数タスクを含む複数のポータブルフォーマット・ファイルに分解でき、これらのポータブルフォーマット・ファイルをスケジューラに提出できるので、スケジューラがタスクをリモートワーカーに分散できることは理解するはずである。この場合、これら複数のポータブルフォーマット・ファイルのそれぞれはライセンス情報８４０を含むことができる。
【００５３】
スケジューラ２３１は複数ベンダーの何れかにより提供された任意スケジューラである。任意スケジューラ２３１は、タスクを技術計算クライアント２２１から技術計算ワーカー２４１、２５１、及び２６１へ自動分散するための自動タスク分散機構を含むか、この機構に関連付けることができる。自動タスク分散機構により、技術計算クライアント２２１はタスク分散を当該自動タスク分散機構に委ねることができる。例えば、どの技術計算ワーカーがタスクの技術計算を実行するかを指定することなく、タスクを定義でき且つ任意スケジューラ２３１に提出できる。技術計算クライアント２２１はこの技術計算ワーカーの詳細を知る必要はない。技術計算クライアントはタスクを任意スケジューラ２３１に提出するための関数を定義でき、任意スケジューラ２３１からタスクの結果を得ることができる。従って、任意スケジューラ２３１は、技術計算クライアント２２１と技術計算ワーカーとの間に一定の間接性を実現する。
【００５４】
これにより分散プログラミング及び統合に関わる技術計算クライアント２２１への負担が軽減される。技術計算クライアント２２１は、技術計算ワーカー２４１、２５１、及び２６１の可用性を予め知っておく必要がない。技術計算クライアント２２１からの多数のタスク提出については、任意スケジューラ２３１は、同一技術計算ワーカー２４１又は他の技術計算ワーカーへのタスクの委任を管理且つ処理でき、又これらタスクの結果を、全分散タスクの技術計算終了後の取り出しに備えて技術計算クライアント２２１に代わって保持できる。
【００５５】
図９は、ワーカー２４０がジョブを受け取り、そのジョブ内のタスクを実行する代表的な動作を示すフローチャートである。図６を参照して述べたように、ワーカー２４０はスケジューラ２３１との間に通信チャンネルを確立する（ステップ９１０）。スケジューラ２３１との通信チャンネルを確立すると、ワーカー２４０はスケジューラ２３１からポータブルフォーマットのジョブを受け取る（ステップ９２０）。そのジョブと共に、ワーカー２４０は、ワーカー２４０上で実行すべきジョブ内の１つ又は複数のタスクの指示に関する情報も受け取ることができる。ワーカー２４０はジョブを復号し、ポータブルフォーマットから元々のジョブオブジェクトを復元する（ステップ９３０）。例えば、ジョブが直列化されていれば、ワーカー２４０は受け取ったジョブを非直列化する。ジョブがＭＡＴファイルフォーマットで受け取られた場合は、元々のジョブをＭＡＴＬＡＢ（登録商標）に含まれる「ロード（原語：load）」コマンドを使って復元できる。ワーカー２４０はジョブに含まれるライセンス情報を抽出する。必要はソフトウェアコンポーネント又は製品がライセンスを受けていれば、ワーカーはジョブ内の指定タスクを実行し（ステップ９５０）、このタスクの実行結果をスケジューラ２３１に返す（ステップ９６０）。するとスケジューラ２３１はこのジョブの実行結果をクライアント２２０に返す（図５のステップ５５０）。通常の技能を備えた当業者であれば、ワーカー２４０の代表的な動作はワーカー２５０及び２６０を含む他のワーカーにも当てはまることは理解するはずである。
【００５６】
通常の技能を備えた当業者であれば、上述の分散計算システムは例示目的であって、本発明の範囲を限定するものでないことは理解するはずである。反対に、本発明の別の実施形態では、直列及び並列技術計算システムなどの異なる計算システムを実装してもよい。こうしたシステムは、本明細書に引用して援用する「技術計算タスクを技術計算ワーカーに分散する方法及びシステム（原語：METHODS
AND SYSTEM FOR DISTRIBUTING TECHNICAL COMPUTING TASKS TO TECHNICAL COMPUTING
WORKERS）」と題した係属中の米国特許出願第１０/８９６７８４号に詳述されている。
【特許文献２】米国特許出願第１０／８９６，７８４号公報
【００５７】
通常の技能を備えた当業者であれば本発明の精神及び範囲から逸脱することなく多くの変更及び修正が可能である。したがって、例示的な実施形態は例示目的のみで示したものであり、次の特許請求の範囲で定義される本発明を限定する意味で解釈すべきでないことは明確に理解すべきである。これら特許請求の範囲は、文字通り記載されたものを含むと共に、上述の例に図示し且つ説明したものと他の側面で同一ではなくても、差異が僅かな同等の要素とを含むものとして読むべきである。
【図面の簡単な説明】
【００５８】
本発明の上述及び他の目的、側面、特徴、並びに利点は、添付の図面と共に次の説明を参照すればより良く理解できるはずである。
【図１】本発明の例示的な実施形態を実施するための代表的な計算装置を示すブロック図である。
【図２】本発明の例示的な実施形態を実施するための代表的なネットワーク環境を示すブロック図である。
【図３】本発明の例示的な実施形態を実施するための代表的な分散計算システムを示すブロック図である。
【図４】任意スケジューラとの分散計算システムの代表的なインターフェースを示すブロック図である。
【図５】図３に示した分散計算システムにおけるクライアントの代表的な動作を示すフローチャートである。
【図６】任意スケジューラと通信チャンネルを確立するための代表的な動作を示すフローチャートである。
【図７】クライアントがジョブを任意スケジューラに提出する代表的な動作を示すフローチャートである。
【図８】ライセンス情報を含む代表的なジョブを示す。
【図９】図３に示した分散計算システムにおけるワーカーの代表的な動作を示すフローチャートである。
【図１】
2008530707.tif 000005
【図２】
2008530707.tif 000006
【図３】
2008530707.tif 000007
【図４】
2008530707.tif 000008
【図５】
2008530707.tif 000009
【図６】
2008530707.tif 000010
【図７】
2008530707.tif 000011
【図８】
2008530707.tif 000012
【図９】
2008530707.tif 000013
【手続補正書】
【提出日】平成19年10月11日(2007.10.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ある方法を実行するために少なくとも１つのプロセッサにより実行可能な命令を記憶するコンピュータ可読媒体であって、
複数の異なるスケジューラと複数のワーカーとを含む分散計算環境において、少なくとも１つのワーカーにより実行されるジョブを定義するジョブオブジェクトを作成するための１つ又は複数の命令と、
前記ジョブオブジェクトを前記複数の異なるスケジューラのアーキテクチャから独立したポータブルフォーマットに符号化するための１つ又は複数の命令と、
前記ポータブルフォーマットで符号化された前記ジョブオブジェクトを前記分散計算環境のネットワークを介して転送するための１つ又は複数の命令と、
前記ジョブに関する情報を前記複数の異なるスケジューラの内１つのスケジューラに送るための１つ又は複数の命令であって、該情報によって、該スケジューラが前記ポータブルフォーマットの前記ジョブオブジェクトを前記少なくとも１つのワーカーに分散可能とする、１つ又は複数の命令とを含む、コンピュータ可読媒体。
【請求項２】
前記ジョブオブジェクトが少なくとも１つのタスクを含む、請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記ジョブオブジェクトがライセンス情報をさらに含む、請求項２に記載のコンピュータ可読媒体。
【請求項４】
前記ポータブルフォーマットがバイナリフォーマットを含む、請求項１に記載のコンピュータ可読媒体。
【請求項５】
前記情報が前記ジョブの１つ又は複数のプロパティを含む、請求項１に記載のコンピュータ可読媒体。
【請求項６】
前記ジョブを、それぞれが１つ又は複数のタスクを含む複数のポータブルフォーマット・ファイルに分解するための１つ又は複数の命令をさらに含み、
前記ポータブルフォーマットで符号化された前記ジョブオブジェクトを転送するための前記１つ又複数の命令が、前記複数のポータブルフォーマット・ファイルを転送するための１つ又複数の命令を含む、請求項１に記載のコンピュータ可読媒体。
【請求項７】
クライアントと、複数の異なるスケジューラと、複数のワーカーとを含む分散計算環境において、
前記複数のワーカーの内１つ又は複数のワーカーにより実行されるジョブを作成する段階であって、該ジョブが複数のタスクを含む、作成する段階と、
前記ジョブから複数のポータブルフォーマット・ファイルを作成する段階であって、前記複数のポータブルフォーマット・ファイルの各ポータブルフォーマット・ファイルが前記複数のタスク内の１つ又複数タスクを含み、各ポータブルフォーマット・ファイルが前記複数の異なるスケジューラの任意スケジューラにより処理可能な、作成する段階と、
前記複数のポータブルフォーマット・ファイルを前記分散計算環境のネットワークを介して転送する段階と、
前記ジョブに関する情報を前記複数の異なるスケジューラの内１つのスケジューラに送る段階であって、該情報によって、該１つのスケジューラが前記複数のポータブルフォーマット・ファイルを前記１つ又は複数のワーカーに分散可能とする、送る段階とを含む、方法。
【請求項８】
前記複数の異なるスケジューラが異なるベンダーにより提供されるスケジューラを含む、請求項７に記載の方法。
【請求項９】
前記ポータブルフォーマット・ファイルがライセンス情報を含む、請求項７に記載の方法。
【請求項１０】
各ポータブルフォーマット・ファイルがバイナリデータを含む、請求項７に記載の方法。
【請求項１１】
前記情報が前記ジョブの１つ又は複数のプロパティを含む、請求項７に記載の方法。
【請求項１２】
前記複数のポータブルフォーマット・ファイルの内１つのポータブルフォーマット・ファイルを前記１つ又複数のワーカーの内１つのワーカーで受け取る段階と、
前記１つのポータブルフォーマット・ファイルから前記１つ又複数のタスクを復元する段階と、
前記１つ又複数のタスクを実行する段階とをさらに含む、請求項７に記載の方法。
【請求項１３】
分散計算システムであって、
１つ又は複数のワーカーにより実行されると共に複数のタスクを含むジョブを作成する装置を含み、
さらに、前記装置が、前記ジョブを複数のポータブルフォーマット・ファイルに符号化し、前記複数のポータブルフォーマット・ファイルの各ポータブルフォーマット・ファイルが前記複数のタスク内の１つ又複数のタスクを含み、各ポータブルフォーマット・ファイルが複数の異なるスケジューラのそれぞれにより処理可能であり、
前記装置が、前記複数のポータブルフォーマット・ファイルを前記分散計算システムのネットワークを介して転送し、
前記装置が、前記ジョブに関する情報を前記複数の異なるスケジューラの内１つのスケジューラに送り、該情報によって、該１つのスケジューラが、前記複数のポータブルフォーマット・ファイルを前記１つ又は複数のワーカーに分散可能とする、分散計算システム。
【請求項１４】
前記複数の異なるスケジューラが異なるベンダーにより提供されるスケジューラを含む、請求項１３に記載の分散計算システム。
【請求項１５】
前記複数のポータブルフォーマット・ファイルの各ポータブルフォーマット・ファイルがライセンス情報を含む、請求項１３に記載の分散計算システム。
【請求項１６】
前記情報が前記ジョブの１つ又は複数のプロパティを含む、請求項１３に記載の分散計算システム。
【請求項１７】
前記１つ又複数のワーカーの内１つのワーカーが、
ポータブルフォーマット・ファイルを受け取り、
前記ポータブルフォーマット・ファイルを復号して前記１つ又複数のタスクを復元し、
前記１つ又複数のタスクを実行するよう構成されている、請求項１３に記載の分散計算システム。
【請求項１８】
前記複数のポータブルフォーマット・ファイルがバイナリデータを含む、請求項１３に記載の分散計算システム。
【請求項１９】
少なくとも１つのタスクを含むジョブを作成する段階と、
前記ジョブを、スケジューラのプラットフォーム構造から独立したポータブルフォーマットに符号化する段階と、
前記ポータブルフォーマットの前記符号化されたジョブをネットワークを介して転送する段階と、
前記ジョブに関する情報を前記スケジューラに送る段階であって、該情報によって、前記スケジューラが前記ポータブルフォーマットの前記符号化されたジョブをワーカーに分散可能とする、送る段階と、
前記ポータブルフォーマットの前記符号化されたジョブを前記ワーカーで受け取る段階と、
前記ポータブルフォーマットから前記ジョブを復号して前記ジョブを復元する段階と、
前記ジョブを前記ワーカーで実行する段階とを含む、方法。
【請求項２０】
前記ポータブルフォーマットがバイナリフォーマットを含む、請求項１９に記載の方法。
【請求項２１】
前記ポータブルフォーマットがシリアルフォーマットを含む、請求項１９に記載の方法。
【請求項２２】
クライアントと、複数の異なるスケジューラと、複数のワーカーとを含む分散計算環境において、
前記複数のワーカーの内１つのワーカーにより実行されるタスクを作成する手段と、
前記タスクからポータブルフォーマット・ファイルを作成する手段であって、該ポータブルフォーマット・ファイルが、前記タスクを含むと共に前記複数の異なるスケジューラのアーキテクチャから独立している、作成する手段と、
前記ポータブルフォーマット・ファイルを前記分散計算環境のネットワークを介して転送する手段と、
前記ジョブに関する情報を前記複数の異なるスケジューラの内１つのスケジューラに送る手段であって、該情報によって、該１つのスケジューラが、前記ポータブルフォーマット・ファイルを前記１つ又は複数のワーカーに分散可能とする、送る手段とを含む、クライアント。
【国際調査報告】
2008530707.tif 000014
2008530707.tif 000015
2008530707.tif 000016
2008530707.tif 000017