JP2008530707A - 分散計算環境におけるポータブルフォーマットのジョブの分散 - Google Patents

分散計算環境におけるポータブルフォーマットのジョブの分散 Download PDF

Info

Publication number
JP2008530707A
JP2008530707A JP2007556166A JP2007556166A JP2008530707A JP 2008530707 A JP2008530707 A JP 2008530707A JP 2007556166 A JP2007556166 A JP 2007556166A JP 2007556166 A JP2007556166 A JP 2007556166A JP 2008530707 A JP2008530707 A JP 2008530707A
Authority
JP
Japan
Prior art keywords
job
scheduler
client
technical
communication channel
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.)
Pending
Application number
JP2007556166A
Other languages
English (en)
Inventor
ローレン ディーン,
ジョセリン, ルーク マーティン,
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.)
MathWorks Inc
Original Assignee
MathWorks Inc
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 MathWorks Inc filed Critical MathWorks Inc
Publication of JP2008530707A publication Critical patent/JP2008530707A/ja
Pending legal-status Critical Current

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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

任意のジョブ管理プログラム又はスケジューラを使用可能な分散計算環境を提供するための方法、システム、及び計算プログラム製品を開示する。この分散計算環境では、1つ又は複数の技術計算タスクを含むジョブがホスト又はクライアントに作成され、ポータブルフォーマットで上述の任意ジョブスケジューラに提出される。このジョブのポータブルフォーマットはスケジューラのプラットフォーム構造から独立しているので、スケジューラは、そのプラットフォーム構造に関係なくジョブを処理できる。次に、スケジューラはポータブルフォーマットのジョブを1つ又は複数のリモートワーカーに転送する。何れのスケジューラでもジョブを受け取り且つリモートワーカーに分散可能となるように、本発明はポータブルフォーマットを用いてジョブをスケジューラに提供し、ジョブをリモートワーカーに分散する。

Description

本特許文書の開示の一部には著作権の保護対象が含まれる。その著作権者は、本特許文書すなわち特許開示が特許商標庁の特許記録に掲載されているため、他人による複写作成に異存はないが、それ以外の全ての著作権を所有する。
関連出願
本願は、2003年12月3日付けの係属中の米国特許出願第10/729752号と、2004年7月21日付けの係属中の米国特許出願第10/896,671号と、2004年7月21日付けの係属中の米国特許出願第10/896,784号との一部継続出願である2004年9月13日付けの係属中の米国特許出願第10/940,151号の一部継続出願である「分散計算環境におけるポータブルフォーマットのジョブの分散(原語:Distribution
of Job in a Portable Format in Distributed Computing Environments)」と題する2005年2月17日付けの米国特許出願第11/060971号の利益を主張し、それらの内容はここに引用して本開示の一部とする。
本発明は一般に分散計算環境に関し、より詳細には、こうした分散計算環境においてジョブをポータブルフォーマットで分散するためのシステム、方法、及びコンピュータプログラム製品に関する。
MATLAB(登録商標)は、多彩な産業分野にわたる技術者、科学者、数学者、及び教育者に技術的計算を応用するための環境を提供するマサチューセッツ州ナティック所在のThe MathWorks社の製品である。MATLAB(登録商標)は、数理計算、データ解析、視覚化、及びアルゴリズム開発用の数学的ツール及びグラフィカルツールを提供する直感的且つ高性能の言語及び技術計算環境である。MATLAB(登録商標)は、数値解析、行列計算、信号処理、及びグラフィックを使い勝手がよい環境で統合するものであり、この環境では問題と解が伝統的なプログラミングを用いることなく親しみがある数学的表記法で表現される。MATLAB(登録商標)は複雑な工学及び科学問題を解くために用いられ、その際に問題をシミュレートする数学モデルを構築することで解を得る。モデルは、多数の境界条件、データパラメータ、又は幾つかの初期推測の下で当該モデルを実行することでプロトタイプ化し、テストし、分析する。MATLAB(登録商標)では、こうしたモデルを容易に修正し、新たな変数をプロットし、或いは当該問題を迅速な対話型方式で再処理したりできる。これはFortranやC等の非解釈プログラミングでは一般的には不可能である。
デスクトップ・アプリケーションとしてMATLAB(登録商標)を使えば、科学者や技術者は慣れ親しんだワーカー環境で複雑な分析やモデリングを直感的に実行できる。しかし、単一ワーカーの計算機能力と、複雑な問題の計算集約的な反復処理を実行するために必要な計算機能力との関係により、単一ワーカーが解くことができる問題の大きさに限りがある場合がある。例えば、大規模で複雑な航空機モデルのシミュレーションは、特定組のパラメータを備えた単一計算で実行するにはそれなりの時間がかかる。しかし、この問題の分析には、異なる組のパラメータ(例えば、100の異なる高度レベル及び50の異なる航空機重量)を用いて複数回にわたりモデルを計算しなければならない場合があり、これは様々な条件下でのモデルの挙動を理解するには必要となることがある。望み通りに問題を分析するには5000回の計算が必要であり、単一のコンピュータでこれらのシミュレーションを実行するには望ましくない過度の時間がかかってしまうはずである。この場合、ネットワーク上の多くのコンピュータ資源が遊休状態となる一方で、この単一コンピュータにはこの計算を行うために全時間を割り当てることになってしまう。さらに、このソフトウェアの対話式特徴の利点は、計算時間の増加とともに減少する。
多くの工学及び科学問題がより大規模且つ複雑なモデリングを必要とするに従って、計算もより多くの資源及び時間を必要とするようになる。計算があまりに大規模で複雑になり、単一のコンピュータ上で無理のない時間で完了できなくなれば、計算時間を減少させる解決策が必要になる。1つの解決策として、大規模且つ複雑な工学及び科学計算に対処するため分散計算システムが提供されてきた。こうした分散計算システムでは、ジョブ管理プログラム又はスケジューラを用いて所与の計算をリモート計算エンティティに分散することで、これらリモート計算エンティティによる分散計算を可能とする。このジョブ管理プログラム又はスケジューラは様々なベンダーから提供されており、多くの独特の特徴を備えているものがある。従って、分散計算環境は任意ベンダーが提供する任意のジョブ管理プログラム(すなわち、複数の様々なジョブ管理プログラムのうち任意のもの)とインターフェースを取る必要がある。しかし、従来の分散計算環境では、ジョブ管理プログラム又はスケジューラは1つのジョブ内の複数タスクを扱い、これらタスクをリモート計算エンティティに分散するが、これによって分散計算環境が、ジョブ管理プログラム又はスケジューラのプラットフォーム構造へ依存する度合いを高めてしまう。従って、ジョブ管理プログラム又はスケジューラのプラットフォーム構造から独立した分散計算環境を提供する必要性が存在する。
発明の概要
本発明は、任意のジョブ管理プログラム又はスケジューラが使用可能な分散計算環境を提供する。本発明の分散計算環境では、1つ又は複数のタスクを含むジョブがホスト又はクライアントで作成され、ポータブルフォーマットで前記任意のジョブスケジューラに提出される。前記ジョブ又はタスクの前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立しているので、前記スケジューラは、前記スケジューラの前記プラットフォーム構造とは無関係に前記ジョブ又はタスクを処理できる。次に、前記スケジューラは、前記ポータブルフォーマットの前記ジョブ又はタスクを1つ又は複数のリモートワーカーに転送する。前記スケジューラは、前記リモートワーカーから前記タスクを実行した結果を受け取り、それらを前記ホスト又はクライアントに戻すことができる。本発明は、何れのスケジューラでも前記ジョブを受け取り且つ前記リモートワーカーに分散可能となるように、ポータブルフォーマットを用いて前記ジョブをスケジューラに依頼し、前記ジョブを前記リモートワーカーに分散する。
さらに本発明は、前記ホスト又はクライアントが前記ジョブに関する情報を前記任意スケジューラに提出できるように、前記ホスト又はクライアントと前記任意スケジューラとの間のインターフェースを提供する。前記ジョブに関する情報は、前記スケジューラが前記ジョブを1つ又は複数のリモートワーカーに分散するために用いられる。本発明では、前記任意スケジューラと前記リモートワーカーとの間の通信チャンネルを確立するために前記任意スケジューラとのインターフェースも提供することで、前記任意スケジューラが当該通信チャンネルを介して前記リモートワーカーに前記ジョブを分散可能とする。前記スケジューラは、それぞれのリモートワーカーで実行すべき1つ又は複数のタスクの指示に関する情報を前記リモートワーカーに送ることもできる。前記リモートワーカーは前記指示された1つ又は複数のタスクを実行し、前記1つ又は複数のタスクの実行結果を前記任意スケジューラに返すと、今度は前記スケジューラが当該結果を前記ホスト又はクライアントに転送する。
本発明の一様態によれば、ジョブを作成し、スケジューラに提出するための方法及びコンピュータプログラム製品がクライアント内に与えられる。本方法は、1つ又は複数の計算タスクを含むジョブを作成する段階と、当該ジョブをポータブルフォーマットで保存する段階とを含む。本方法は、更に、スケジューラとの通信チャンネルを確立する段階と、前記ポータブルフォーマットの前記ジョブを当該スケジューラに当該通信チャンネルを介して提出する段階とを含む。本方法は、前記スケジューラから前記通信チャンネルを介して前記ジョブの結果を受け取る段階を含むこともできる。
本発明の別の様態によれば、ジョブを受け取り且つ実行するための方法及びコンピュータプログラム製品がワーカー内に与えられる。本方法は、スケジューラとの通信チャンネルを確立する段階と、ポータブルフォーマットのジョブを当該スケジューラから当該通信チャンネルを介して受け取る段階とを含む。さらに、本方法は、前記ジョブの1つ又は複数の計算タスクの指示に関する情報を受け取る段階と、前記スケジューラから受け取った前記1つ又は複数のタスクの指示に関する前記情報に基づいて前記1つ又は複数のタスクを実行する段階とを含む。
本発明の別の様態では、あるシステムは、1つ又は複数の計算タスクを備えたジョブを作成するためのクライアントを含む。さらに、前記システムは、前記ジョブをポータブルフォーマットで保存するための記憶装置も含む。前記システムは、前記クライアントとスケジューラとの間に通信チャンネルを確立するためのインターフェースを含み、前記クライアントが任意ポータブルフォーマットの前記ジョブを当該スケジューラに当該通信チャンネルを介して提出できる。
本発明の幾つかの実施形態を以下に説明する。しかし、本発明はこれら実施形態に限定されるものでなく、本明細書に明示された内容への追加及び修正が本発明の範囲に含まれるよう意図されていることは注目すべきである。さらに、本明細書に記載された様々な実施形態の特徴は互いに排他的でなく、様々な順列や組合せが明示されていなくても本発明の精神及び範囲から逸脱することなく、本発明はこれら順列や組合せで共存可能であることは理解すべきである。
本発明の例示的な実施形態は、任意のスケジューラを使用可能な分散計算環境を提供する。この例示的な実施形態の分散計算環境では、タスクを技術計算クライアント上で作成し、更に複数ジョブに編成できる。ジョブとはアクティビティの論理単位、すなわちひとまとまりで処理或いは/管理されるタスクである。タスクはMATLAB(登録商標)コマンドのような実行すべき技術計算コマンドと、引数の数と、引数への任意入力データとを定義する。ジョブとは1つ又は複数タスクのグループである。
例示的な実施形態は、MATLAB(登録商標)分散技術計算環境に関連して例示的な目的のみで説明する。この例示的実施形態はMATLAB(登録商標)に基づいた分散形応用例に関連して説明するが、通常の技能を備えた当業者であれば、本発明を他の技術計算環境(例えば、National
Instruments社からのLabVIEW(登録商標)若しくはMATRIXx、Wolfram Research社からのMathematica(登録商標)、Mathsoft
Engineering & EducationからのMathcad、又はWaterloo Maple社の一部門であるMaplesoftからのMaple(商標)など)における技術計算タスクの処理分散に適用できることは理解するはずである。
本発明の例示的な実施形態では、複数の技術計算タスクを含むジョブを任意スケジューラに提出し、複数のコンピュータシステム上で当該タスクを実行するため、当該ジョブを複数のリモート技術計算ワーカーに分散することができる。このジョブは、MATファイルフォーマットのようなポータブルフォーマットで上述の任意スケジューラに提示される。この例示的な実施形態では、上述のポータブルフォーマットは、様々なシステムに移動可能なプログラム又はデータベースのフォーマットを指す。この例示的な実施形態は、MATファイルフォーマットを用いてジョブをスケジューラに提出する。MATファイルフォーマットはスケジューラのプラットフォーム構造から独立しているので、スケジューラはそのプラットフォーム構造とは無関係にジョブを処理できる。通常の技能を備えた当業者であれば、MATファイルフォーマットは例示的なフォーマットであり、バイナリフォーマット又はシリアルフォーマットなどの他の任意フォーマットでジョブを提出できることも理解するはずである。
次に、スケジューラは、MATファイルフォーマットのジョブを、当該ジョブの技術計算タスクに関する指示情報と共に1つ又は複数のリモートワーカーに転送し、当該リモートワーカーは指示されたタスクの技術計算を行い、その結果を上述の任意スケジューラに返す。すると、このスケジューラはその結果を技術計算クライアントに転送する。この例示的な実施形態では、スケジューラとは、一連のタスクの進行状況を追跡し且つこれらタスク実行用の資源を割り当てるプロセス又はプログラムを指す。スケジューラは付加的機能を備えたジョブ又はタスク管理プログラムを指すことが多いが、スケジューラ、ジョブ管理プログラム、及びタスク管理プログラムを含む用語は本発明のこの例示的実施形態の説明では交換可能に使用されている。
さらに本発明の例示的な実施形態は、上述のホスト又はクライアントが、ジョブと当該ジョブに関する情報とを上述の任意スケジューラに提出できるように、ホスト又はクライアントと当該任意スケジューラとの間のインターフェースを取る。当該ジョブに関する上述の情報は、上述のスケジューラが当該ジョブを1つ又は複数のリモートワーカーに分散するために用いられる。本発明では、上述の任意スケジューラとのインターフェースも提供することで当該任意スケジューラと上述のリモートワーカーとの間の通信チャンネルを確立し、この任意スケジューラが当該通信チャンネルを介して当該リモートワーカーにジョブを分散可能とする。このスケジューラは、ジョブ内の1つ又は複数のタスクの指示に関する情報をリモートワーカーに送り、リモートワーカーがジョブ内の1つ又は複数の指示タスクを実行し、この1つ又は複数タスクの実行結果を、上述の任意スケジューラとリモートワーカーとの間に確立した通信チャンネルを介して当該任意スケジューラに返すことができる。すると、このスケジューラはその結果をホスト又はクライアントに転送できる。
図1は、本発明の例示的な実施形態を実施するのに適した代表的な計算装置100である。計算装置100は、ワーカー、サーバ、ネットワークコンピュータ、量子コンピュータ、光コンピュータ、バイオコンピュータ、インターネット機器、モバイル装置、ページャ、タブレットコンピュータ等を含むがそれには限定されない様々な形式を取りうる。通常の技能を備えた当業者であれば、計算装置100は例示目的であって、本発明を限定するものでないことは理解するはずである。
計算装置100は電子式でよく、中央処理装置(CPU)110と、記憶装置130と、入力制御140と、モデム150と、ネットワーク・インターフェース160と、ディスプレイ170となどを含むことができる。CPU110は、計算装置100の各構成要素を制御して分散計算環境を提供する。メモリ120は命令やデータを一時的に格納し、それらをCPU110に与えることで、CPU110が計算装置100を作動させ、この分散計算環境を運用する。メモリ120は、コンピュータシステム・メモリ又はDRAM、SRAM、EDO・RAMなどのランダムアクセス・メモリを含むことができる。さらに、メモリ120は、他の種類のメモリ又はそれらの組合せを含むこともできる。ハードディスクドライブ又はCD−ROMなどの記憶装置130は、通常、アプリケーション用のソフトウェアツールを含んでいる。記憶装置130は、具体的には、計算装置100のオペレーティングシステム(OS)131のコードと、上述の分散計算環境(例えば、MATLAB(登録商標)分散計算環境など)を実現するアプリケーションを含むオペレーティングシステム上で実行するアプリケーション132のコードと、この分散計算環境で作成されるジョブ及びタスク並びにそれらジョブ及びタスクの実行結果のデータ133とを含む。入力制御140はキーボード180、ポインティング・デバイス190、及び他の入力装置とインターフェースを取ることができる。計算装置100は、入力制御140を介してジョブ及びタスクを作成するのに必要な入力データを受け取ることができる。計算装置100は、ユーザがジョブ及びタスクを作成するためのユーザインターフェースをディスプレイ170に表示できる。計算装置100は、コンピュータモニタなどのディスプレイ170を介してユーザが計算装置100と対話可能とする他のユーザインターフェース(グラフィカル・ユーザインタフェース(GUI)を含む)を表示することもできる。モデム150及びネットワーク・インターフェース160は図2を参照して後述する。
図2は、例示的な実施形態の分散計算に適した代表的なネットワーク環境200である。ネットワーク環境200は、通信ネットワーク210を介してクライアント220に接続されたサーバ230を含むことができる。さらに、これらサーバ230は通信ネットワーク210を介してワーカー240に接続できる。クライアント220、サーバ230、及びワーカー240は、図1に示した計算装置100上に実装できる。計算装置100のネットワーク・インターフェース160及びモデム150は、クライアント220、サーバ230、及びワーカー240が、通信ネットワーク210を介して他のクライアント220、サーバ230、及びワーカー240と通信可能とする。通信ネットワーク210は、インターネット、LAN(ローカルエリア・ネットワーク)、WAN(ワイドエリア・ネットワーク)、MAN(メトロポリタンエリア・ネットワーク)などを含むことができる。これら通信設備は本発明の分散的実装をサポートできる。クライアント220、サーバ230、及びワーカー240は図3を参照して次に詳述する。
図3は、代表的な分散計算システム300の例示的な実施形態を示す。分散計算システム300は、ネットワーク210上のサーバ230にネットワーク通信チャンネルを介して通信するクライアント220上で実行する技術計算クライアント221を含む。サーバ230は任意のスケジューラ231を含む。スケジューラ231は、ネットワーク210のネットワーク通信チャンネルを介して、ワーカー240、250、及び260上の技術計算ワーカー241、251、及び262と通信する。分散計算システム300により、技術計算クライアント221は、ワーカー240、250、及び260上の技術計算ワーカー241、251、及び261から利用可能な計算資源を使用してタスクの技術計算が可能となる。これが技術計算クライアント221を解放するので、このクライアントが他のタスクを実行でき、或いはクライアント220を解放し、このクライアントが他のソフトウェアアプリケーションを実行できる。技術計算ワーカー241、251、及び161は必要に応じて技術計算クライアント221が利用可能である。技術計算ワーカー241、251、及び261のワーカー240、250、及び260が技術計算クライアント221からのタスクの技術計算を実行していないときは、これらワーカー240、250、及び260は、他のソフトウェアアプリケーションを実行でき、或いは、技術計算ワーカー241、251、及び161は他の技術計算クライアントからのタスクの技術計算を実行できる。通常の技能を備えた当業者であれば、システム300は例示的なものであり、他の実施形態ではサーバ230は多数のクライアントにサービスを提供でき、クライアント220は多数のサーバからサービスを要求できることは理解するはずである。
技術計算クライアント221は、技術計算及びグラフィックモデリング環境を提供し、モデルをシミュレートするための数学的アルゴリズムを定義する技術計算ソフトウェアアプリケーションでよい。技術計算クライアント221はMATLAB(登録商標)分散計算クライアントでよく、これはMATLAB(登録商標)の独立型デスクトップ・アプリケーションが提供する機能の全て又は一部を含むことができる。又、技術計算クライアント221はMATLAB(登録商標)製品ファミリで利用可能なソフトウェアプログラムの何れかとすることができる。さらに、技術計算クライアント221は、アプリケーションプログラミング・インタフェースなどのインターフェースを介して或いは他の手段によりMATLAB(登録商標)機能にアクセスする特注ソフトウェアプログラム又は他のソフトウェアとしてもよい。通常の技能を備えた当業者であれば、本システムの機能にアクセスできるタイプのクライアントを様々に組合せ可能なことは理解するはずである。
技術計算クライアント221のアプリケーションプログラミング・インタフェース(API)及び/又はプログラミング言語を使って、クライアント220に対してローカル又はワーカー上にあるリモートの技術計算環境により実行すべき技術計算タスクを表す関数を定義できる。ローカル技術計算環境は、技術計算クライアント221の一部又はクライアント220上で実行する技術計算ワーカーでよい。上述のプログラミング言語は、技術計算環境に分散されるジョブを定義し、そのジョブをワーカー上或いはクライアント220上の技術計算ワーカーに伝達する機構を含んでいる。例えば、技術計算クライアント221は、10個の数字の無作為の組を生成する関数を宣言し、さらにワーカー上で実行する技術計算ワーカーにその関数の実行を委ねることができる。又、MATLAB(登録商標)分散計算クライアントのAPI及びプログラミング言語は、別の技術計算環境からのジョブの技術計算の実行結果を受け取る機構も含む。
技術計算ワーカー241、251、及び261は、技術計算クライアント221により定義又は作成されたタスクを含むタスクの技術計算実行用の技術計算環境を提供する技術計算ソフトウェアアプリケーションでよい。技術計算ワーカー241、251、及び261は、MATLAB(登録商標)分散計算アプリケーション、モジュール、サービス、ソフトウェアコンポーネント、又はセッションとすることができ、これらはMATLAB(登録商標)のプログラミング言語で定義された関数の技術計算へのサポートを含む。技術計算ワーカー241、251、及び261は、技術計算タスクを表す関数及びソフトウェアコンポーネントを含むこともできるし、実行目的で受け取るタスクの技術計算を実行するのに必要となるソフトウェアコンポーネントのみを含んでもよい。技術計算ワーカー241、251、及び261は、MATLAB(登録商標)製品ファミリの任意モジュール、ライブラリ、又はソフトウェアコンポーネントを実行可能に構成してよい。従って、技術計算ワーカー241、251、及び261は、MATLAB(登録商標)ソフトウェアコンポーネントの全部又は一部をワーカー240、250、及び260にインストールしておいてもよいし、ネットワーク210内の別のシステムでアクセス可能としてもよい。技術計算ワーカー241、251、及び261は、技術計算クライアント221がクライアント自身の技術計算環境で技術計算を実行しているかのように、タスクの技術計算を実行できる。
技術計算クライアント220には、サーバ230上の任意スケジューラ231がクライアント220上の技術計算クライアント221とインターフェースを取れるようにするインターフェース222が含まれる。インターフェース222は技術計算クライアント221と任意スケジューラ231との間に通信チャンネルを確立して、技術計算クライアント221がジョブを当該通信チャンネルを介して任意スケジューラ231に提出できるようにする。さらに、技術計算クライアント220は、ジョブの実行結果を、技術計算クライアント221と任意スケジューラ231との間にインターフェース222により確立された通信チャンネルを介して受け取る。通常の技能を備えた当業者であれば、インターフェース222を技術計算クライアント221内、或いはネットワーク・インターフェース160内に設けてもよいことは理解するはずである。
ワーカー240、250、及び260は、サーバ230上の任意スケジューラ231が、ワーカー240、250、及び260上の技術計算ワーカー241、251、及び262それぞれとインターフェースを取れるようにするインターフェース242、252、及び262を含む。インターフェース242、252、及び262は、任意スケジューラ231と技術計算ワーカー241、251、及び161との間に通信チャンネルを確立して、任意スケジューラ231がジョブを当該通信チャンネルを介して技術計算ワーカー251、261、及び271に提出できるようにする。さらに、この任意スケジューラは、当該通信チャンネルを介してタスクの実行結果を受け取ることもできる。通常の技能を備えた当業者であれば、インターフェース242、252、及び262を技術計算ワーカー241、251、及び261内、或いはネットワーク・インターフェース160内に設けてもよいことは理解するはずである。
これらインターフェースは、上述の任意スケジューラのベンダーや当該スケジューラのインターフェースプロトコルからは独立して上述の通信チャンネルを確立する。これらインターフェースは、様々なベンダーが提供する任意スケジューラと通信チャンネルを確立でき、その際、当該任意スケジューラの「インターフェースプロトコル」すなわち「インターフェースフォーマット」からは独立してこれら通信チャンネルを確立できる。「インターフェースプロトコル」すなわち「インターフェースフォーマット」は、この任意スケジューラとの間でデータを送受信するための一組の規則を指す。この規則の組は、任意スケジューラとの間でデータを転送及び受信するためのデータフォーマットを定義でき、さらに、該当する場合はデータ伝送に用いるエラー検査の種類と、該当する場合はデータ圧縮方法と、データ送信が終了したことを送信機構が示す方式と、任意スケジューラがデータを受信したことを示す方式とを少なくとも定義できる。
図4は、例示的な実施形態における代表的なインターフェース222を示すブロック図である。通常の技能を備えた当業者であれば、図4は、クライアント220上の技術計算クライアント221の代表的なインターフェース222を示し、又、ワーカー240、250、及び260上の技術計算ワーカー241、251、及び161のインターフェース242、252、及び262を類似の様態で実装できることは理解するはずである。インターフェース222は、インターフェースエンジン310、スケジューラオブジェクト320、及びアダプタ330を含むことができる。後述するように、インターフェースエンジン310、スケジューラオブジェクト320、及びアダプタ330は別個のエンティティとして説明しているが、通常の技能を備えた当業者であればこれらの2つ以上を単一のエンティティとして実装してもよいことは理解するはずである。
インターフェースエンジン310は、技術計算クライアント221と任意スケジューラ231との間のデータ伝送を管理する役割を担う。さらに、インターフェースエンジン310は、技術計算クライアント221又は任意スケジューラ231が理解可能な形式にデータをフォーマットする役割も担う。インターフェースエンジン310はスケジューラオブジェクト320とインターフェースを取り、任意スケジューラ231と技術計算クライアント221との間でどのようにデータを伝送するかを定義する通信プロトコルを決定する。インターフェースエンジン310が任意スケジューラ231に通信できるよう、インターフェースエンジン310はアダプタ330と通信する。インターフェース222は、異なる任意スケジューラ260とインターフェースを取るため複数のアダプタ330を含むことができる。従って、スケジューラ231それぞれに1つのアダプタ330を備えることもできる。例示的な実施形態のアダプタは、異なる任意スケジューラ260の何れとでもインターフェースできるよう拡張可能である。このアダプタは任意スケジューラ260を包括する基本プロパティを備えていてもよい。これら基本プロパティは、ベンダーがいずれかにかかわらず全てのサポートされたスケジューラに当てはまる。又、このアダプタは、様々な任意スケジューラ260それぞれに固有な付加的プロパティを備えていてもよい。スケジューラ固有のプロパティは特定ベンダーのスケジューラにのみ当てはまる。スケジューラ固有のプロパティを加えることにより、アダプタをその特定スケジューラとインターフェースを取るよう拡張できる。アダプタ330は、任意スケジューラ231に固有な情報の抽象化を行う手助けとなる。抽象化したデータは、インターフェース222によりスケジューラオブジェクト320などの1つ又は複数のオブジェクトを作成するために使用される。これについては図5を参照して後に詳述する。
インターフェース222は、インターフェースエンジン310及びアダプタ330を使って技術計算クライアント221と任意スケジューラ231との間に通信チャンネルを設ける。従って、この通信チャンネルはインターフェースの種類及びプロトコル並びにこの任意スケジューラのベンダーから独立した様態で動作するので、技術計算クライアント221は一組の機能、方法、及び制御手段を用いて任意スケジューラ231とインターフェースを取り且つ連係できる。
図5は、クライアント220がジョブを作成し、そのジョブをスケジューラ231に提出する代表的な動作を示すフローチャートである。クライアント220はネットワーク210上で1つ又は複数のスケジューラを発見し、そのスケジューラを自分のインターフェース222に登録する(ステップ510)。MATLAB(登録商標)分散計算環境では、ユーザは「findresource」コマンドを使って利用可能なスケジューラを識別でき、さらにクライアント220のMATLABセッションでこのスケジューラを表すオブジェクトを作成できる。ユーザはそれぞれのスケジューラのプロパティを調べて、どのスケジューラを使用したいかを決める。ユーザはスケジューラを特定すると、それを分離し且つクライアント220上に単一のオブジェクトを作成できる。
図6は、スケジューラオブジェクトを作成し且つそのスケジューラオブジェクトを用いて当該スケジューラとの通信チャンネルを確立するための代表的な動作を示す。通常の技能を備えた当業者であれば、インターフェース222について説明したこの代表的な動作は、ワーカー240、250、及び260上の技術計算ワーカー241、251、及び261のインターフェース242、252、及び262の動作にも当てはまることは理解するはずである。
インターフェース222は、技術計算クライアント221と任意スケジューラ231との間の通信チャンネル確立の要求を受け取ることができる(ステップ610)。インターフェースエンジン310は、任意スケジューラ231に適した利用可能なアダプタ330を見つけるためディレクトリ又はファイル若しくはルックアップテーブルなどの他の適切なデータ構造を検索する。利用可能なアダプタのこの検索は通信チャンネル要求を受け取ったときに一度実行でき、この結果は記憶装置又は適切な記憶媒体に記憶できる。しかしながら、インターフェース222を適合して、新たなアダプタがプラグインされた場合には、こうした要求を受け取るたびに利用可能なアダプタへの新たな検索を実行させることもできる。本発明の例示的な実施形態の説明では、利用可能なアダプタの情報は初期検索後に記憶されるものとする。インターフェースエンジン310は全ての利用可能なアダプタを初期化するか、任意スケジューラ231との使用に適した1つ又は複数の選択したアダプタを初期化できる。初期化した各アダプタ330は、ブール戻り値など何らかの形式の指標をインターフェースエンジン310に与えて初期化の完了又は失敗を表示する。初期化したアダプタからの全ての値を受け取ると、インターフェースエンジン310は初期化に成功した利用可能なアダプタのリストを技術計算クライアント221に返す。
もしアダプタ330が任意スケジューラ231に利用可能であれば(ステップ630)、アダプタ330が任意スケジューラ231に関わる情報を既に抽象化しているかどうかと、その抽象化情報を含むファイル、クラス定義、又はオブジェクトが存在するかなどそうした情報が利用可能かどうかとを判断する(ステップ640)。この情報が利用できない場合、インターフェースエンジン310は、アダプタ330を介して利用可能な全てのスケジューラを探すためアダプタ330を呼び出すか問い合わせる。アダプタ330は、アダプタ330を介して利用可能なスケジューラのリストを返す。通常の技能を備えた当業者であれば、アダプタ330及びスケジューラ231は、当該任意スケジューラ231と通信するには必ず選択したアダプタを用いなければならない一対一の関係を確立できることは理解するはずである。しかしながら、通常の技能を備えた当業者であれば、各スケジューラ231が類似の通信方法を使用する限り、アダプタは複数のスケジューラと通信できることも理解するはずである。利用可能なアダプタ330が存在しないと判断されると(ステップ630)、インターフェース222は通信チャンネルを確立するプロセスを終了する。
アダプタ330は任意スケジューラ231のプロパティ、機能、及び情報に関する問い合わせを受ける。すると、アダプタ330は要求された情報を抽象化し、任意スケジューラ231の機能及びプロパティ情報をインターフェースエンジン310に返す。又、アダプタ330は適切なフィールドに適切な値を備えたテンプレートを返すか、任意スケジューラ231の適切なソース及びプロパティ情報を含む1つ又は複数のオブジェクトを返すこともできる。さらに、アダプタ330は、任意スケジューラ231に固有なデータを用いてファイル又はオブジェクトを更新できる。
任意スケジューラ231に関わるアダプタ330によるスケジューラ情報の抽象化を容易にするため、インターフェース222はスケジューラオブジェクト320の作成を補助する読取り機構を提供できる。本発明の一実施形態では、この読取り機構は任意スケジューラ231のプロパティ情報を含むファイルである。こうしたプロパティ情報は、任意スケジューラ231に関わるプロパティ名と、プロパティタイプと、プロパティ制約条件と、ヘルプ情報と、アダプタ330又はインターフェースエンジン310が読み、スケジューラオブジェクト320を作成できる他の類似情報とを含むがそれらに限定されない。通常の技能を備えた当業者であれば、この読取り機構は任意スケジューラ231のプロパティ情報に限定されるものでなく、機能及び他の情報を含みうることは理解するはずである。本発明の一実施形態では、この読取り機構はマーク付け言語ファイルとして構造化されている。
アダプタ330が1つ又は複数のオブジェクトを返すと、インターフェースエンジン310は、任意スケジューラ231の属性及びメソッドを含むオブジェクトをインスタンス生成するようアダプタ330に要求する。アダプタ330はこうしたオブジェクトをインスタンス生成し、ハンドルをアダプタ330に返されるこのオブジェクトに作成する。このハンドルは、技術計算クライアント221及びインターフェースエンジン310が任意スケジューラ231との通信で利用するためスケジューラオブジェクト320に含められる。例えば、インターフェースエンジン310はアダプタ330からハンドルを受け取ると、スケジューラオブジェクト320を作成する生成関数を呼び出すことができる。この生成関数は与えられたハンドルを用いて、選択した生成関数の引数に対応するスケジューラオブジェクト320の比率を設定できる。
スケジューラオブジェクト320は、技術計算クライアント221と任意スケジューラ231との間の通信チャンネルの高レベル表現である。アダプタ330が与えるスケジューラ抽象は、1つ又は複数のスケジューラ260のプロパティを与える。さらに、スケジューラオブジェクト320は、1つ又は複数スケジューラ260の構成設定へのアクセスを与える。アダプタ330が与えるスケジューラ抽象は、1つ又は複数スケジューラ260のメソッドの収集体を与えることもできる。
これらプロパティ及びメソッドのリストを下記に示す。

スケジューラオブジェクトのプロパティ
Figure 2008530707

スケジューラオブジェクトの機能
Figure 2008530707
スケジューラオブジェクト320は、関連付けられたアダプタ330に与えられた名前などの入力、一意なスケジューラ識別子、及びその他の類似した入力を含むことができる。アダプタ名入力は、任意スケジューラ231とインターフェースエンジン310との間の通信を管理するアダプタ330を記述するために用いる語句である。この一意なスケジューラ識別子は、与えられていなければ、インターフェースエンジン310により識別された利用可能な識別子に設定される。スケジューラオブジェクト320は、スケジューラオブジェクト320の入力により一意に識別される任意スケジューラ231に関連付けられる。
通常の技能を備えた当業者であれば、MATLAB(登録商標)環境では、MATLAB(登録商標)Mファイルの実行に当たって、Mファイルが呼び出された時に存在した構成でスケジューラオブジェクト320が再生成されるようにMファイルを構成できることは理解するはずである。このようにユーザは、全ての設定を手動で再構成することなく後の使用のために構成設定の状態を収集できる。さらに、構成設定を再生成するファイル又は他の実行可能手段を実行することにより、ユーザは、自分の必要性に適した予め構成されたオブジェクトを再生成する関数を容易に生成できる。すると生成した関数をアプリケーションに統合できる。しかしながら、通常の技能を備えた当業者であれば、他の実行可能ファイルを他のソフトウェア環境で生成して、その実行可能ファイルが呼び出された時に構成設定を用いてスケジューラオブジェクトを再生成できることは理解するはずである。
インターフェース222は、技術計算クライアント221と任意スケジューラ231との間の通信チャンネルを確立する(ステップ670)。すなわち、技術計算クライアント221はインターフェースエンジン310を呼び出す。するとインターフェースエンジン310がアダプタ330を呼び出す。アダプタ330は任意スケジューラ231と通信し、技術計算クライアント221と任意スケジューラ231との間に接続すなわち通信チャンネルを確立する。通常の技能を備えた当業者であれば、任意スケジューラ231及び任意スケジューラ231の能力次第では、インターフェース222は技術計算クライアント221と任意スケジューラ231との間、又は技術計算クライアント221と多数の任意スケジューラとの間に多数のスレッド或いは多数の通信チャンネルを実現できることは理解するはずである。
図5を再び参照すると、ユーザはジョブをクライアント220にローカルに作成する。技術計算クライアント221のアプリケーションプログラミング・インタフェース(API)及び/又はプログラミング言語を使って、リモート技術ワーカー241、251、及び261により実行すべき技術計算タスクを表すジョブを定義できる。このプログラミング言語は、技術計算環境に分散されるジョブを定義する機構を含むことができる。例えば、ユーザは、クライアント221におけるMATLAB(登録商標)セッションにおいて次のステートメントでジョブを作成できる。このコマンドがクライアントセッションで実行されれば、ジョブオブジェクトがクライアント220でジョブクラスからインスタンス生成される。
scheduler = findresource('LSF')
j = scheduler.createjob
ユーザは、MATLAB(登録商標)の次のステートメントでジョブオブジェクトのプロパティを見ることができる。
j.get

UserName: 'jlmartin'
Tag: ''

State: 'pending'
CreateTime: 'Tue Nov 23 14:37:51 GMT 2004'
SubmitTime: ''

StartTime: ''

FinishTime: ''

Tasks: [0x1 double]

JobData:
[]
SerializedProductList: []
こうして作成されたジョブはスケジューラへのコールバック又はリンクを備えておらず、すなわち、このジョブはネットワーク210においてスケジューラ231からは独立して作成される。. このジョブの状態(原語:State)プロパティは「保留中(原語:pending)」である。これは、このジョブはスケジューラ231で実行するための待ち行列に入れられていないので、ユーザはこのジョブにタスクを追加できることを表す。ユーザがこのジョブを作成した後で保留状態にある間、ユーザはこのジョブのタスクを作成できる(ステップ530)。タスクはジョブの実行時にワーカーにより評価される関数を定義する。例示的な実施形態では、タスクはMATLAB(登録商標)コマンドのような実行すべき技術計算コマンドと、引数の数と、引数への任意の入力データとを定義する。代表的なタスクを次に示した。
t = j.createTask(@rand, 1, {1})
このタスクは乱数を生成する。ユーザは、MATLAB(登録商標)の次のステートメントでタスクオブジェクトのプロパティを見ることができる。
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]
図5を再び参照すると、ジョブとタスクをクライアント220に作成した後、ユーザはこのジョブをポータブルフォーマットでスケジューラ231に提出し、リモートワーカー240、250、及び260でこのジョブを実行させ、そのタスクを評価させる(ステップ540)。
図7は、クライアント220がジョブをスケジューラ230に提出する代表的な動作を示すフローチャートである。先ず、クライアント220のライセンス情報がジョブに含められる(ステップ710)。本発明の例示的な実施形態は、クライアント220においてソフトウェアコンポーネント又は製品の動的ライセンス方式を採用できる。これは、引用して本明細書に援用する「分散形システムにおける動的ライセンス(原語:DYNAMIC
LICENSING IN A DISTRIBUTED SYSTEM)」と題した同時係属中の米国特許出願(米国特許出願第10/896,671号)に記載されている。計算クライアント221で生成されるジョブは、異なるソフトウェアコンポーネント又は製品での1つ又は複数の関数呼び出しを含むことができる。ジョブはその中に含まれるタスクの評価のためリモートワーカーに分散できる。ジョブが複数ワーカー270に分散されると、計算クライアント221がライセンスを受けているソフトウェアコンポーネント又は製品に関する情報もそのジョブ内で分散される。
米国特許出願第10/896,671号公報
図8は、本発明の例示的な実施形態における、スケジューラ231に提出される代表的なジョブオブジェクトである。ジョブ800は複数のタスク810、820、及び830を含む。ジョブ800はクライアント220のライセンス情報840も含んでいる。リモートワーカーは、クライアント220のソフトウェアコンポーネント又は製品に関するライセンス情報840と共にジョブ800を受け取り、その情報に基づいてこれらソフトウェアコンポーネント又は製品のライセンスを動的に与える。ワーカーは、これらソフトウェアコンポーネント又は製品に関わる動的に与えられたライセンスを用いてタスクを実行する。技術計算ワーカーによるライセンス情報の利用は図9を参照して後に詳述する。
図7を再び参照すると、次にジョブオブジェクトは、スケジューラ231のプラットフォーム構造から独立したポータブルフォーマットに符号化される(ステップ720)。ポータブルフォーマットとは、様々なシステムに移動可能なプログラム又はデータベースのフォーマットを指す。例示的な実施形態では、ジョブオブジェクトは、MATLAB(登録商標)の「保存(原語:save)」機能を用いてMATファイルに直列化又は符号化される。「保存」機能はジョブオブジェクトを連続的なバイトストリームに符号化する。これには、ジョブオブジェクトをアーキテクチャから独立したファイル保存に適した形式に符号化し、別のアプリケーションへパイピングし、又は、敷衍して述べるとネットワークを介して伝送することが含まれる。こうしたストリームは一時的(RAMベース)でも永続的(ディスクベース)でもよい。一時的なストリームを用いてスケジューラへ伝送するジョブオブジェクトを作成できる。ディスク上のファイルのような永続的ストリームでは、現在のセッション終了後もジョブオブジェクトを記憶できる。何れの場合も、ストリーム内の情報を後に利用して、元々のものと同じジョブオブジェクトを含むデータ構造を構築できる。ワーカーがバイトストリームを受け取ると、符号化処理の反対の手順を実行して元々のジョブオブジェクトの複写を得る。これについては図9を参照して後に詳述する。
MATファイルはデータをバイナリ形式で保存し、多次元数値配列、文字配列、セル配列、構造、及びオブジェクトを含むMATLAB(登録商標)配列タイプをサポートする。MATファイルは、ヘッダ及び1つ又は複数のデータ要素を含む。各データ要素はタグとデータとを含む。タグはデータ要素内のバイト数と、データ要素内のデータの型とを指定する。タグを用いることで、MATファイルフォーマットはMATファイル内の個別データ要素へのアクセスを迅速化する。通常の技能を備えた当業者であれば、MATファイルフォーマットは例示的な形式であって、他のポータブルフォーマットを他の実施形態で使用できることは理解するはずである。
図7を再び参照すると、ポータブルフォーマットで符号化されたジョブオブジェクトは、クライアント220とスケジューラ231との間の通信チャンネルを介してスケジューラ231に提出される(ステップ730)。さらに、ジョブのプロパティなどのジョブに関する情報もスケジューラ231に送って、スケジューラ231が、この情報を用いてジョブをポータブルフォーマットでリモートワーカーに分散できるようにする。図5を参照して述べたように、ジョブのプロパティは、ユーザ名(原語:UserName)、タグ(原語:Tag)、状態(原語:State)、作成日時(原語:CreateTime)、提出日時(原語:SubmitTime)、開始日時(原語:StartTime)、終了日時(原語:FinishTime)、タスク(原語:Tasks)、ジョブデータ(原語:JobData)、直列化製品リスト(原語:SerializedProductList)、等を含む。
通常の技能を備えた当業者であれば、ジョブ800を1つ又は複数タスクを含む複数のポータブルフォーマット・ファイルに分解でき、これらのポータブルフォーマット・ファイルをスケジューラに提出できるので、スケジューラがタスクをリモートワーカーに分散できることは理解するはずである。この場合、これら複数のポータブルフォーマット・ファイルのそれぞれはライセンス情報840を含むことができる。
スケジューラ231は複数ベンダーの何れかにより提供された任意スケジューラである。任意スケジューラ231は、タスクを技術計算クライアント221から技術計算ワーカー241、251、及び261へ自動分散するための自動タスク分散機構を含むか、この機構に関連付けることができる。自動タスク分散機構により、技術計算クライアント221はタスク分散を当該自動タスク分散機構に委ねることができる。例えば、どの技術計算ワーカーがタスクの技術計算を実行するかを指定することなく、タスクを定義でき且つ任意スケジューラ231に提出できる。技術計算クライアント221はこの技術計算ワーカーの詳細を知る必要はない。技術計算クライアントはタスクを任意スケジューラ231に提出するための関数を定義でき、任意スケジューラ231からタスクの結果を得ることができる。従って、任意スケジューラ231は、技術計算クライアント221と技術計算ワーカーとの間に一定の間接性を実現する。
これにより分散プログラミング及び統合に関わる技術計算クライアント221への負担が軽減される。技術計算クライアント221は、技術計算ワーカー241、251、及び261の可用性を予め知っておく必要がない。技術計算クライアント221からの多数のタスク提出については、任意スケジューラ231は、同一技術計算ワーカー241又は他の技術計算ワーカーへのタスクの委任を管理且つ処理でき、又これらタスクの結果を、全分散タスクの技術計算終了後の取り出しに備えて技術計算クライアント221に代わって保持できる。
図9は、ワーカー240がジョブを受け取り、そのジョブ内のタスクを実行する代表的な動作を示すフローチャートである。図6を参照して述べたように、ワーカー240はスケジューラ231との間に通信チャンネルを確立する(ステップ910)。スケジューラ231との通信チャンネルを確立すると、ワーカー240はスケジューラ231からポータブルフォーマットのジョブを受け取る(ステップ920)。そのジョブと共に、ワーカー240は、ワーカー240上で実行すべきジョブ内の1つ又は複数のタスクの指示に関する情報も受け取ることができる。ワーカー240はジョブを復号し、ポータブルフォーマットから元々のジョブオブジェクトを復元する(ステップ930)。例えば、ジョブが直列化されていれば、ワーカー240は受け取ったジョブを非直列化する。ジョブがMATファイルフォーマットで受け取られた場合は、元々のジョブをMATLAB(登録商標)に含まれる「ロード(原語:load)」コマンドを使って復元できる。ワーカー240はジョブに含まれるライセンス情報を抽出する。必要はソフトウェアコンポーネント又は製品がライセンスを受けていれば、ワーカーはジョブ内の指定タスクを実行し(ステップ950)、このタスクの実行結果をスケジューラ231に返す(ステップ960)。するとスケジューラ231はこのジョブの実行結果をクライアント220に返す(図5のステップ550)。通常の技能を備えた当業者であれば、ワーカー240の代表的な動作はワーカー250及び260を含む他のワーカーにも当てはまることは理解するはずである。
通常の技能を備えた当業者であれば、上述の分散計算システムは例示目的であって、本発明の範囲を限定するものでないことは理解するはずである。反対に、本発明の別の実施形態では、直列及び並列技術計算システムなどの異なる計算システムを実装してもよい。こうしたシステムは、本明細書に引用して援用する「技術計算タスクを技術計算ワーカーに分散する方法及びシステム(原語:METHODS
AND SYSTEM FOR DISTRIBUTING TECHNICAL COMPUTING TASKS TO TECHNICAL COMPUTING
WORKERS)」と題した係属中の米国特許出願第10/896784号に詳述されている。
米国特許出願第10/896,784号公報
通常の技能を備えた当業者であれば本発明の精神及び範囲から逸脱することなく多くの変更及び修正が可能である。したがって、例示的な実施形態は例示目的のみで示したものであり、次の特許請求の範囲で定義される本発明を限定する意味で解釈すべきでないことは明確に理解すべきである。これら特許請求の範囲は、文字通り記載されたものを含むと共に、上述の例に図示し且つ説明したものと他の側面で同一ではなくても、差異が僅かな同等の要素とを含むものとして読むべきである。
本発明の上述及び他の目的、側面、特徴、並びに利点は、添付の図面と共に次の説明を参照すればより良く理解できるはずである。
本発明の例示的な実施形態を実施するための代表的な計算装置を示すブロック図である。 本発明の例示的な実施形態を実施するための代表的なネットワーク環境を示すブロック図である。 本発明の例示的な実施形態を実施するための代表的な分散計算システムを示すブロック図である。 任意スケジューラとの分散計算システムの代表的なインターフェースを示すブロック図である。 図3に示した分散計算システムにおけるクライアントの代表的な動作を示すフローチャートである。 任意スケジューラと通信チャンネルを確立するための代表的な動作を示すフローチャートである。 クライアントがジョブを任意スケジューラに提出する代表的な動作を示すフローチャートである。 ライセンス情報を含む代表的なジョブを示す。 図3に示した分散計算システムにおけるワーカーの代表的な動作を示すフローチャートである。

Claims (45)

  1. クライアント装置において、ジョブを作成し且つスケジューラに提出する方法であって、
    技術計算環境において1つ又は複数の技術計算タスクを含むジョブを作成する段階と、
    異なるタイプの複数スケジューラと互換性があるポータブルフォーマットで前記ジョブを保存する段階と、
    スケジューラと通信チャンネルを確立する段階と、
    前記ポータブルフォーマットの前記ジョブを前記スケジューラに、前記スケジューラとの前記通信チャンネルを介して提出する段階とを含む、方法。
  2. 前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項1に記載の方法。
  3. クライアントのライセンス情報をジョブに含める段階をさらに含む、請求項1に記載の方法。
  4. 前記クライアントのライセンス情報が、該クライアントがライセンスを受けているソフトウェアコンポーネント又は製品に関する情報を含む、請求項3に記載の方法。
  5. 前記保存する段階が、前記ジョブをバイナリフォーマットで保存する段階を含む、請求項1に記載の方法。
  6. 前記保存する段階が前記ジョブを、該ジョブがデータの直列化ストリームで記憶される記憶媒体において該ジョブを直列化する段階を含む、請求項1に記載の方法。
  7. 前記提出する段階が、前記ジョブに関する情報を前記スケジューラに前記通信チャンネルを介して提出する段階を含む、請求項1に記載の方法。
  8. 前記ジョブに関する前記情報が、前記スケジューラによるポータブルフォーマットの前記ジョブの1つ又は複数ワーカーへの分散を可能とし、該1つ又は複数ワーカーが前記ジョブ内の前記1つ又は複数の技術計算タスクを実行可能となる、請求項7に記載の方法。
  9. 前記スケジューラから前記通信チャンネルを介して前記ジョブの結果を受け取る段階をさらに含む、請求項1に記載の方法。
  10. ワーカー装置において、ジョブを受け取り且つ実行する方法であって、
    スケジューラと通信チャンネルを確立する段階と、
    前記スケジューラから前記通信チャンネルを介してジョブをポータブルフォーマットで受け取る段階であって、該ポータブルフォーマットが異なるタイプの複数のスケジューラと互換性がある、受け取る段階と、
    前記ジョブ内の1つ又は複数の技術計算タスクに関する情報を受け取る段階と、
    技術計算環境において、前記スケジューラから受け取った前記1つ又は複数の技術計算タスクに関する前記情報に基づいて前記ジョブ内の前記1つ又は複数の技術計算タスクを実行する段階とを含む、方法。
  11. 前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項10に記載の方法。
  12. 前記ジョブがクライアントのライセンス情報を含み、前記1つ又は複数の技術計算タスクが、前記ジョブ内の前記クライアントのライセンス情報に従って実行される、請求項10に記載の方法。
  13. 前記ポータブルフォーマットがバイナリフォーマットを含む、請求項10に記載の方法。
  14. 前記実行する段階が、記憶媒体から前記ジョブを非直列化する段階を含む、請求項10に記載の方法。
  15. 前記1つ又は複数の技術計算タスクを実行した結果を、前記スケジューラに前記通信チャンネルを介して返す段階をさらに含む、請求項10に記載の方法。
  16. 技術計算環境において1つ又は複数の技術計算タスクを含むジョブを作成するクライアントと、
    異なるタイプの複数スケジューラと互換性があるポータブルフォーマットで前記ジョブを保存する記憶媒体と、
    前記クライアントとスケジューラとの間に第1通信チャンネルを確立するためのインターフェースとを含み、前記クライアントが、ポータブルフォーマットのジョブを当該スケジューラへ当該第1通信チャンネルを介して提出する、システム。
  17. 前記第1インターフェースが前記スケジューラに関する情報を抽象化するアダプタを含む、請求項16に記載のシステム。
  18. 前記アダプタは、複数の任意スケジューラを包括する第1グループのプロパティを与える、請求項17に記載のシステム。
  19. 前記アダプタは、前記スケジューラに固有の第2グループのプロパティを与えることによって前記スケジューラとインターフェースを取るよう拡張される、請求項18に記載のシステム。
  20. 前記スケジューラからポータブルフォーマットで前記ジョブを受け取る1つ又は複数のワーカーと、
    ワーカーと前記スケジューラとの間に第2通信チャンネルを確立するための第2インターフェースとをさらに含み、前記ワーカーが、前記ジョブを前記スケジューラから当該第2通信チャンネルを介して受け取る、請求項16に記載のシステム。
  21. 前記第2インターフェースが前記スケジューラに関する情報を抽象化するアダプタを含む、請求項20に記載のシステム。
  22. 前記アダプタは、複数の任意スケジューラを包括する第1グループのプロパティを与える、請求項21に記載のシステム。
  23. 前記アダプタは、前記スケジューラに固有の第2グループのプロパティを与えることによって前記スケジューラとインターフェースを取るよう拡張される、請求項22に記載のシステム。
  24. 前記クライアントが、前記ジョブに関する前記情報を前記スケジューラに前記第1通信チャンネルを介して提出して、前記スケジューラが、ポータブルフォーマットの前記ジョブを1つ又は複数ワーカーに前記情報に基づいて分散可能とする、請求項20に記載のシステム。
  25. 前記ワーカーが、前記ジョブ内の1つ又は複数の技術計算タスクに関する情報を受け取ると共に、前記スケジューラから受け取った前記1つ又は複数の技術計算タスクに関する前記情報に基づいて、前記ジョブ内の前記1つ又複数の技術計算タスクを実行する、請求項20に記載のシステム。
  26. 前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項16に記載のシステム。
  27. ポータブルフォーマットがバイナリフォーマットを含む、請求項16に記載のシステム。
  28. 前記ジョブがクライアントのライセンス情報を含み、前記1つ又は複数の技術計算タスクが、前記ジョブ内の前記クライアントのライセンス情報に従って実行される、請求項16に記載のシステム。
  29. 前記ワーカーが、前記1つ又は複数の技術計算タスクを実行した結果を、前記スケジューラに前記第2通信チャンネルを介して返す、請求項16に記載のシステム。
  30. 前記スケジューラが、前記ジョブの結果を前記クライアントに前記第1通信チャンネルを介して返す、請求項16に記載のシステム。
  31. 前記クライアントと、前記スケジューラと、前記1つ又複数のワーカーとを接続する通信ネットワークをさらに含む、請求項20に記載のシステム。
  32. 電子装置で実行可能な命令を保持したコンピュータプログラム製品であって、
    技術計算環境において1つ又は複数の技術計算タスクを含むジョブを作成する段階と、
    異なるタイプの複数スケジューラと互換性があるポータブルフォーマットで前記ジョブを保存する段階と、
    スケジューラと通信チャンネルを確立する段階と、
    前記ポータブルフォーマットの前記ジョブを前記スケジューラに、前記スケジューラとの前記通信チャンネルを介して提出する段階とを含む、コンピュータプログラム製品。
  33. 前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項32に記載のコンピュータプログラム製品。
  34. ジョブがクライアントのライセンス情報を含む、請求項32に記載のコンピュータプログラム。
  35. 前記ジョブがバイナリフォーマットで保存される、請求項32に記載のコンピュータプログラム。
  36. 前記ジョブが記憶媒体で直列化される、請求項32に記載のコンピュータプログラム。
  37. 前記ジョブに関する情報を前記スケジューラに前記通信チャンネルを介して提出する段階をさらに含む、請求項32に記載のコンピュータプログラム製品。
  38. 前記ジョブに関する前記情報が、前記スケジューラによるポータブルフォーマットの前記ジョブの1つ又は複数ワーカーへの分散を可能とし、該1つ又は複数ワーカーが前記ジョブ内の前記1つ又は複数の技術計算タスクを実行可能となる、請求項37に記載のコンピュータプログラム製品。
  39. 前記ジョブの結果を前記スケジューラから前記通信チャンネルを介して受け取る段階をさらに含む、請求項32に記載のコンピュータプログラム製品。
  40. 電子装置における、ジョブを受け取り且つ実行するコンピュータプログラム製品であって、
    スケジューラと通信チャンネルを確立する段階と、
    前記スケジューラから前記通信チャンネルを介してジョブをポータブルフォーマットで受け取る段階であって、該ポータブルフォーマットが異なるタイプの複数のスケジューラと互換性がある、受け取る段階と、
    前記ジョブ内の1つ又は複数の技術計算タスクに関する情報を受け取る段階と、
    技術計算環境において、前記スケジューラから受け取った前記1つ又は複数の技術計算タスクに関する前記情報に基づいて前記ジョブ内の前記1つ又は複数の技術計算タスクを実行する段階とを含む、コンピュータプログラム製品。
  41. 前記ポータブルフォーマットは前記スケジューラのプラットフォーム構造から独立している、請求項40に記載のコンピュータプログラム製品。
  42. 前記ジョブがクライアントのライセンス情報を含み、前記1つ又は複数の技術計算タスクが、前記ジョブ内の前記クライアントのライセンス情報に従って実行される、請求項40に記載のコンピュータプログラム製品。
  43. 前記ポータブルフォーマットがバイナリフォーマットを含む、請求項40に記載のコンピュータプログラム製品。
  44. 前記実行する段階が、記憶媒体から前記ジョブを非直列化する段階を含む、請求項40に記載のコンピュータプログラム製品。
  45. 前記1つ又は複数の技術計算タスクを実行した結果を前記スケジューラに前記通信チャンネルを介して返す段階をさらに含む、請求項40に記載のコンピュータプログラム製品。
JP2007556166A 2005-02-17 2006-02-06 分散計算環境におけるポータブルフォーマットのジョブの分散 Pending JP2008530707A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/060,971 US8612980B2 (en) 2003-12-04 2005-02-17 Distribution of job in a portable format in distributed computing environments
PCT/US2006/003923 WO2006088669A1 (en) 2005-02-17 2006-02-06 Distribution of job in a portable format in distributed computing environments

Publications (1)

Publication Number Publication Date
JP2008530707A true JP2008530707A (ja) 2008-08-07

Family

ID=36406077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007556166A Pending JP2008530707A (ja) 2005-02-17 2006-02-06 分散計算環境におけるポータブルフォーマットのジョブの分散

Country Status (4)

Country Link
US (2) US8612980B2 (ja)
EP (1) EP1854004B1 (ja)
JP (1) JP2008530707A (ja)
WO (1) WO2006088669A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726278B1 (en) 2004-07-21 2014-05-13 The Mathworks, Inc. Methods and system for registering callbacks and distributing tasks to technical computing works
US20060075408A1 (en) * 2004-10-06 2006-04-06 Digipede Technologies, Llc Distributed object execution system
US8539496B1 (en) * 2005-12-12 2013-09-17 At&T Intellectual Property Ii, L.P. Method and apparatus for configuring network systems implementing diverse platforms to perform business tasks
US20070180451A1 (en) * 2005-12-30 2007-08-02 Ryan Michael J System and method for meta-scheduling
US8082289B2 (en) 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
US8255890B2 (en) 2007-02-14 2012-08-28 The Mathworks, Inc. Media for performing parallel processing of distributed arrays
US8239846B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Device for performing parallel processing of distributed arrays
US8255889B2 (en) 2007-02-14 2012-08-28 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8239844B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Method of using parallel processing constructs and dynamically allocating program portions
US8239845B2 (en) 2007-02-14 2012-08-07 The Mathworks, Inc. Media for using parallel processing constructs
US8010954B2 (en) * 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
US8250550B2 (en) 2007-02-14 2012-08-21 The Mathworks, Inc. Parallel processing of distributed arrays and optimum data distribution
US20080301685A1 (en) * 2007-05-31 2008-12-04 Novell, Inc. Identity-aware scheduler service
JP5049683B2 (ja) * 2007-07-18 2012-10-17 キヤノン株式会社 デバイス管理装置及びジョブフロー処理方法とタスク連携処理システム
US8769491B1 (en) * 2007-11-08 2014-07-01 The Mathworks, Inc. Annotations for dynamic dispatch of threads from scripting language code
US7515899B1 (en) * 2008-04-23 2009-04-07 International Business Machines Corporation Distributed grid computing method utilizing processing cycles of mobile phones
US8904003B2 (en) * 2008-06-30 2014-12-02 Oracle America, Inc. Method and system for delegated job control across a network
US20100175076A1 (en) * 2009-01-06 2010-07-08 International Business Machines Corporation Method for executing a software routine identified in a task object
JP5393304B2 (ja) * 2009-07-09 2014-01-22 富士通株式会社 分散処理システム、情報処理装置、及び分散処理方法
EP2378412A1 (en) * 2010-04-19 2011-10-19 Robert Mathew Barrie Computing system and method for distributed and engaging software services
US9141422B2 (en) * 2010-05-18 2015-09-22 Microsoft Technology Licensing, Llc Plug-in task scheduler
US8296765B2 (en) * 2010-07-27 2012-10-23 Kurdi Heba A Method of forming a personal mobile grid system and resource scheduling thereon
US9767098B2 (en) * 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
CN103092683B (zh) * 2011-11-07 2017-12-26 Sap欧洲公司 用于数据分析的基于启发式的调度
US10120579B1 (en) 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
US9652487B1 (en) 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US9430282B1 (en) * 2012-10-02 2016-08-30 Marvell International, Ltd. Scheduling multiple tasks in distributed computing system to avoid result writing conflicts
US10558581B1 (en) 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US11507487B2 (en) * 2016-09-28 2022-11-22 Vmware, Inc. Control of a computing system to perform network fabric benchmark measurements
WO2018084829A1 (en) 2016-11-01 2018-05-11 Google Llc Numerical quantum experimentation
US10592280B2 (en) * 2016-11-23 2020-03-17 Amazon Technologies, Inc. Resource allocation and scheduling for batch jobs
US10719350B2 (en) * 2017-10-10 2020-07-21 Sap Se Worker thread manager
KR102462866B1 (ko) * 2020-11-25 2022-11-07 주식회사 커먼컴퓨터 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021594A1 (en) * 2002-02-04 2005-01-27 James Bernardin Grid services framework

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930465A (en) * 1996-11-26 1999-07-27 Xerox Corporation Printing system with enhanced print service capability
US6173322B1 (en) * 1997-06-05 2001-01-09 Silicon Graphics, Inc. Network request distribution based on static rules and dynamic performance data
AU2002232835A1 (en) * 2000-12-22 2002-07-08 Warp Solutions, Inc. System and method for intelligently distributing content over a communications network
US20020186384A1 (en) * 2001-06-08 2002-12-12 Winston Edward G. Splitting a print job for improving print speed
EP1283466A1 (en) 2001-08-06 2003-02-12 Hewlett-Packard Company (a Delaware corporation) Management system for a cluster
EP1459202A2 (en) * 2001-10-31 2004-09-22 Thermo CRS Ltd. A backtracking resources planning algorithm
US7376693B2 (en) * 2002-02-08 2008-05-20 Jp Morgan Chase & Company System architecture for distributed computing and method of using the system
US7395536B2 (en) * 2002-11-14 2008-07-01 Sun Microsystems, Inc. System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
US20050034130A1 (en) * 2003-08-05 2005-02-10 International Business Machines Corporation Balancing workload of a grid computing environment
US20060048157A1 (en) * 2004-05-18 2006-03-02 International Business Machines Corporation Dynamic grid job distribution from any resource within a grid environment
US7844969B2 (en) * 2004-06-17 2010-11-30 Platform Computing Corporation Goal-oriented predictive scheduling in a grid environment
US7886296B2 (en) * 2004-07-22 2011-02-08 Computer Associates Think, Inc. System and method for providing alerts for heterogeneous jobs

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021594A1 (en) * 2002-02-04 2005-01-27 James Bernardin Grid services framework

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200500584006; 大角知孝 他: '階層的マスタワーカ方式を用いたグリッドアプリケーションにおける負荷分散の性能評価' 情報処理学会研究報告 Vol.2004 No.81 IPSJ SIG Technical Reports Vol.2004,No.81, 20040801, p.31-36, 社団法人情報処理学会 *
CSNG200501443006; 小西克巳 他: 'PCグリッド上でのMATLAB分散計算と評価' 情報処理学会研究報告 Vol.2005,No.84, 20050805, p.31-36, 社団法人情報処理学会 *
JPN6013007972; 小西克巳 他: 'PCグリッド上でのMATLAB分散計算と評価' 情報処理学会研究報告 Vol.2005,No.84, 20050805, p.31-36, 社団法人情報処理学会
JPN6013007973; 大角知孝 他: '階層的マスタワーカ方式を用いたグリッドアプリケーションにおける負荷分散の性能評価' 情報処理学会研究報告 Vol.2004 No.81 IPSJ SIG Technical Reports Vol.2004,No.81, 20040801, p.31-36, 社団法人情報処理学会

Also Published As

Publication number Publication date
EP1854004A1 (en) 2007-11-14
US20060107266A1 (en) 2006-05-18
US8745624B2 (en) 2014-06-03
WO2006088669A1 (en) 2006-08-24
EP1854004B1 (en) 2018-06-20
US20080028405A1 (en) 2008-01-31
US8612980B2 (en) 2013-12-17

Similar Documents

Publication Publication Date Title
JP2008530707A (ja) 分散計算環境におけるポータブルフォーマットのジョブの分散
US8230424B2 (en) General interface with arbitrary job managers
US8688765B2 (en) Methods and system for distributing data to technical computing workers
JP5442999B2 (ja) 計器に基づく分散計算方法
US9507634B1 (en) Methods and system for distributing technical computing tasks to technical computing workers
US7730166B2 (en) Dynamic definition for concurrent computing environments
US8863130B2 (en) Exception handling in a concurrent computing process
US7502745B1 (en) Interfaces to a job manager in distributed computing environments
Rani Middleware and Toolkits in Grid Computing
Gray et al. Metacomputing with the IceT system
Liu Grid-Enabled Visualization of Large Datasets
Capps et al. Using distributed processing on a local area network to increase available computing power
Pfaender et al. Multi-platform Integrated Development Aid System (MIDAS)
Nuova Making Infernal Grids Usable
Gray et al. International Journal of High Performance
JP2000048060A (ja) 計算機支援設計システム構成方法及びシステム及び計算機支援設計システム構成プログラムを格納した記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110712

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110720

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110811

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110818

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110912

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111012

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121126

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121218

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130726

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130731

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130823

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130828