JP2017016693A - アプリケーションプログラムのためのクラスタコンピューティングのサポート - Google Patents
アプリケーションプログラムのためのクラスタコンピューティングのサポート Download PDFInfo
- Publication number
- JP2017016693A JP2017016693A JP2016185469A JP2016185469A JP2017016693A JP 2017016693 A JP2017016693 A JP 2017016693A JP 2016185469 A JP2016185469 A JP 2016185469A JP 2016185469 A JP2016185469 A JP 2016185469A JP 2017016693 A JP2017016693 A JP 2017016693A
- Authority
- JP
- Japan
- Prior art keywords
- module
- cluster
- node
- cluster node
- modules
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/04—Network management architectures or arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Devices For Executing Special Programs (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
本出願は、2006年6月13日に出願された米国特許仮出願第60/813738号
、ならびに2006年10月11日に出願された米国特許仮出願第60/850908号
の優先権を主張するものである。上記参照された各出願は、その全体が、参照によって本
明細書に組み込まれ、本明細書の一部になっている。
ログラムにクラスタコンピューティング機能性を追加するシステムおよび方法に関する。
るかのようにタスクを達成することが可能である、2つ以上のコンピュータ、マイクロプ
ロセッサ、および/またはプロセッサコア(「ノード」)からなるグループを含む。現在
、多くのコンピュータアプリケーションプログラムは、たとえ、それらが、クラスタとし
て動作することが可能なノードのグループにおいて実行されているとしても、コンピュー
タクラスタが提供しうる利点の恩恵を受けるようには設計されていない。コンピュータプ
ログラムの中には、単一ノードでしか実行できないものがあるが、これは、たとえば、そ
れらがタスクを直列に実行するようにコーディングされているためであったり、単一ノー
ドのみを認識するように、あるいは単一ノードにのみ命令を送信するように設計されてい
るためであったりする。
てそのプログラムに与えられる命令を実行するインタプリタを含むものがある。そのよう
なインタプリタは、「カーネル」と呼ばれることがあり、それは、たとえば、インタプリ
タが、コンピュータシステムの少なくともいくつかのハードウェアリソースを管理するこ
とが可能であるため、かつ/または、それらのリソースとソフトウェア(たとえば、高級
プログラミング言語を含むことが可能な与えられた命令)との間の通信を管理することが
可能であるためである。ソフトウェアプログラムの中には、単一ノードと通信するように
設計されたカーネルを含むものがある。単一ノードと通信するように設計されたカーネル
を含むソフトウェアパッケージの一例として、Wolfram Research,In
c.製のMathematica(登録商標)(「Mathematica」)がある。
他のベンダ製の数学ソフトウェアパッケージや他の種類のソフトウェアも、そのようなカ
ーネルを含むことが可能である。
aticaとして知られる製品が、「分散コンピューティング」として知られる形式のグ
リッドコンピューティングを実行する機能を、Mathematicaに与える。グリッ
ドコンピュータは、一般にピアとして互いに通信することがない複数のノードを含む。分
散コンピューティングは、計算処理時にジョブ間でデータを共有する必要がない、多数の
独立ジョブ、作業パケットからなる作業負荷に対して最適化されることが可能である。グ
リッドコンピュータは、複数のスレーブノードまたは計算ノードを管理する、マスタノー
ドとして知られる、少なくとも1つのノードを含む。gridMathematicaで
は、複数のカーネルのそれぞれが、単一ノードで実行される。1つのカーネルが、他のカ
ーネル(計算カーネルまたはスレーブカーネル)のすべての入力、出力、およびスケジュ
ーリングを取り扱うマスタカーネルに指定される。計算カーネルは、マスタカーネルを実
行しているノードからのみコマンドおよびデータを受け取る。各計算カーネルは、各自の
作業を、他の計算カーネルとは独立に実行し、あるジョブの中間結果は、他のノードで進
行中の他のジョブに影響を及ぼさない。
ぞれの望ましい属性を単独で担うものではない。以下では、特許請求の範囲で表される本
発明の範囲を限定することなく、有利な特徴のいくつかについて簡単に説明する。
ンピューティング機能性を便利に追加する手法を提供する。一実施形態では、ソフトウェ
アパッケージのユーザが、そのソフトウェアがクラスタ内の複数のノードから恩恵を受け
ることを可能にすることにより、そのソフトウェアパッケージから、より高い性能、およ
び/または、より高い可用性を達成できるであろう。一実施形態は、スーパコンピュータ
レベルの性能を有するコンピュータクラスタで実行されることが可能なアプリケーション
を、ユーザが、Mathematicaのような高級言語を用いて作成することを可能に
する。一実施形態は、Mathematicaフロントエンド、コマンドラインインタフ
ェース、1つまたは複数の高級コマンド、またはCやFORTRANのようなプログラミ
ング言語を用いる、そのような高性能コンピューティングへのアクセスを提供する。
maticaカーネルなどのソフトウェアモジュールを、たとえそのソフトウェアモジュ
ールがサポートを提供するように設計されていない場合であっても、クラスタコンピュー
ティングをサポートするよう適応させる。一実施形態は、そのプログラムのソースコード
へのアクセスが可能でない場合でも、アプリケーションプログラムの並列化を提供する。
一実施形態は、メッセージパッシングインタフェース(「MPI」)呼び出しを、たとえ
ば、Mathematicaプログラミング環境などのユーザインタフェースの中から直
接追加およびサポートする。一実施形態では、MPI呼び出しは、Mathematic
aフロントエンドなどのインタラクティブプログラミング環境に追加され、そこから使用
できるようにされる。
コンピュータクラスタを提供する。クラスタは、第1のプロセッサ、第2のプロセッサ、
または第3のプロセッサのうちの少なくとも1つと通信している少なくとも1つのコンピ
ュータ可読媒体を含む。第1のカーネルが、少なくとも1つのコンピュータ可読媒体に常
駐し、コマンドを、第1のプロセッサで実行されるコードに変換するように構成される。
第1のクラスタノードモジュールが、少なくとも1つのコンピュータ可読媒体に常駐する
。第1のクラスタノードモジュールは、第1のカーネルへコマンドを送信し、ユーザイン
タフェースからコマンドを受信するように構成される。第2のカーネルが、少なくとも1
つのコンピュータ可読媒体に常駐する。第2のカーネルは、コマンドを、第2のプロセッ
サで実行されるコードに変換するように構成される。第2のクラスタノードモジュールが
、少なくとも1つのコンピュータ可読媒体に常駐する。第2のクラスタノードモジュール
は、第2のカーネルへコマンドを送信するように構成され、第1のクラスタノードモジュ
ールと通信する。第3のカーネルが、少なくとも1つのコンピュータ可読媒体に常駐する
。第3のカーネルは、コマンドを、第3のプロセッサで実行されるコードに変換するよう
に構成される。第3のクラスタノードモジュールが、少なくとも1つのコンピュータ可読
媒体に常駐する。第3のクラスタノードモジュールは、第3のカーネルへコマンドを送信
するように構成され、第1のクラスタノードモジュールおよび第2のクラスタノードモジ
ュールと通信するように構成される。第1のクラスタノードモジュールは、第2および第
3のクラスタノードモジュールから発せられたメッセージが記憶されるデータ構造を備え
る。
を翻訳するシングルノードカーネルを含むソフトウェアパッケージと、を含むコンピュー
タクラスタを提供する。クラスタノードモジュールが、シングルノードカーネルおよび他
のクラスタノードモジュールと通信するように構成される。クラスタノードモジュールは
、互いに通信しているいくつかのクラスタノードモジュールがクラスタとして動作するよ
うに、ユーザインタフェースからの命令を受け付け、それらの命令のうちの少なくともい
くつかを翻訳する。クラスタノードモジュールは、ユーザインタフェースからは、シング
ルノードカーネルのように見える。一実施形態では、この、シングルノードカーネルは、
Mathematicaカーネルを含む。実施形態によっては、ユーザインタフェースは
、Mathematicaフロントエンドまたはコマンドラインのうちの少なくとも一方
を含むことが可能である。実施形態によっては、クラスタノードモジュールは、MPI呼
び出しの少なくとも一部を実施するライブラリ呼び出しを含むツールキットを含む。実施
形態によっては、クラスタノードモジュールは、高級クラスタコンピューティングコマン
ドを含むツールキットを含む。一実施形態では、クラスタシステムは、複数のMacin
tosh(登録商標)コンピュータ(「Mac」)、Windows(登録商標)ベース
のパーソナルコンピュータ(「PC」)、および/またはUmx/Linuxベースのワ
ークステーションを含むことが可能である。
は、ユーザインタフェースのプログラムコードと、ユーザ命令を翻訳するように構成され
たシングルノードカーネルモジュールのプログラムコードと、を備えるコンピュータ可読
媒体にアクセスするように構成される。クラスタは、複数のクラスタノードモジュールを
含む。この複数のクラスタノードモジュールが互いに通信してクラスタとして動作するよ
うに、各クラスタノードモジュールは、シングルノードカーネルおよび1つまたは複数の
他のクラスタノードモジュールと通信することと、ユーザインタフェースから命令を受け
付けることと、ユーザ命令の少なくともいくつかを翻訳することと、を行うように構成さ
れる。通信ネットワークが、これらのノードを接続する。複数のクラスタノードモジュー
ルの1つが、結果をユーザインタフェースへ返す。
ユーザインタフェースまたはスクリプトの少なくとも一方からのコマンドが、コンピュー
タクラスタ内の1つまたは複数のクラスタノードモジュールに伝達される。その1つまた
は複数のクラスタノードモジュールのそれぞれが、そのコマンドに基づくメッセージを、
そのクラスタノードモジュールに関連付けられた各カーネルモジュールに伝達する。その
1つまたは複数のクラスタノードモジュールのそれぞれが、そのクラスタノードモジュー
ルに関連付けられた各カーネルモジュールから結果を受け取る。その1つまたは複数のク
ラスタノードモジュールのうちの少なくとも1つが、他のクラスタノードモジュールから
のメッセージに応答する。
ピューティングシステムを提供する。このコンピューティングシステムは、第1のノード
で実行されている第1のMathematicaカーネルと通信する第1のノードモジュ
ールと、第2のノードで実行されている第2のMathematicaカーネルと通信す
る第2のノードモジュールと、第3のノードで実行されている第3のMathemati
caカーネルと通信する第3のノードモジュールと、を含む。第1のノードモジュール、
第2のノードモジュール、および第3のノードモジュールは、ピアツーピアアーキテクチ
ャを用いて互いに通信するように構成される。実施形態によっては、第1のノードモジュ
ール、第2のノードモジュール、および第3のノードモジュールのそれぞれは、他のノー
ドモジュールから発せられたメッセージを保持するデータ構造と、メッセージの受信先と
して期待されるロケーション、およびそのメッセージの送信元として期待されるノードの
識別子を指定するデータを保持するデータ構造と、を含む。
および関連する説明は、実施形態を例示するために提供されており、本開示の範囲を限定
するものではない。図面全体を通じて、参照される要素の間の対応を示すために、参照符
号を繰り返し使用している。
フトウェアを用いるクラスタコンピューティングのコンテキストで説明する。本開示は、
単一のソフトウェアプログラムに限定されず、本システムおよび方法は、他のアプリケー
ションソフトウェアとともに使用されることが可能であり、そのようなソフトウェアとし
て、たとえば、Maple(登録商標)、MATLAB(登録商標)、MathCAD(
登録商標)、Apple Shake(登録商標)、Apple(登録商標) Comp
ressor、IDL(登録商標)、他の、インタプリタまたはカーネルを用いるアプリ
ケーション、Microsoft Excel(登録商標)、Adobe After
Effects(登録商標)、Adobe Premiere(登録商標)、Adobe
Photoshop(登録商標)、Apple Final Cut Pro(登録商
標)、Apple iMovie(登録商標)などがある。しかしながら、いくつかの図
面および/または説明は、Mathematicaを実行するコンピュータクラスタの実
施形態に関連している。本システムは、多様な用途を含むことが可能であり、そのような
用途には、これらに限定されないが、学生、教育者、科学者、技術者、数学者、研究者、
技能者などが含まれる。また、他の実施形態では、本システムおよび方法は、単一モジュ
ールとして実装されること、および/または、他の様々なモジュールとともに実装される
ことが可能であることも理解されよう。さらに、本明細書に記載の個々の実施態様は、本
開示を限定するためではなく、本開示の例を示すために説明されている。
I.概要
通信ネットワークを介して互いに接続された1つまたは複数のコンピュータシステムを含
む。この通信ネットワークは、ローカルエリアネットワーク(「LAN」)、ワイドエリ
アネットワーク(「WAN」)、イントラネット、インターネットなどのうちの1つまた
は複数を含むことが可能である。一実施形態では、コンピュータシステムは、たとえば、
1つまたは複数のプロセッサコア(「ノード」)を含むことが可能なマイクロプロセッサ
のような、1つまたは複数のプロセッサを備える。「ノード」という用語は、コードのシ
ングルスレッド実行が可能なプロセッサユニットまたはプロセッササブユニットを意味す
る。プロセッサは、たとえば、ランダムアクセスメモリ(「RAM」)のような、1つま
たは複数のメモリ装置、および/または、たとえば、ハードディスクのような、1つまた
は複数の光ストレージ装置に接続されることが可能である。プロセッサとそのような他の
装置との間の通信は、たとえば、コンピュータシステムの1つまたは複数のローカルバス
を介して、あるいは、LAN、WAN、ストレージエリアネットワーク(「SAN」)、
および/または他の任意の、コンピュータシステムコンポーネント間で信号を搬送するこ
とが可能な通信ネットワークを介して、行われることが可能である。一実施形態では、カ
ーネルのような、1つまたは複数のソフトウェアモジュールが、相互接続された複数のコ
ンピュータシステムの中のノードで実行される。一実施形態では、カーネルは、単一ノー
ドでのみ実行されるように設計される。一実施形態では、クラスタコンピューティング機
能性を実装するために、クラスタノードモジュールが、カーネルと通信し、クラスタノー
ドモジュール同士で通信する。
ンピュータシステム110、120、130が、通信ネットワーク102を介して互いに
通信している。ネットワーク102は、LAN、WAN、無線ネットワーク、イントラネ
ット、またはインターネットのうちの1つまたは複数を含む。本コンピュータクラスタの
一実施形態では、コンピュータシステム110は、プロセッサ112a、112b、メモ
リ114、およびオプションのストレージ116を含む。他のコンピュータシステム12
0、130も同様の装置を含むことが可能であり、それらの装置は、一般に、コンピュー
タシステム内で、ローカルバス(図示せず)のようなローカル通信アーキテクチャを介し
て互いに通信している。コンピュータシステムは、1つまたは複数のプロセッサを含むこ
とが可能であり、各プロセッサは、シングルスレッド実行が可能な、1つまたは複数のプ
ロセッサコアを含むことが可能である。プロセッサコアは、一般には、独立したマイクロ
プロセッサであるが、複数のプロセッサコアが単一チップパッケージに含まれることも可
能である。シングルスレッド実行を行うように設計されたソフトウェアコードは、一般に
、一度に1つのプロセッサコアで実行されることが可能である。たとえば、シングルスレ
ッドソフトウェアコードは、典型的には、コンピュータシステム内に複数のプロセッサコ
アがあることの恩恵を受けない。
ュール同士の関係を示すブロック図である。図2に示された実施形態では、カーネルモジ
ュール206a〜eは、シングルスレッド実行を行うように設計されている。たとえば、
図1に示されたプロセッサ112a、112b、122a、122b、132のそれぞれ
が、プロセッサコアを1つだけ含む場合、コンピュータシステム110のメモリ114に
ロードされた2つのカーネルモジュール(たとえば、カーネルモジュール206a、20
6b)は、2つのプロセッサ112a、112bの処理用帯域幅の少なくとも一部を活用
することが可能である。同様に、コンピュータシステム120のメモリ124にロードさ
れた2つのカーネルモジュール206c、206dは、2つのプロセッサ122a、12
2bの処理用帯域幅の少なくとも一部を活用することが可能である。同様に、コンピュー
タシステム130のプロセッサ132の帯域幅は、コンピュータシステムのメモリ134
にロードされた、クラスタノードモジュール204eの単一インスタンスによって利用さ
れることが可能である。
ラスタノードモジュール204a〜eとそれぞれ通信している。たとえば、カーネルモジ
ュール206aは、クラスタノードモジュール204aと通信しており、カーネルモジュ
ール206bは、クラスタノードモジュール206bと通信しており、他も同様である。
一実施形態では、クラスタノードモジュール204a〜eの1つのインスタンスが、コン
ピュータシステムで実行されているカーネルモジュール206a〜eのインスタンスごと
に、コンピュータシステムのメモリ114、124、134にロードされている。図2に
示されるように、クラスタノードモジュール204a〜eのそれぞれが、他のクラスタノ
ードモジュール204a〜eのそれぞれと通信している。たとえば、1つのクラスタノー
ドモジュール204aは、他のすべてのクラスタノードモジュール204b〜eと通信し
ている。クラスタノードモジュール204aは、たとえば、両方のクラスタノードモジュ
ール204a〜bが同じコンピュータシステム110にあるプロセッサ112a、112
bで実行されている場合に、ローカルバス(図示せず)を介して別のクラスタノードモジ
ュール204bと通信することが可能である。クラスタノードモジュール204aはまた
、たとえば、クラスタノードモジュール204a、cが、異なるコンピュータシステム1
10、120にあるプロセッサ112a、122aで実行されている場合に、通信ネット
ワーク102を介して別のクラスタノードモジュール204cと通信することも可能であ
る。
たはコマンドラインインタフェースなどのオプションのユーザインタフェースモジュール
202が、クラスタノードモジュール204aに接続可能である。ユーザインタフェース
モジュールは、クラスタノードモジュール204aが実行されている、同じコンピュータ
システム110および/または同じマイクロプロセッサ112aで実行可能である。クラ
スタノードモジュール204a〜eは、シングルスレッドカーネルモジュールにクラスタ
コンピューティング機能を実装するMPI呼び出しおよび/または高度クラスタ機能を提
供する。クラスタノードモジュール204a〜eは、ユーザインタフェースモジュール2
02から見れば、カーネルモジュール206aのように見えてカーネルモジュール206
aのようにふるまうように構成されている。同様に、クラスタノードモジュール202a
〜eは、カーネルモジュール206aから見れば、ユーザインタフェースモジュール20
2のように見えてユーザインタフェースモジュール202のようにふるまうように構成さ
れている。第1のクラスタノードモジュール204aは、他の1つまたは複数のクラスタ
ノードモジュール204b、204cなどと通信しており、これらのそれぞれが、MPI
呼び出しおよび/または高度クラスタコマンドのセットを提供する。一実施形態では、M
PIは、コンピュータクラスタにおけるノード間メッセージ送信に用いられることが可能
である。
ルの間(たとえば、クラスタノードモジュール204aと別のクラスタノードモジュール
204cとの間)で通信が行われることが可能である。クラスタノードモジュール204
a〜eのそれぞれは、それぞれのカーネルモジュール206a〜eと通信している。した
がって、クラスタノードモジュール204aは、カーネルモジュール206aと通信して
いる。MPI呼び出しおよび高度クラスタコマンドは、オプションのユーザインタフェー
スモジュール208から受け取られたプログラムコードを並列化し、タスクをカーネルモ
ジュール206a〜eに分配するために用いられる。クラスタノードモジュール204a
〜eは、それらのタスクが実行されている間のカーネルモジュール206a〜e間の通信
を提供する。カーネルモジュール206a〜eによって実行された評価の結果は、クラス
タノードモジュール204a〜eを介して第1のクラスタノードモジュール204aへ返
され、第1のクラスタノードモジュール204aは、それらの結果をユーザインタフェー
スモジュール208へ伝達する。
モジュール204a〜eによって可能にされ、たとえば、様々な種類の数学的問題および
科学的問題に取り組むことに関して有利に働く。クラスタコンピューティングによって提
供される相互通信は、並列計算の過程におけるノード間の情報交換を可能にする。本開示
の諸実施形態は、そのような相互通信を、Mathematicaのようなソフトウェア
プログラムに提供する一方、グリッドコンピューティングソリューションは、1つのマス
タノードと多数のスレーブノードとの間でのみ通信を実施することが可能である。グリッ
ドコンピューティングでは、スレッド実行の間は、スレーブノード間で通信を行うことが
できない。
、利益、および新規な特徴について説明する。本発明の任意の特定の実施形態によれば、
そのような利点または利益のすべてが、必ずしも実現可能ではないことを理解されたい。
したがって、たとえば、当業者であれば理解されるように、本発明は、本明細書で教示さ
れるように1つまたは複数の利点を達成する様式で、本明細書で教示または提案されうる
ような他の利点または利益を必ずしも達成することなく、実施または実行されることが可
能である。
II.コンピュータクラスタ100
02を介して互いに通信しているコンピュータシステム110、120、130を含む。
第1のコンピュータシステム110は、1つまたは複数のプロセッサ112a〜b、メモ
リ装置114、およびオプションのストレージ装置116を含むことが可能である。同様
に、第2のコンピュータシステム120は、1つまたは複数のプロセッサ122a〜b、
メモリ装置124、およびオプションのストレージ装置126を含むことが可能である。
同様に、第3のコンピュータシステム130は、1つまたは複数のプロセッサ132、メ
モリ装置134、およびオプションのストレージ装置136を含むことが可能である。コ
ンピュータシステム110、120、130のそれぞれは、通信ネットワーク102に接
続されるためのネットワークインタフェース(図示せず)を含み、通信ネットワーク10
2は、LAN、WAN、イントラネット、無線ネットワーク、および/またはインターネ
ットのうちの1つまたは複数を含むことが可能である。
A.コンピュータシステム110
の一部として、ネットワーク102を介して、他のコンピュータシステム120、130
と通信している。一実施形態では、コンピュータシステム110は、1つまたは複数のプ
ロセッサ112a〜b、メモリ装置114、オプションのストレージ装置116、ならび
に、ネットワーク102との通信のためのネットワークインタフェースモジュール(図示
せず)を含むパーソナルコンピュータ、ワークステーション、サーバ、またはブレードで
ある。
1.プロセッサ112a〜b
a〜bを含む。プロセッサ112a〜bは、1つまたは複数の汎用シングルコアマイクロ
プロセッサまたはマルチコアマイクロプロセッサであることが可能であり、そのようなプ
ロセッサとして、たとえば、Pentium(登録商標)プロセッサ、Pentium(
登録商標) IIプロセッサ、Pentium(登録商標) Proプロセッサ、Pen
tium(登録商標) IIIプロセッサ、Pentium(登録商標) 4プロセッサ
、Core Duo(登録商標)プロセッサ、Core 2 Duo(登録商標)プロセ
ッサ、Xeon(登録商標)プロセッサ、Itanium(登録商標)プロセッサ、Pe
ntium(登録商標) Mプロセッサ、x86プロセッサ、Athlon(登録商標)
プロセッサ、8051プロセッサ、MIPS(登録商標)プロセッサ、PowerPC(
登録商標)プロセッサ、ALPHA(登録商標)プロセッサなどがある。さらに、プロセ
ッサ112a〜bのうちの1つまたは複数が、デジタル信号プロセッサのような専用マイ
クロプロセッサであることが可能である。コンピュータシステム110内にあるすべての
プロセッサ112a〜bの中のプロセッサコア(たとえば、シングルスレッド実行が可能
なプロセッサユニット)の総数は、コンピュータシステム110内で使用可能なノードの
数に対応する。たとえば、プロセッサ112a〜bのそれぞれが、2つのプロセッサコア
を有するCore 2 Duo(登録商標)プロセッサであった場合、コンピュータシス
テム110は、全部で4つのノードを有することになる。各ノードは、シングルスレッド
カーネルモジュールのようなプログラムモジュールの1つまたは複数のインスタンスを実
行することが可能である。
2.ネットワークインタフェースモジュール
タシステム120、130との間の、通信ネットワーク102を介する通信を容易にする
ネットワークインタフェースモジュール(図示せず)を含むことが可能である。
ことが可能である。一実施形態では、ネットワークインタフェースモジュールは、TCP
/IPを含む。しかしながら、他の種類のネットワーク通信プロトコル、たとえば、ポイ
ントツーポイントプロトコル(「PPP」)、サーバメッセージブロック(「SMB」)
、シリアルラインインターネットプロトコル(「SLIP」)、トンネリングPPP、A
ppleTalkなども使用可能であることを理解されたい。
3.メモリ114およびストレージ116
は、たとえば、プロセッサキャッシュメモリ(プロセッサコア別のキャッシュメモリや、
複数のプロセッサコアによって共有されるキャッシュメモリなど)、動的ランダムアクセ
スメモリ(「DRAM」)、静的ランダムアクセスメモリ(「SRAM」)、または、他
の任意の種類の、コンピュータデータ、命令、またはプログラムコードを記憶できるメモ
リ装置を含むことが可能である。コンピュータシステム110はさらに、オプションのス
トレージ116を含むことが可能である。ストレージ116は、たとえば、1つまたは複
数のハードディスクドライブ、フロッピーディスク、フラッシュメモリ、磁気ストレージ
メディア、CD−ROM、DVD、光ストレージメディア、または他の任意の種類の、コ
ンピュータデータ、命令、およびプログラムコードを記憶できるストレージ装置を含むこ
とが可能である。
4.コンピュータシステム110情報
ことが可能であり、たとえば、Microsoft(登録商標) Windows(登録
商標) 3.X、Windows 95(登録商標)、Windows 98(登録商標
)、Windows NT(登録商標)、Windows 2000(登録商標)、Wi
ndows XP(登録商標)、Windows CE(登録商標)、Palm Pil
ot OS、OS/2、Apple(登録商標) MacOS(登録商標)、MacOS
X(登録商標)、MacOS X Server(登録商標)、ディスク オペレーテ
ィングシステム(DOS)、UNIX、Linux(登録商標)、VxWorks(IB
M(登録商標) OS/2(登録商標))、Sun OS、Solaris OS、IR
IX OSなどのオペレーティングシステムとともに使用されることが可能である。
ップコンピュータ、Blackberry(登録商標)装置、ポータブルコンピューティ
ング装置、サーバ、コンピュータワークステーション、個々のコンピュータからなるロー
カルエリアネットワーク、インタラクティブキオスク、携帯情報端末、インタラクティブ
無線通信装置、ハンドヘルドコンピュータ、埋め込みコンピューティング装置などである
。
ン、プロシージャ、定義文、およびマクロを含むことが可能である。上記各モジュールは
、典型的には、別々にコンパイルされて、1つの実行可能プログラムにリンクされる。し
かしながら、当業者であれば理解されるように、それらのモジュールのうちの選択された
モジュールによって実行されたプロセスは、その他のモジュールのいずれかに任意に再分
配されるか、1つのモジュールにまとめられるか、共有可能なダイナミックリンクライブ
ラリのかたちで使用可能にされるか、他の任意の論理様式で分割されることが可能である
。
B.コンピュータシステム120
の一部として、ネットワーク102を介して、他のコンピュータシステム110、130
と通信している。一実施形態では、コンピュータシステム120は、1つまたは複数のプ
ロセッサ122a〜b、メモリ装置124、オプションのストレージ装置126、ならび
に、ネットワーク102との通信のためのネットワークインタフェースモジュール(図示
せず)を含むパーソナルコンピュータ、ワークステーション、サーバ、またはブレードで
ある。
1.プロセッサ112a〜b
a〜bを含む。プロセッサ122a〜bは、1つまたは複数の汎用シングルコアマイクロ
プロセッサまたはマルチコアマイクロプロセッサであることが可能であり、そのようなプ
ロセッサとして、たとえば、Pentium(登録商標)プロセッサ、Pentium(
登録商標) IIプロセッサ、Pentium(登録商標) Proプロセッサ、Pen
tium(登録商標) IIIプロセッサ、Pentium(登録商標) 4プロセッサ
、Core Duo(登録商標)プロセッサ、Core 2 Duo(登録商標)プロセ
ッサ、Xeon(登録商標)プロセッサ、Itanium(登録商標)プロセッサ、Pe
ntium(登録商標) Mプロセッサ、x86プロセッサ、Athlon(登録商標)
プロセッサ、8051プロセッサ、MIPS(登録商標)プロセッサ、PowerPC(
登録商標)プロセッサ、ALPHA(登録商標)プロセッサなどがある。さらに、プロセ
ッサ122a〜bは、デジタル信号プロセッサのような任意の専用マイクロプロセッサで
あることが可能である。コンピュータシステム120内にあるすべてのプロセッサ122
a〜bの中のプロセッサコア(たとえば、シングルスレッド実行が可能なプロセッサユニ
ット)の総数は、コンピュータシステム120内で使用可能なノードの数に対応する。た
とえば、プロセッサ122a〜bのそれぞれが、2つのプロセッサコアを有するCore
2 Duo(登録商標)プロセッサであった場合、コンピュータシステム120は、全
部で4つのノードを有することになる。各ノードは、シングルスレッドカーネルモジュー
ルのようなプログラムモジュールの1つまたは複数のインスタンスを実行することが可能
である。
2.ネットワークインタフェースモジュール
タシステム110、130との間の、通信ネットワーク102を介する通信を容易にする
ネットワークインタフェースモジュール(図示せず)を含むことが可能である。
ことが可能である。一実施形態では、ネットワークインタフェースモジュールは、TCP
/IPを含む。しかしながら、他の種類のネットワーク通信プロトコル、たとえば、ポイ
ントツーポイントプロトコル(「PPP」)、サーバメッセージブロック(「SMB」)
、シリアルラインインターネットプロトコル(「SLIP」)、トンネリングPPP、A
ppleTalkなども使用可能であることを理解されたい。
3.メモリ124およびストレージ126
は、たとえば、プロセッサキャッシュメモリ(プロセッサコア別のキャッシュメモリや、
複数のプロセッサコアによって共有されるキャッシュメモリなど)、動的ランダムアクセ
スメモリ(「DRAM」)、静的ランダムアクセスメモリ(「SRAM」)、または、他
の任意の種類の、コンピュータデータ、命令、またはプログラムコードを記憶できるメモ
リ装置を含むことが可能である。コンピュータシステム120はさらに、オプションのス
トレージ126を含むことが可能である。ストレージ126は、たとえば、1つまたは複
数のハードディスクドライブ、フロッピーディスク、フラッシュメモリ、磁気ストレージ
メディア、CD−ROM、DVD、光ストレージメディア、または他の任意の種類の、コ
ンピュータデータ、命令、およびプログラムコードを記憶できるストレージ装置を含むこ
とが可能である。
4.コンピュータシステム120情報
ことが可能であり、たとえば、Microsoft(登録商標) Windows(登録
商標) 3.X、Windows 95(登録商標)、Windows 98(登録商標
)、Windows NT(登録商標)、Windows 2000(登録商標)、Wi
ndows XP(登録商標)、Windows CE(登録商標)、Palm Pil
ot OS、OS/2、Apple(登録商標) MacOS(登録商標)、MacOS
X(登録商標)、MacOS X Server(登録商標)、ディスク オペレーテ
ィングシステム(DOS)、UNIX、Linux(登録商標)、VxWorks(IB
M(登録商標) OS/2(登録商標))、Sun OS、Solaris OS、IR
IX OSなどのオペレーティングシステムとともに使用されることが可能である。
ップコンピュータ、Blackberry(登録商標)装置、ポータブルコンピューティ
ング装置、サーバ、コンピュータワークステーション、個々のコンピュータからなるロー
カルエリアネットワーク、インタラクティブキオスク、携帯情報端末、インタラクティブ
無線通信装置、ハンドヘルドコンピュータ、埋め込みコンピューティング装置などである
。
ン、プロシージャ、定義文、およびマクロを含むことが可能である。上記各モジュールは
、典型的には、別々にコンパイルされて、1つの実行可能プログラムにリンクされる。し
かしながら、当業者であれば理解されるように、それらのモジュールのうちの選択された
モジュールによって実行されたプロセスは、その他のモジュールのいずれかに任意に再分
配されるか、1つのモジュールにまとめられるか、共有可能なダイナミックリンクライブ
ラリのかたちで使用可能にされるか、他の任意の論理様式で分割されることが可能である
。
C.コンピュータシステム130
の一部として、ネットワーク102を介して、他のコンピュータシステム110、120
と通信している。一実施形態では、コンピュータシステム130は、1つまたは複数のプ
ロセッサ132、メモリ装置134、オプションのストレージ装置136、ならびに、ネ
ットワーク102との通信のためのネットワークインタフェースモジュール(図示せず)
を含むパーソナルコンピュータ、ワークステーション、サーバ、またはブレードである。
1.プロセッサ112a〜b
サ132は、汎用シングルコアマイクロプロセッサまたはマルチコアマイクロプロセッサ
であることが可能であり、そのようなプロセッサとして、たとえば、Pentium(登
録商標)プロセッサ、Pentium(登録商標) IIプロセッサ、Pentium(
登録商標) Proプロセッサ、Pentium(登録商標) IIIプロセッサ、Pe
ntium(登録商標) 4プロセッサ、Core Duo(登録商標)プロセッサ、C
ore 2 Duo(登録商標)プロセッサ、Xeon(登録商標)プロセッサ、Ita
nium(登録商標)プロセッサ、Pentium(登録商標) Mプロセッサ、x86
プロセッサ、Athlon(登録商標)プロセッサ、8051プロセッサ、MIPS(登
録商標)プロセッサ、PowerPC(登録商標)プロセッサ、ALPHA(登録商標)
プロセッサなどがある。さらに、プロセッサ132は、デジタル信号プロセッサのような
任意の専用マイクロプロセッサであることが可能である。コンピュータシステム130内
にあるプロセッサ132の中のプロセッサコア(たとえば、シングルスレッド実行が可能
なプロセッサユニット)の総数は、コンピュータシステム130内で使用可能なノードの
数に対応する。たとえば、プロセッサ132が、2つのプロセッサコアを有するCore
2 Duo(登録商標)プロセッサであった場合、コンピュータシステム130は、2
つのノードを有することになる。各ノードは、シングルスレッドカーネルモジュールのよ
うなプログラムモジュールの1つまたは複数のインスタンスを実行することが可能である
。
2.ネットワークインタフェースモジュール
タシステム110、120との間の、通信ネットワーク102を介する通信を容易にする
ネットワークインタフェースモジュール(図示せず)を含むことが可能である。
ことが可能である。一実施形態では、ネットワークインタフェースモジュールは、TCP
/IPを含む。しかしながら、他の種類のネットワーク通信プロトコル、たとえば、ポイ
ントツーポイントプロトコル(「PPP」)、サーバメッセージブロック(「SMB」)
、シリアルラインインターネットプロトコル(「SLIP」)、トンネリングPPP、A
ppleTalkなども使用可能であることを理解されたい。
3.メモリ134およびストレージ136
は、たとえば、プロセッサキャッシュメモリ(プロセッサコア別のキャッシュメモリや、
複数のプロセッサコアによって共有されるキャッシュメモリなど)、動的ランダムアクセ
スメモリ(「DRAM」)、静的ランダムアクセスメモリ(「SRAM」)、または、他
の任意の種類の、コンピュータデータ、命令、またはプログラムコードを記憶できるメモ
リ装置を含むことが可能である。コンピュータシステム130はさらに、オプションのス
トレージ136を含むことが可能である。ストレージ136は、たとえば、1つまたは複
数のハードディスクドライブ、フロッピーディスク、フラッシュメモリ、磁気ストレージ
メディア、CD−ROM、DVD、光ストレージメディア、または他の任意の種類の、コ
ンピュータデータ、命令、およびプログラムコードを記憶できるストレージ装置を含むこ
とが可能である。
4.コンピュータシステム130情報
ことが可能であり、たとえば、Microsoft(登録商標) Windows(登録
商標) 3.X、Windows 95(登録商標)、Windows 98(登録商標
)、Windows NT(登録商標)、Windows 2000(登録商標)、Wi
ndows XP(登録商標)、Windows CE(登録商標)、Palm Pil
ot OS、OS/2、Apple(登録商標) MacOS(登録商標)、MacOS
X(登録商標)、MacOS X Server(登録商標)、ディスク オペレーテ
ィングシステム(DOS)、UNIX、Linux(登録商標)、VxWorks(IB
M(登録商標) OS/2(登録商標))、Sun OS、Solaris OS、IR
IX OSなどのオペレーティングシステムとともに使用されることが可能である。
ップコンピュータ、Blackberry(登録商標)装置、ポータブルコンピューティ
ング装置、サーバ、コンピュータワークステーション、個々のコンピュータからなるロー
カルエリアネットワーク、インタラクティブキオスク、携帯情報端末、インタラクティブ
無線通信装置、ハンドヘルドコンピュータ、埋め込みコンピューティング装置などである
。
ン、プロシージャ、定義文、およびマクロを含むことが可能である。上記各モジュールは
、典型的には、別々にコンパイルされて、1つの実行可能プログラムにリンクされる。し
かしながら、当業者であれば理解されるように、それらのモジュールのうちの選択された
モジュールによって実行されたプロセスは、その他のモジュールのいずれかに任意に再分
配されるか、1つのモジュールにまとめられるか、共有可能なダイナミックリンクライブ
ラリのかたちで使用可能にされるか、他の任意の論理様式で分割されることが可能である
。
E.通信ネットワーク102
102を介して、互いに通信している。
ンピュータのグループを含むことが可能であり、そのようなグループとして、たとえば、
仮想プライベートネットワーク、パブリックインターネット、プライベートインターネッ
ト、セキュアインターネット、プライベートネットワーク、パブリックネットワーク、付
加価値ネットワーク、有線ネットワーク、無線ネットワーク、イントラネットなどのネッ
トワークがある。さらに、ネットワークとの接続性は、たとえば、モデム、イーサネット
(登録商標)(IEEE 802.3)、ギガビットイーサネット(登録商標)、10ギ
ガビットイーサネット(登録商標)、トークンリング(IEEE 802.5)、ファイ
バ分散データリンクインタフェース(FDDI:Fiber Distributed
Datalink Interface)、フレームリレー、インフィニバンド(Inf
iniBand)、ミリネット(Myrinet)、非同期転送モード(ATM)、また
は別のインタフェースであることが可能である。通信ネットワーク102は、コンピュー
タシステム110、120、130と、たとえば、モデムによって、またはそれらのシス
テムのそれぞれにあるネットワークインタフェースカードによって、接続可能である。
タシステム110と第2のコンピュータシステム120との間の通信、第1のコンピュー
タシステム110と第3のコンピュータシステム130との間の通信、および第2のコン
ピュータシステム120と第3のコンピュータシステム130との間の通信を容易にする
ことが可能である。
III.ソフトウェアモジュール
ラスタノードモジュール204aと通信することによって複数のカーネルモジュール20
6a〜eにアクセスすることが可能なユーザインタフェースモジュール202を含む。ユ
ーザインタフェースモジュールは、(たとえば、実行中は)メモリ114、124、13
4に記憶されることが可能であり、かつ/または、ストレージ装置116、126、13
6に記憶されることが可能である。第1のクラスタノードモジュール204aは、他のク
ラスタノードモジュール204b〜eのそれぞれと通信している。カーネルモジュール2
06a〜eは、それらが実行される1つまたは複数のコンピュータシステムのメモリに常
駐することが可能である。たとえば、第1のコンピュータシステム110のメモリ114
は、カーネルモジュール206a〜bのインスタンスを記憶することが可能であり、第2
のコンピュータシステム120のメモリ124は、カーネルモジュール206c〜dのイ
ンスタンスを記憶することが可能であり、第3のコンピュータシステム130のメモリ1
34は、カーネルモジュール206eのインスタンスを記憶することが可能である。
カーネルモジュール206a〜eは、シングルスレッドプログラムコードを含み、それぞ
れが、プロセッサ112a、112b、122a、122b、132のうちの1つに関連
付けられている。コンピュータシステム110、120、130のうちの1つまたは複数
、またはリモートコンピュータシステムに記憶されたクラスタ構成モジュールが、たとえ
ば、クラスタノードモジュール204a〜eとの通信を確立することが可能である。一実
施形態では、クラスタ構成モジュール208とクラスタノードモジュール204a〜eと
の間の通信によって、クラスタノードモジュール204a〜eが初期化されて、コンピュ
ータクラスタ100のクラスタコンピューティングサポートが提供される。
A.クラスタノードモジュール204
00で実行されている様々なカーネルモジュール206a〜e、たとえば、Mathem
aticaカーネルなど、が互いに通信するための手段を提供する。クラスタノードモジ
ュール204は、スーパコンピュータおよびクラスタの、いくつかのインストレーション
で用いられている、メッセージパッシングインタフェース(「MPI」)として知られる
アプリケーションプログラミングインタフェース(「API」)の少なくとも一部を含む
ことが可能である。クラスタノードモジュール204a〜e間の接続(たとえば、図2に
示された矢印)からなるネットワークは、たとえば、イーサネット(登録商標)上の T
CP/IPのような通信ネットワーク102を用いて実装されることが可能であるが、こ
れらの接続は、他の任意の種類のネットワーク上またはローカルコンピュータバス上でも
行われることが可能である。
、MathematicaのMathLink、Add−Ons、またはパケットなどの
インタフェースを用いてアプリケーションと対話することが可能である。Mathema
ticaカーネルを、Mathematicaフロントエンドとして知られるユーザイン
タフェースまたは他のMathematicaカーネルに接続するために通常使用される
MathLinkは、これらのエンティティのうちの任意のエンティティ間でメッセージ
、コマンド、またはデータを含む「パケット」を送信する双方向プロトコルである。Ma
thLinkは、コマンドまたはスレッドの実行中は、直接クラスタコンピューティング
のような、Mathematicaカーネル間の同時通信を許可しない。MathLin
kはさらに、複数の同時ネットワーク接続を実行するようには設計されていない。実施形
態によっては、クラスタノードモジュール204は、同じコンピュータにあるエンティテ
ィ同士の接続に、アプリケーション別のツールキット、たとえば、MathLinkなど
を用いることが可能である。
言えば、すべてのアクションが順番に実行されるとは限らず、順番に実行されなければな
らないわけでもない。たとえば、古典的な「チューリングマシン」モデルのシングルプロ
セッサコードとは対照的に、並列コードは、その複数のコピーがクラスタ全体で実行され
、典型的には、各プロセッサ(または「プロセッサエレメント」または「コア」)に対し
て1つのコピーが実行される。そのような並列コードは、同じコードの別々のインスタン
スが互いに通信し、共同作業を行い、作業内容を調整し合うことが可能であるように書か
れる。これらのコードの複数のインスタンスは、同時に並列に実行されることが可能であ
る。
−1までのラベルが付けられることが可能である。たとえば、コンピュータクラスタは、
それぞれがプロセッサを含む、N個の接続されたコンピュータを含むことが可能である。
第1のコンピュータは、プロセッサ0で実行されるカーネルモジュール0に、クラスタノ
ードモジュール0が接続されている。次のコンピュータは、プロセッサ1で実行されるカ
ーネルモジュール1に、クラスタノードモジュール1が接続されており、接続されたN個
のコンピュータのそれぞれについて同様である。それらのプロシージャのいくつかのステ
ップは共同作業であり、いくつかのステップは単独作業である。これらのエンティティは
、必ずしもロックステップにはなっていないが、必ず、初期化、主ループ動作(たとえば
、クラスタノードモジュール動作)、およびシャットダウンのパターンに従う。
えられる並列コンピューティングツールキット(PCT:parallel compu
ting toolkit)は、別々のノードで実行されている、同じコードのインスタ
ンスがインスタンス同士で通信し、共同作業を行い、作業内容を調整し合うための手段を
提供しない。PCTは、Mathematicaカーネルを、本明細書で開示されている
いくつかの実施形態で実現されるピアツーピア関係ではなく、マスタスレーブ関係で接続
するコマンドを提供する。ピアツーピアノードアーキテクチャを有するコンピュータクラ
スタで実行される計算は、マスタスレーブノードアーキテクチャを有するグリッドコンピ
ュータで実行される同等の計算より、効率が良く、設計しやすく、かつ/または、信頼性
が高いことが可能である。さらに、マスタスレーブノードアーキテクチャを用いるシステ
ムでは、計算の性質によっては、プログラマが、マルチノード処理能力を利用できない場
合がある。
04の一実施形態を示す。図3に示された実施形態では、クラスタノードモジュール20
4は、MPIモジュール302、高度機能モジュール304、受信済みメッセージキュー
306、およびメッセージ受信キュー308を含む。
1.MPIモジュール302
。MPIモジュール302は、少なくとも5種類のMPI命令またはMPI呼び出しのう
ちの1つまたは複数に対応するプログラムコードを含むことが可能である。MPIモジュ
ール302によって実装されることが可能な、選択された定数、命令、および/または呼
び出しは、以下のとおりである。
MPI定数
りするために使用される。MPIでは、これは、0から始まる一意の整数($IdPro
c)を各ノードに割り当てることによって行われる。総数($NProc)がわかってい
れば、このデータは、任意の測定可能なエンティティをプログラムで分割することを可能
にする。
基本MPI呼び出し
nなど)でよく使用されるMPI呼び出しをマッピングする比較的低級のルーチン群など
、基本MPI呼び出しを含むことが可能であり、それによって、そのような呼び出しをM
athematicaユーザインタフェース204から直接使用できるようにすることが
可能になる。実施形態によっては、基本MPI呼び出しは、データ、方程式、公式、およ
び/または他の数式を送信する呼び出しを含む。
単純に送信することが可能である。1つのノードが、数式を送信することを呼び出し、他
のノードが、送信された数式を受信する、対応するルーチンを呼び出すことが可能である
。メッセージが送信側ノードを離れても、受信側がまだmpiRecvを呼び出していな
い可能性があるため、mpiSendの完了は、メッセージが受信されたことの確認には
ならない。
非同期MPI呼び出し
能にする。また、待機中に、別のノードがデータをまだ送信または受信できないようにし
て、1つのカーネルが作業を続行できるようにすることが可能である。
maticaカーネル)の中から呼び出されることが可能である。mpiISend[]
コマンドは、ペイロードとして送信されるMathematica数式と、その数式の送
信先とを含むパケットを作成する。このパケット自体は、そのローカルのクラスタノード
モジュールだけを宛先とされる。このパケットは、そのローカルのクラスタノードモジュ
ールによって受信された後に復号され、そのペイロードが、パケットで指定されたクラス
タノードモジュールに転送される。
とが可能である。mpiIRecv[]コマンドは、数式を受け取ることを期待する場所
、およびこの数式の出所として期待されるプロセッサを指定するパケットを作成する。こ
のパケットは、そのローカルのクラスタノードモジュールによって受信された後に復号さ
れ、そのコンテンツが、メッセージ受信キュー(MRQ)308(図3)に記憶される。
が可能である。mpiTest[]コマンドは、どのメッセージを完了のためにテストす
るかを指定するパケットを作成し、その後、評価すべき数式の応答を待つ。このパケット
は、そのカーネルモジュールが関連付けられたクラスタノードモジュール204によって
受信された後に復号され、そのメッセージ指定子を用いて、その受信済みメッセージキュ
ー(RMQ)306の中で、完了されたものとしてリストされている、一致する数式が検
索される。そのような完了された数式が見つかった場合は、その数式が、mpiTest
[]内の応答の一部として、そのローカルのカーネルモジュールに送信される。カーネル
モジュールは、この応答の数式を受け取って評価し、これによって、カーネルモジュール
の変数が、必要に応じて更新される。
piTestの上に構築される。たとえば、mpiBcast(ブロードキャスト)は、
他のプロセッサがRecvを実行している間にブロードキャストプロセッサから他のすべ
てのプロセッサへ情報を送信する命令を作成する。同様に、ツールキットの高級呼び出し
は、MPI呼び出しの集合体の最上部に構築されることが可能である。
集団MPI呼び出し
間の基本マルチノードデータ移動を与える呼び出し)を実施するプログラムコードを含む
ことが可能である。集団MPI呼び出しは、たとえば、ブロードキャスト、収集、転置、
および他のベクトル操作や行列操作を含むことが可能である。集団呼び出しはまた、ノー
ドのグループ間で数式を送信するために一般に使用されているメカニズムを提供すること
も可能である。
一実施形態では、MPIモジュール302は、多数のノードにわたって記憶されている
データの並列和および他のリダクション操作を実施するプログラムコードを含む。MPI
モジュール302はまた、単純な並列入出力呼び出し(たとえば、複数のノードにあるオ
ブジェクトをクラスタシステム200がロードおよび記憶することを可能にする呼び出し
)を実施するプログラムコードを含むことが可能である。
えば、ノードのサブセットがあたかもサブクラスタであるかのように動作することを可能
にする呼び出し)を実施するプログラムコードを含む。コミュニケータは、ノードのグル
ープをユーザ定義サブセットに編成する。mpiCommSplit[]によって返され
るコミュニケータ値は、他のMPI呼び出しでmpiCommWorldの代わりに使用
可能である。
他のMPIサポート呼び出し
む。高度関数モジュール304は、MPIモジュール302によって実装されるMPI命
令およびMPI呼び出しを用いて実行することが不便または非現実的である関数のツール
キットを提供するプログラムコードを含むことが可能である。高度関数モジュール304
は、高度関数を実装するにあたり、MPIモジュール302によって実装される呼び出し
および命令に、少なくとも部分的に依存することが可能である。一実施形態では、高度関
数モジュール304は、指示または関数のカスタムセットを含む。一代替実施形態では、
高度関数モジュール304は、標準のMathematica言語をインタセプトし、こ
れを、クラスタ実行に最適化された1つまたは複数の関数に変換する。そのような実施形
態は、Mathematica関数になじんだユーザにとってはより使いやすいものであ
り得るが、プログラムデバッグプロセスが複雑になる可能性もある。高度関数モジュール
304によって実装されるいくつかの関数は、並列コンピューティングを用いるセットア
ップが困難または複雑である操作を簡略化することが可能である。高度関数モジュール3
04によって実装可能な、そのような関数のいくつかの例を、以下に示す。
a機能の、よく使用される通信パターンまたは並列バージョンを提供する。これらは、特
に断らない限り、デフォルトが$mpiCommWorldであるコミュニケータmpi
CommWorldにおいて実行されるが、実行時に、有効なコミュニケータに変更可能
である。
一般的な分割統治並列評価
ば、多数のノードに記憶されている多数のデータ要素またはデータ入力に対して同じ操作
を行うルーチンなどを含む。これらの関数は、並列化されたforループなどに匹敵しう
る。以下の呼び出しは、一般的なタスクの単純な並列化を扱う。呼び出しの説明において
、「expr」は数式を意味し、「loopspec」は、数式の評価方法を決定するル
ールのセットを意味する。実施形態によっては、高度関数モジュール304は、{var
,count}、{var,start,stop}、および{var,start,s
top,increment}を含む、少なくとも3つの形式のloopspecをサポ
ートし、{var,count}の場合、呼び出しは、1から整数「count」までの
変数「var」を反復し、{var,start,stop}の場合、呼び出しは、「s
tart」から「stop」までの変数「var」(すべて整数)を反復し、{var,
start,stop,increment}の場合、呼び出しは、反復のたびに「in
crement」が追加される「start」から、「stop」を超えるまでの変数「
var」(非整数であってよい)を反復する。
保護セル管理
、(1D、2D、および/または3Dに最適化された)任意の数の次元のローカル配列の
エッジを維持するために最近隣通信を実行するルーチンなどを含む。典型的には、問題の
空間は、パーティションに分割されている。しかしながら、各パーティションの隣接する
エッジ同士は、相互作用する可能性が非常に高いため、両方のエッジに対して、「保護セ
ル」が、隣接するデータの代わりに挿入される。したがって、あるプロセッサから見える
空間は、そのプロセッサが担当する実際の空間より要素2つ分だけ広い。EdgeCel
lは、これらの保護セルの維持を支援する。
行列およびベクトルの操作
分割された構造に対する、基本線形代数の並列化バージョンなどを含むことも可能である
。そのような線形代数演算では、行列およびベクトルの操作や、たとえば、行列式、トレ
ースなどの他の演算を実行するために、必要に応じてデータを再編成することが可能であ
る。行列は、クラスタ全体にわたる各プロセッサに分割されて記憶される。以下の呼び出
しは、これらの行列を一般的な様式で操作する。
要素管理
内の複数のノードに切り分けられた要素または小片の大規模ビンが、ルールまたは条件(
たとえば、それらの空間座標)に基づいてノード間を移動しなければならない場合がある
。そのような操作によって、データはノード間を移動する。分割統治アプローチに加えて
、要素のリストを、任意の様式で分割することも可能である。これは、要素を複数のプロ
セッサに編成またはソートしなければならない場合に有用である。たとえば、システムの
各小片が、1つのプロセッサの空間から別のプロセッサの空間へ流れ出る場合があるので
、それらのデータは、定期的に再分配される必要がある。
フーリエ変換
T」)を実施するプログラムコードを含む。たとえば、そのような関数は、1つのノード
ではなく多数のノードに記憶されている大量のデータに対して、1次元、2次元、および
/または3次元のFFTを実行することが可能である。非常に大きな配列のフーリエ変換
は、メモリ要件の問題にとどまらず、管理が困難である可能性がある。フーリエ変換を並
列化することにより、クラスタ全体におけるすべての空きメモリを活用することが可能に
なり、1つのプロセッサが単独で行うことができないと考えられる問題サイズの操作を行
うことが可能になる。
並列ディスクI/O
力呼び出しを含む。たとえば、データがクラスタ全体にわたって均一に分散しているよう
なクラスタにデータを読み込ませたり、そのようなクラスタからデータを読み出したりす
ることが必要になる場合がある。以下の表の各呼び出しは、データを1つまたは複数のプ
ロセッサからストレージに保存したり、ストレージからデータを取り出したりすることを
可能にする。
自動ロードバランシング
たとえば、Mathematicaでは、呼び出しf[20]の評価には、一般に、f[
19]の場合よりかなり長い時間がかかる可能性がある。さらに、クラスタ内の1つまた
は複数のプロセッサの速度が異なる場合(たとえば、いくつかのプロセッサが2.6GH
zのコア周波数で動作していて、他のプロセッサが1GHz未満のコア周波数で動作して
いる場合)は、1つのプロセッサが別のプロセッサより早くタスクを終了する可能性があ
る。
ータクラスタ100の動作を改良することが可能な呼び出しを含む。実施形態によっては
、rootプロセッサは、可能な関数呼び出しの小さなサブセットを、クラスタ100上
の各プロセッサに割り当てる。結果を最初に返したプロセッサには、可能な呼び出しの第
2の小さなサブセットが割り当てられる。rootプロセッサは、評価が完了するまでは
結果を受け取るので、可能な呼び出しの小さなサブセットを割り当て続ける。各プロセッ
サが終了する順番は、数式が評価されるたびに変わる可能性があるが、rootプロセッ
サは、使用可能になったプロセッサにさらなる作業を割り当て続ける。
る。これは、プロセッサ0から3までのそれぞれに、f[1]、f[2]、f[3]、f
[4]を割り当てることによって実装可能である(rootは自身に割り当てることが可
能)。f[2]の結果が最初に返されると、プロセッサ1にはf[5]が割り当てられる
。f[4]の結果が次に返されると、プロセッサ3にはf[6]が割り当てられる。これ
らの割り当ては、すべての結果が計算されるまで続けられる。これらの結果は、ユーザに
返される出力のために編成される。
り当てられることが可能であり、あるいは、バッチ割り当てされることが可能である(た
とえば、f[1]、f[5]、f[9]がプロセッサ1に割り当てられる、など)。また
、これらのサブセットは、委託によって編成されることも可能である。たとえば、あるプ
ロセッサノードが、その他のプロセッサによって直接制御されるわけでは必ずしもない。
代わりに、大きなサブセットをプロセッサに割り当てることが可能であり、そのプロセッ
サは、それの作業のサブセットを他のプロセッサに割り当てるであろう。この結果として
、巨大な軍隊のような割り当ての階層が作成されるであろう。
3.受信済みメッセージキュー306
6を含む。受信済みメッセージキュー306は、他のクラスタノードモジュールから受信
されたメッセージを記憶するデータ構造を含む。たとえば数式が完了しているかどうかな
ど、受信されたメッセージに関係する関連データも、受信済みメッセージキュー306に
記憶されることが可能である。受信済みメッセージキュー306は、キューおよび/また
は別の種類のデータ構造、たとえば、スタック、リンクされたリスト、配列、ツリーなど
を含むことが可能である。
4.メッセージ受信キュー308
含む。メッセージ受信キュー308は、式の送信先として期待されるロケーション、およ
びその式の送信元として期待されるプロセッサに関する情報を記憶するデータ構造を含む
。メッセージ受信キュー308は、キューおよび/または別の種類のデータ構造、たとえ
ば、スタック、リンクされたリスト、配列、ツリーなどを含むことが可能である。
B.クラスタ構成モジュール208
ラスタコンピューティングサポートを追加するために、複数のクラスタノードモジュール
を初期化するプログラムコードを含む。参照により全体が本明細書に組み込まれて、本明
細書の一部をなしている、Daugerに対して発行された米国特許第7136924号
(「’924特許」)明細書には、コンピュータクラスタの並列動作および制御のための
方法およびシステムが開示されている。1つの方法は、一般に、ネットワークサービスに
よって発見可能なオペレーティングシステムを有する1つまたは複数のパーソナルコンピ
ュータを取得することを含む。実施形態によっては、この方法は、カーネルモジュールを
実行することが可能な1つまたは複数のプロセッサまたはプロセッサコアを取得すること
を含む。’924特許に記載されるように、ソフトウェアアプリケーションのクラスタノ
ード制御およびインタフェース(CNCI:cluster node control
and interface)グループが各ノードにコピーされる。CNCIアプリケ
ーションがノードで実行されている場合、クラスタ構成モジュール208は、クラスタノ
ードモジュール204が、カーネルモジュール206との組み合わせで、そのノードの処
理用リソースを使用して、コンピュータクラスタの一部として並列計算タスクを実行でき
るようにすることが可能である。クラスタ構成モジュール208は、本開示に関連して、
クラスタ作成プロセスを大幅に自動化することが可能である。
C.ユーザインタフェースモジュール202
caフロントエンドやコマンドラインインタフェースのようなユーザインタフェースモジ
ュール202を含み、ユーザインタフェースモジュール202は、カーネルモジュール2
06が、グラフィカル出力を提供し、グラフィカル入力を受け付け、他の、グラフィカル
ユーザインタフェースまたはコマンドラインインタフェースが提供するユーザ通信方法を
提供するための、プログラムコードを含む。ユーザインタフェースモジュール202をサ
ポートするために、実施形態によっては、クラスタノードモジュール204aの動作が変
更される。ユーザインタフェースモジュール202は、出力をユーザに直接送信したり、
入力をユーザから直接受信したりする代わりに、ユーザインタフェースモジュール202
が接続されているクラスタノードモジュール204aを起動し、クラスタノードモジュー
ル204aとユーザインタフェースモジュール202との間の接続、たとえば、Math
Link接続などを形成するパラメータを指定する。ユーザインタフェースモジュールに
よるクラスタノードモジュール204aの起動により、クラスタ上の残りのクラスタノー
ドモジュール204b〜eを起動する命令、およびクラスタ上のすべてのカーネルモジュ
ール206a〜eを起動するシーケンスを完了する命令の実行が開始されることが可能で
ある。正規にはカーネルモジュール206aに宛てられた、ユーザインタフェースモジュ
ール202からのパケットは、クラスタノードモジュール204aによって、ユーザコマ
ンドとして受け付けられる。クラスタノードモジュール204aに関連付けられたカーネ
ルモジュール206aからの出力は、ユーザに対する表示のために、ユーザインタフェー
スモジュール202に転送されることが可能である。クラスタノードモジュール204a
〜eのいずれもが、ユーザインタフェースモジュール202と通信するように構成可能で
ある。
D.カーネルモジュール206
級コード、コマンド、および/または命令を、低級コード、たとえば、機械語やアセンブ
リ言語などに翻訳するプログラムコードを含む。一実施形態では、各クラスタノードモジ
ュール204a〜eは、他のすべてのクラスタノードモジュールに接続され、各カーネル
モジュール206a〜eは、1つのクラスタノードモジュール204だけが割り当てられ
、それに接続される。一実施形態では、プロセッサごとに、クラスタノードモジュールと
カーネルモジュールのペアが1つ存在する。たとえば、シングルプロセッサコンピュータ
システムを含むコンピュータクラスタ100の一実施形態では、クラスタノードモジュー
ルとカーネルモジュールの各ペアが、シングルプロセッサコンピュータに常駐することが
可能である。コンピュータが複数のプロセッサまたはプロセッサコアを含む場合、このコ
ンピュータは、クラスタノードモジュールとカーネルモジュールの複数のペアを含むこと
が可能であるが、その場合でも、それらのペアは、クラスタノードモジュールのネットワ
ーク接続を介して通信することが可能である。
IV.クラスタコンピューティング方法
ノードモジュールの操作方法、およびクラスタシャットダウンプロセスを含む。
A.クラスタ初期化プロセス
は複数のカーネルモジュール206にクラスタコンピューティングサポートを提供するた
めに、1つまたは複数のクラスタノードモジュール204を初期化する。
される。一実施形態では、(たとえば、ユーザが位置する)第1のプロセッサ112aで
実行されているクラスタノードモジュール204aが、クラスタ構成モジュール208を
介して、コンピュータクラスタ100上の他のプロセッサ112b、122a〜b、13
2にアクセスして、クラスタノードモジュール204b〜eをクラスタ全体に向けて起動
する。一代替実施形態では、クラスタ構成モジュール208が、通信ネットワーク102
を介して互いに接続されているプロセッサ112a〜b、122a〜b、132をサーチ
し、プロセッサ112a〜b、122a〜b、132のそれぞれにおいてクラスタノード
モジュール204a〜eを起動する。
一実施形態では、クラスタノードモジュール204a〜eのそれぞれが、クラスタ構成モ
ジュール208によってコンピュータクラスタ100上で起動された他のクラスタノード
モジュール204a〜eとの直接通信を、MPI_Initコマンドを用いて確立する。
することを試みる。一実施形態では、クラスタノードモジュール204a〜eの各インス
タンスが、居場所を定め、起動され、MathLink接続および/または同様の、たと
えば、カーネルモジュール206に組み込まれた接続ツールを介してローカルカーネルモ
ジュールに接続する。
204がシャットダウンされる。一実施形態では、各クラスタノードモジュール204は
、ローカルカーネルモジュールが見つからないかどうか、あるいは接続されていないかど
うかを判定する。一実施形態では、各クラスタノードモジュール204は、カーネルモジ
ュール206との接続に失敗した場合には、そのことを、コンピュータクラスタ100上
の他のクラスタノードモジュールに報告し、終了する。
られる。一実施形態では、残りの各クラスタノードモジュール204は、アクティブなプ
ロセッサの総数(N)を計算し、アクティブなクラスタノードモジュール204a〜eお
よびカーネルモジュール206a〜eの残りのサブセットを表す識別番号を決定する。こ
の新しい、クラスタノードモジュールとカーネルモジュールのペアのセットは、たとえば
、0からN−1の番号が付けられることが可能である。
が初期化される。一実施形態では、各クラスタノードモジュール204は、メッセージパ
ッシングをサポートするために、ローカルカーネルモジュール206に初期化コード(た
とえば、Mathematica初期化コード)を与える。
け付けるループに入る。一実施形態では、他のクラスタノードモジュール204のそれぞ
れが、ネットワーク102に接続されている他のすべてのクラスタノードモジュール20
4a〜eからのメッセージを待っている間に、第1のプロセッサ112aにおけるクラス
タノードモジュール204aがユーザ制御に戻った後に、主ループ(たとえば、クラスタ
動作ループ)が実行を開始する。
ための様式を可能にする構造が作成される。実施形態によっては、初期化が完了した時点
で、クラスタ内において、任意のカーネルモジュールが他の任意のカーネルモジュールに
データを送信したり、他の任意のカーネルモジュールからデータを受信したりすることが
可能になる。クラスタノードモジュールは、カーネルモジュールが他のカーネルモジュー
ルと直接通信しているという錯覚を起こさせる。初期化プロセスは、図2の例で示される
ような、コンピュータクラスタ100上のカーネルモジュール間の関係を作り上げること
が可能である。
B.クラスタノードモジュールの操作
プの間に、カーネルモジュール206に対するクラスタコンピューティングサポートを実
装する。
のユーザコマンドまたはメッセージを待つ。一実施形態では、他のクラスタノードモジュ
ール204b〜eがメッセージのチェックを続けている間に、ユーザインタフェースモジ
ュール202に接続されたクラスタノードモジュール204aは、ユーザコマンドを待つ
。
ドモジュール204aは、受信されたメッセージが終了(quit)コマンドかどうかを
判定する。終了コマンドが受信された場合、クラスタノードモジュール204aは、ルー
プを終了し、505のクラスタノードモジュールシャットダウンプロセスへ進む。受信さ
れたメッセージが終了コマンドでない場合は、プロセスは506へ進む。
タノードモジュール204a〜eへ伝達される。一実施形態では、ユーザがユーザインタ
フェースモジュール202にコマンドを入力すると、ユーザインタフェースモジュール2
02に接続されたクラスタノードモジュール204aが、そのユーザコマンドを、コンピ
ュータクラスタ100の他のすべてのクラスタノードモジュール204b〜eにサブミッ
トする。ユーザコマンドは、シンプルであってよいが(たとえば、「1+1」)、カーネ
ルモジュール206a〜e(たとえば、Mathematicaカーネル)間のメッセー
ジパッシングを実行する、ユーザインタフェースモジュール202(たとえば、Math
ematicaフロントエンド)内からのMPI呼び出しを含む、コード(たとえば、M
athematicaコードなど)の完全なサブルーチンおよびシーケンスであってもよ
い。これらは、クラスタノードモジュール204とそのローカルカーネルモジュール20
6との間で特別に識別されたメッセージを用いて実装される基本MPI呼び出しを含む。
eへ伝達される。一実施形態では、ユーザインタフェースモジュール202に接続された
クラスタノードモジュール204aは、ユーザコマンドを、クラスタノードモジュール2
04aが接続されているカーネルモジュール206aへサブミットする。他のクラスタノ
ードモジュール204b〜eのそれぞれは、メッセージを受信した後に、接続されている
、カーネルモジュール206b〜eのそれぞれへコマンドをサブミットする。
受け取る。一実施形態では、カーネルモジュール206は、その評価を完了した後、その
カーネルモジュールの出力を、そのカーネルモジュールが接続されているクラスタノード
モジュール204に返す。カーネルモジュールからの結果の性質に応じて、クラスタノー
ドモジュール204は、その結果を、ローカルコンピュータシステムに報告するか、メッ
セージとして別のクラスタノードモジュール204に渡すことが可能である。たとえば、
第1のプロセッサ112aで実行されているクラスタノードモジュール204aは、出力
を、そのローカルコンピュータシステム110に報告する。たとえば、第1のプロセッサ
112aでは、クラスタノードモジュール204aが、カーネルモジュール206aの出
力を直接報告するだけである。
われる。一実施形態では、各クラスタノードモジュール(たとえば、クラスタノードモジ
ュール204a)は、他のクラスタノードモジュール204b〜eおよびカーネルモジュ
ール206aからのメッセージを、それらがなくなるまで繰り返しチェックし、それらに
応答する。一実施形態では、カーネルモジュール206からの出力メッセージが、ローカ
ルコンピュータシステムの出力に転送される。他のクラスタノードモジュール204から
のメッセージは、受信済みメッセージキュー306(「RMQ」)に転送される。メッセ
ージ受信キュー308(「MRQ」)内の各エントリからのデータが、RMQ306内の
エントリと照合される(たとえば、前述のmpiIRecv[]呼び出しの説明を参照)
。MRQ308からのデータが合致すれば、そのデータが、RMQ306内の対応するデ
ータと結合され、「完了」としてマーキングされる(たとえば、前述のmpiTest[
]呼び出しの説明を参照)。このプロセスは、クラスタノードモジュール204a〜eの
ピアツーピア動作を提供する。この仕組みにより、複数の同時に実行されるカーネルモジ
ュール(たとえば、Mathematicaカーネル)において実行されるコードは、ペ
ア単位または集団で対話することにより、1つのカーネルが単独で実行した場合より大規
模かつ/または高速に、計算、処理、または他の作業を実行することが可能である。この
ようにして、どのような作業が行われるかをユーザコマンドで指定する、ユーザが入力し
た命令およびデータが、より迅速に、かつ/または、より確実に実行されることが可能で
ある。メッセージへの応答が完了すると、プロセスは502へ戻る。
C.クラスタシャットダウンプロセス
シージャを含む。ユーザインタフェースモジュール202に接続されたクラスタノードモ
ジュール204aにおける動作プロセス(または主ループ)が、「Quit」または「E
xit」コマンド(終了コマンド)を検出するか、他の方法で、シャットダウンを示すメ
ッセージをユーザから受け取った場合は、クラスタノードモジュール204a〜eおよび
カーネルモジュール206a〜eをシャットダウンするシーケンスが起動される。一実施
形態では、ユーザインタフェースモジュール202に接続されたクラスタノードモジュー
ル204aは、他のすべてのクラスタノードモジュール204b〜eに終了メッセージを
送信する。各クラスタノードモジュール204は、その終了コマンドを、それぞれのロー
カルカーネルモジュール206に転送する。各クラスタノードモジュール204は、それ
ぞれのMathematicaカーネルが終了した後、それぞれの、他のクラスタノード
モジュールとの通信ネットワークを切断することに進む(たとえば、前述のMPI_Fi
nalizeコマンドの説明を参照)。プロセスの最後に、各クラスタノードモジュール
204が実行を終了する。
V.運用例
リオを説明する。以下のサンプルシナリオでは、Mathematicaコードの例が与
えられ、クラスタシステムによってコードがどのように実行されるかの説明が行われる。
基本MPI
てのプロセッサに対して同じである。プロセッサ0は、他のどのような値がmpiGat
her[]などの集団(後述)通信呼び出しを使用しているかを知ることが可能である。
行うが、どのプロセッサをターゲットとするかを定義する必要がある。以下では、プロセ
ッサの各ペアが互いをポイントするように、新しい変数targetProcを定義して
いる。
プロセッサが、それぞれの「左」プロセッサをポイントとする。たとえば、プロセッサが
列に並べられ、順に番号が付けられた場合は、すべての偶数番号プロセッサが、その列に
おける直後のプロセッサとペアになり、すべての奇数番号プロセッサが、直前のプロセッ
サとペアになる。その場合は、次のようにメッセージが送信されることが可能である。
セッサがπの22桁を送信し、偶数プロセッサがそのメッセージを受信する。これらのM
PI呼び出しは何も返さないことに注意されたい。受信済みメッセージは、変数aの中に
ある。
ロセッサ3がプロセッサ2にπを送信し、プロセッサ5がプロセッサ4にπを送信し、以
降も同様である。これらのメッセージは、プロセッサ0を介しては送信されず、それらだ
けで伝達されている。
ており、非同期動作は、メッセージが送受信されている間、または、他のプロセッサがビ
ジーの場合に他の作業を行うことを可能にする。したがって、前述の例は、次のように、
非同期で行われることが可能である。
の数式がアクセス対象になるまでは、Trueを返すことが可能である。この時点で、他
の多くの評価を実行することが可能である。次に、これらのデータが必要になるタイミン
グを、以下のように、mpiTestを用いてチェックすることが可能である。
est[e]がTrueを返すまで戻らない。これらのピアツーピア呼び出しを使用する
権限を持つと、任意の問題に対して任意のメッセージパッシングパターンを構築すること
が可能になる。
集団MPI
ーンで十分である。プロセッサ0が、すべてのプロセッサが有することを意図された、b
という数式を有するものとする。ブロードキャストMPI呼び出しが、以下を行う。
他のすべてのプロセッサは、それぞれのbが上書きされる。すべてのプロセッサから値を
収集するために、次のように、mpiGatherDを用いる。
け、それらを各プロセッサに分散させる。これは、$NProc=2の場合の結果であり
、$NProc=4の場合、bは{2}を有するだけである。
では、$NProcが2なので、同一でない要素は奇数側の合計をもたらし、同一である
要素は偶数側の合計をもたらしている。
ト値を有する。たとえば、以下の呼び出しのそれぞれは、前述のmpiGather[]
呼び出しと等価の効果を有する。
athematica呼び出し)の便利な並列バージョンを含むことが可能である。たと
えば、ParallelTable[]は、評価が分散様式で自動的に行われること以外
は、Table[]と同様である。
び出しを並列化して複雑な関数にするための、有用かつシンプルな方法である。以下のよ
うに、広い範囲の入力に対して、複雑な関数を定義し、それを評価することが可能である
。
ための簡略化された方法を提供する。
単純でない通信の操作
行列操作
ラスタ上で解決可能にされることが可能である。これは、フーリエ変換がすべてメモリに
保持されることが可能だからである。前述の例の2次元フーリエ変換は、以下のとおりで
ある。
ては、個々のプロセッサのパーティションの外へ出る可能性がある。これは、以下のよう
に、ElementManage[]で解決可能である。
いる。fcn識別子は、どのプロセッサがその要素の「ホーム」であるかを返す。整数を
渡すことは、各要素がそれ自体リストであって、その第1の要素が、0から渡された引数
までの範囲の数であることを仮定している。
タコマンドの特定の実施形態とに関連していたが、これらの実施形態は、本発明のシステ
ムおよび方法の種々の実施形態の特徴を例示するためにのみ用いられていることを理解さ
れたい。
VI.さらなる実施形態
し、および関数が開示されているが、本開示は、それによって限定されることを意図する
ものではない。むしろ、当業者であれば、本明細書における開示から、クラスタ呼び出し
、関数、および管理システムの本開示そのものの選択に対して幅広い代替があることを理
解されよう。たとえば、本明細書に記載のように、シングルノードカーネルは、様々な管
理ツールを用いて管理されることが可能であり、かつ/または、ユーザによって手動で管
理されることが可能である。別の例として、クラスタノードモジュールは、クラスタコン
ピューティングに無関係の呼び出しおよびプロシージャを含む、本明細書で開示されてい
ない、さらなる呼び出しおよびプロシージャを含むことが可能である。
、記載された実施形態は、例としてのみ提示されており、本開示の範囲を限定するもので
はない。実際、本明細書に記載の新規な方法およびシステムは、本発明の趣旨から逸脱し
ない他の様々な形態で実施されることが可能である。したがって、当業者であれば、本明
細書における開示に鑑みて、他の組み合わせ、省略、置換、および修正が明らかであろう
。したがって、本開示は、開示された実施形態によって限定されるものではなく、添付の
特許請求の範囲の参照によって規定されるものとする。添付の特許請求の範囲およびそれ
らの等価物は、本発明の範囲および趣旨を逸脱しない形態または修正を包含するものとす
る。
Claims (20)
- 1つまたは1つ以上の特別目的のマイクロプロセッサ上でコマンドを実行することによ
って、フロントエンドから受けた命令を実行するためのシステムであって、
複数のノードであって、各ノードが、シングルノードカーネルモジュールのプログラム
コードを含むコンピュータ可読のメモリ装置にアクセスするように構成された複数のノー
ドを備え、各シングルノードカーネルモジュールは、シングルノードカーネルモジュール
によって受けた命令を、前記特別目的のマイクロプロセッサによって実行可能なコマンド
に解釈し、
複数のクラスタノードモジュールであって、前記複数のクラスタノードモジュールが前
記コンピュータ可読のメモリ装置に記憶され、かつ互いに通信して、1つまたは1つ以上
のハードウエアプロセッサを用いてコマンドを実行するクラスタとして動作するように、
命令を受けるために、シングルノードカーネルモジュールおよび1つまたは複数の他のク
ラスタノードモジュールと通信すること、前記命令の少なくともいくつかを解釈すること
、を行うように構成された、複数のクラスタノードモジュールと、
前記複数のノード同士を接続するように構成された通信システムと、を備え、
前記複数のクラスタノードモジュールは、複数のシングルノードカーネルモジュールに
よる実行のための命令を、必要に応じて解釈することと翻訳することとを協働して行い、
前記複数のクラスタノードモジュールの少なくとも1つが、結果を前記フロントエンドへ
返す、システム。 - 前記特別目的のマイクロプロセッサは、デジタル信号プロセッサを備える、請求項1に
記載のシステム。 - 前記複数のノードは、2つまたは2つ以上のグループのノードのサブセットとして編成
される、請求項1に記載のシステム。 - 前記2つまたは2つ以上のグループのノードのサブセットは、前記特別目的のマイクロ
プロセッサとデータのやり取りをする、請求項3に記載のシステム。 - 前記特別目的のマイクロプロセッサは、マルチプルプロセッサコアを備える、請求項1
に記載のシステム。 - 前記複数のクラスタノードモジュールの少なくとも1つは、プロセッサキャッシュメモ
リに記憶されている、請求項1に記載のシステム。 - 前記各シングルノードカーネルモジュールは、プロセッサキャッシュメモリに記憶され
ている、請求項1に記載のシステム。 - 1つまたは1つ以上のハードウエアプロセッサ上でコマンドを実行することによって、
フロントエンドから受けた命令を実行するためのシステムであって、
複数のノードであって、各ノードが、シングルノードカーネルモジュールのプログラム
コードを含むコンピュータ可読のメモリ装置にアクセスするように構成された複数のノー
ドを備え、各シングルノードカーネルモジュールは、シングルノードカーネルモジュール
によって受けた命令を、前記ハードウエアプロセッサによって実行可能なコマンドに解釈
し、前記コマンドが、要素のリストから1つまたは1つ以上の要素上で計算が行われるよ
うに構成され、
複数のクラスタノードモジュールであって、前記複数のクラスタノードモジュールが前
記コンピュータ可読のメモリ装置に記憶され、かつ互いに通信して、要素のリスト上で計
算が行われるクラスタとして動作するように、命令を受けるために、シングルノードカー
ネルモジュールおよび1つまたは複数の他のクラスタノードモジュールと通信すること、
前記命令の少なくともいくつかを解釈すること、を行うように構成された、複数のクラス
タノードモジュールと、
前記複数のノード同士を接続するように構成された通信システムと、を備え、
前記複数のクラスタノードモジュールは、複数のシングルノードカーネルモジュールに
よる実行のための命令を、必要に応じて解釈することと翻訳することとを協働して行い、
前記要素のリストが、複数のノードの実行のために分割され、前記複数のクラスタノー
ドモジュールの少なくとも1つが、結果を前記フロントエンドへ返す、システム。 - 前記要素のリストの1つまたは1つ以上の要素が、異なるノードに移行する、請求項8
に記載のシステム。 - コンピュータクラスタにおいてコマンドを評価する方法であって、
ユーザインタフェースまたはスクリプトの少なくとも一方からのコマンドを、前記コン
ピュータクラスタ内の1つまたは複数のクラスタノードモジュールに伝達するステップと
、
前記1つまたは複数のクラスタノードモジュールのそれぞれが、前記コマンドに基づく
メッセージを、前記クラスタノードモジュールに関連付けられた各カーネルモジュールに
伝達するステップと、
前記1つまたは複数のクラスタノードモジュールのそれぞれが、前記クラスタノードモ
ジュールに関連付けられた前記各カーネルモジュールから結果を受け取るステップと、
前記1つまたは複数のクラスタノードモジュールのうちの少なくとも1つが、他のクラ
スタノードモジュールからのメッセージに応答するステップと、を含む方法。 - 前記コマンドに基づくメッセージを、前記クラスタノードモジュールに関連付けられた
各カーネルモジュールに伝達する前記ステップは、特別に識別されたメッセージを前記各
カーネルモジュールに伝達するステップを含む、請求項10に記載の方法。 - 前記クラスタノードモジュールのうちの少なくとも1つが、前記クラスタノードモジュ
ールと同じコンピュータシステムで実行されているユーザインタフェースまたはスクリプ
トのうちの少なくとも一方へ前記結果を転送するステップをさらに含む、請求項10に記
載の方法。 - 前記クラスタノードモジュールのうちの少なくとも1つが、前記結果を、メッセージと
して、1つまたは複数の他のクラスタノードモジュールに伝達するステップをさらに含む
、請求項10に記載の方法。 - 他のクラスタノードモジュールからのメッセージに応答する前記ステップは、
前記他のクラスタノードモジュールからのメッセージを、受信済みメッセージキューに
転送するステップと、
メッセージ受信キュー内の各エントリからのデータを、前記受信済みメッセージキュー
内のエントリと照合するステップと、
前記メッセージ受信キューからのデータを、前記受信済みメッセージキュー内の合致す
るデータと結合するステップと、
前記合致データを完了としてマーキングするステップと、を含む、請求項10に記載の
方法。 - ユーザインタフェースまたはスクリプトの少なくとも一方からのコマンドを、前記コン
ピュータクラスタ内の1つまたは複数のクラスタノードモジュールに伝達する前記ステッ
プは、Mathematicaフロントエンドからの命令を第1のクラスタノードモジュ
ールに伝達するステップを含み、前記第1のクラスタノードモジュールは、前記命令を、
前記コンピュータクラスタで実行されている他のクラスタノードモジュールに転送する、
請求項10に記載の方法。 - 前記第1のクラスタノードモジュールは、メッセージパッシングインタフェースからの
コマンドを用いて、前記命令を、前記コンピュータクラスタで実行されている他のクラス
タノードモジュールに転送する、請求項15に記載の方法。 - 前記1つまたは複数のクラスタノードモジュールのそれぞれは、MathLinkを用
いて、それぞれのカーネルモジュールと通信している、請求項10に記載の方法。 - 複数のノードにおいてMathematicaコードを実行するコンピューティングシ
ステムであって、
第1のノードで実行されている第1のMathematicaカーネルと通信している
、第1のノードモジュールと、
第2のノードで実行されている第2のMathematicaカーネルと通信している
、第2のノードモジュールと、
第3のノードで実行されている第3のMathematicaカーネルと通信している
、第3のノードモジュールと、を備え、
前記第1のノードモジュール、前記第2のノードモジュール、および前記第3のノード
モジュールは、ピアツーピアアーキテクチャを用いて互いに通信するように構成された、
コンピューティングシステム。 - 前記第1のノードモジュール、前記第2のノードモジュール、および前記第3のノード
モジュールのそれぞれは、他のノードモジュールから発せられたメッセージを保持するデ
ータ構造と、メッセージの受信先として期待されるロケーションと、前記メッセージの送
信元として期待されるノードの識別子と、を指定するデータを保持するデータ構造と、を
備える、請求項18に記載のコンピューティングシステム。 - 前記複数のクラスタノードモジュールは、少なくとも3つのクラスタノードモジュール
を備える、請求項1に記載のシステム。
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US81373806P | 2006-06-13 | 2006-06-13 | |
| US60/813,738 | 2006-06-13 | ||
| US85090806P | 2006-10-11 | 2006-10-11 | |
| US60/850,908 | 2006-10-11 | ||
| US11/744,461 | 2007-05-04 | ||
| US11/744,461 US8082289B2 (en) | 2006-06-13 | 2007-05-04 | Cluster computing support for application programs |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014181494A Division JP6014090B2 (ja) | 2006-06-13 | 2014-09-05 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2019128168A Division JP2020009450A (ja) | 2006-06-13 | 2019-07-10 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2017016693A true JP2017016693A (ja) | 2017-01-19 |
Family
ID=38823434
Family Applications (6)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2009515576A Active JP4995902B2 (ja) | 2006-06-13 | 2007-06-07 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2012108306A Pending JP2012216214A (ja) | 2006-06-13 | 2012-05-10 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2014181494A Active JP6014090B2 (ja) | 2006-06-13 | 2014-09-05 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2016185469A Pending JP2017016693A (ja) | 2006-06-13 | 2016-09-23 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2019128168A Pending JP2020009450A (ja) | 2006-06-13 | 2019-07-10 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2022016640A Active JP7451578B2 (ja) | 2006-06-13 | 2022-02-04 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
Family Applications Before (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2009515576A Active JP4995902B2 (ja) | 2006-06-13 | 2007-06-07 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2012108306A Pending JP2012216214A (ja) | 2006-06-13 | 2012-05-10 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2014181494A Active JP6014090B2 (ja) | 2006-06-13 | 2014-09-05 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
Family Applications After (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2019128168A Pending JP2020009450A (ja) | 2006-06-13 | 2019-07-10 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
| JP2022016640A Active JP7451578B2 (ja) | 2006-06-13 | 2022-02-04 | アプリケーションプログラムのためのクラスタコンピューティングのサポート |
Country Status (4)
| Country | Link |
|---|---|
| US (14) | US8082289B2 (ja) |
| EP (2) | EP2027543B1 (ja) |
| JP (6) | JP4995902B2 (ja) |
| WO (1) | WO2007146731A2 (ja) |
Families Citing this family (54)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8812501B2 (en) * | 2005-08-08 | 2014-08-19 | Hewlett-Packard Development Company, L.P. | Method or apparatus for selecting a cluster in a group of nodes |
| WO2007038445A2 (en) | 2005-09-26 | 2007-04-05 | Advanced Cluster Systems, Llc | Clustered computer system |
| US8082289B2 (en) | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
| US8161480B2 (en) * | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
| US8140826B2 (en) * | 2007-05-29 | 2012-03-20 | International Business Machines Corporation | Executing a gather operation on a parallel computer |
| US8122228B2 (en) * | 2008-03-24 | 2012-02-21 | International Business Machines Corporation | Broadcasting collective operation contributions throughout a parallel computer |
| US7991857B2 (en) | 2008-03-24 | 2011-08-02 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
| US8422402B2 (en) | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
| US8161268B2 (en) * | 2008-05-21 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
| US8375197B2 (en) * | 2008-05-21 | 2013-02-12 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
| US8484440B2 (en) | 2008-05-21 | 2013-07-09 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
| US8281053B2 (en) | 2008-07-21 | 2012-10-02 | International Business Machines Corporation | Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations |
| US8140003B2 (en) * | 2008-07-23 | 2012-03-20 | Qualcomm Incorporated | Method and apparatus for supporting multi-hop communications in a peer to peer communication system |
| US8776032B2 (en) * | 2009-01-29 | 2014-07-08 | Microsoft Corporation | Automatic region-based verification of garbage collectors |
| US8341602B2 (en) * | 2009-01-29 | 2012-12-25 | Microsoft Corporation | Automated verification of a type-safe operating system |
| US9110706B2 (en) | 2009-02-09 | 2015-08-18 | Microsoft Technology Licensing, Llc | General purpose distributed data parallel computing using a high level language |
| US8565089B2 (en) | 2010-03-29 | 2013-10-22 | International Business Machines Corporation | Performing a scatterv operation on a hierarchical tree network optimized for collective operations |
| US8332460B2 (en) | 2010-04-14 | 2012-12-11 | International Business Machines Corporation | Performing a local reduction operation on a parallel computer |
| US9424087B2 (en) | 2010-04-29 | 2016-08-23 | International Business Machines Corporation | Optimizing collective operations |
| US8346883B2 (en) | 2010-05-19 | 2013-01-01 | International Business Machines Corporation | Effecting hardware acceleration of broadcast operations in a parallel computer |
| US8949577B2 (en) | 2010-05-28 | 2015-02-03 | International Business Machines Corporation | Performing a deterministic reduction operation in a parallel computer |
| US8489859B2 (en) | 2010-05-28 | 2013-07-16 | International Business Machines Corporation | Performing a deterministic reduction operation in a compute node organized into a branched tree topology |
| US11048492B2 (en) | 2010-08-24 | 2021-06-29 | Oracle International Corporation | Reducing downtime while patching binaries on a cluster |
| US8776081B2 (en) | 2010-09-14 | 2014-07-08 | International Business Machines Corporation | Send-side matching of data communications messages |
| US8566841B2 (en) | 2010-11-10 | 2013-10-22 | International Business Machines Corporation | Processing communications events in parallel active messaging interface by awakening thread from wait state |
| DE102011004363B4 (de) * | 2011-02-18 | 2023-10-05 | Airbus Operations Gmbh | Steuervorrichtung zum Steuern von Netzwerkteilnehmern, Verfahren zum Betreiben eines Computernetzwerks und Computernetzwerk |
| US20120331153A1 (en) * | 2011-06-22 | 2012-12-27 | International Business Machines Corporation | Establishing A Data Communications Connection Between A Lightweight Kernel In A Compute Node Of A Parallel Computer And An Input-Output ('I/O') Node Of The Parallel Computer |
| US8756595B2 (en) * | 2011-07-28 | 2014-06-17 | Yahoo! Inc. | Method and system for distributed application stack deployment |
| US8893083B2 (en) | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
| US8910178B2 (en) | 2011-08-10 | 2014-12-09 | International Business Machines Corporation | Performing a global barrier operation in a parallel computer |
| US9053067B2 (en) * | 2011-09-30 | 2015-06-09 | International Business Machines Corporation | Distributed data scalable adaptive map-reduce framework |
| US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
| US9104525B2 (en) * | 2013-01-22 | 2015-08-11 | Microsoft Technology Licensing, Llc | API usage pattern mining |
| NZ607298A (en) | 2013-02-19 | 2014-08-29 | Allied Telesis Holdings Kk | Improvements in and relating to network communications |
| EP2973042A4 (en) | 2013-03-15 | 2016-11-09 | Uda Llc | HIERARCHICAL PARALLEL MODELS FOR REAL-TIME EXTRACTION OF HIGH-QUALITY INFORMATION FROM DATA STREAMS AND SYSTEM AND METHOD FOR MANUFACTURING THE SAME |
| EP2987090B1 (en) | 2013-04-16 | 2019-03-27 | EntIT Software LLC | Distributed event correlation system |
| US9626261B2 (en) * | 2013-11-27 | 2017-04-18 | Futurewei Technologies, Inc. | Failure recovery resolution in transplanting high performance data intensive algorithms from cluster to cloud |
| CN104765621B (zh) * | 2014-01-02 | 2018-05-01 | 国际商业机器公司 | 一种在集群节点中部署程序的方法和系统 |
| US10205760B2 (en) * | 2014-05-05 | 2019-02-12 | Citrix Systems, Inc. | Task coordination in distributed systems |
| US10142190B2 (en) | 2014-12-10 | 2018-11-27 | Allied Telesis Holdings Kabushiki Kaisha | Management plane network aggregation |
| US9634961B2 (en) | 2014-12-18 | 2017-04-25 | Allied Telesis Holdings Kabushiki Kaisha | Automated configuration of network device |
| US10089384B2 (en) * | 2015-03-12 | 2018-10-02 | Ca, Inc. | Machine learning-derived universal connector |
| US9672064B2 (en) * | 2015-07-13 | 2017-06-06 | Palo Alto Research Center Incorporated | Dynamically adaptive, resource aware system and method for scheduling |
| CN107766076B (zh) * | 2017-11-07 | 2021-02-09 | 西安邮电大学 | 一种概率选择的软件模块聚类方法 |
| US11112972B2 (en) * | 2018-12-05 | 2021-09-07 | Samsung Electronics Co., Ltd. | System and method for accelerated data processing in SSDs |
| US11249874B2 (en) * | 2019-03-20 | 2022-02-15 | Salesforce.Com, Inc. | Content-sensitive container scheduling on clusters |
| DE112020002491T5 (de) * | 2019-05-23 | 2022-04-28 | Hewlett Packard Enterprise Development Lp | System und verfahren zur erleichterung der dynamischen befehlsverwaltung in einer netzwerkschnittstellensteuerung (nic) |
| CN111415007B (zh) * | 2020-03-26 | 2023-01-17 | 中科寒武纪科技股份有限公司 | 一种计算数据的方法、装置、板卡及计算机可读存储介质 |
| KR102951497B1 (ko) | 2021-01-13 | 2026-04-13 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 커널 모듈 로딩 방법 |
| JP7753690B2 (ja) * | 2021-06-15 | 2025-10-15 | 日本電気株式会社 | 情報処理システム、情報処理装置、及びコマンド実行方法 |
| US12107919B2 (en) | 2022-11-02 | 2024-10-01 | Pure Storage, Inc. | Dynamic determination of locks for a prioritized deployment of nodes in a distributed storage system |
| US12182581B2 (en) | 2022-11-02 | 2024-12-31 | Pure Storage, Inc. | Prioritized deployment of nodes in a distributed storage system |
| US12468549B2 (en) | 2023-06-13 | 2025-11-11 | Bank Of America Corporation | Automated system for restarting large scale cluster supercomputers |
| US12452136B1 (en) * | 2024-04-22 | 2025-10-21 | Rockwell Collins, Inc. | Smart radio-based tasking allocation for edge networks |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11126196A (ja) * | 1997-10-23 | 1999-05-11 | Hitachi Ltd | データ転送方法およびそれに適した計算機システム |
| JPH11328134A (ja) * | 1998-05-14 | 1999-11-30 | Hitachi Ltd | 計算機間データ送受信方法 |
| JP2004061359A (ja) * | 2002-07-30 | 2004-02-26 | Ricoh Co Ltd | 画像形成装置用部品の表面粗さ評価方法及び評価システム並びに切削加工方法及び切削加工システム |
| JP2004247405A (ja) * | 2003-02-12 | 2004-09-02 | Semiconductor Energy Lab Co Ltd | 半導体装置 |
Family Cites Families (112)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US53216A (en) * | 1866-03-13 | Improvement in machines for boring hubs | ||
| US49859A (en) * | 1865-09-12 | Improvement in flour-pagkers | ||
| US5423046A (en) * | 1992-12-17 | 1995-06-06 | International Business Machines Corporation | High capacity data storage system using disk array |
| JPH0887473A (ja) | 1994-09-16 | 1996-04-02 | Toshiba Corp | データ処理装置 |
| US5881315A (en) * | 1995-08-18 | 1999-03-09 | International Business Machines Corporation | Queue management for distributed computing environment to deliver events to interested consumers even when events are generated faster than consumers can receive |
| US5930768A (en) | 1996-02-06 | 1999-07-27 | Supersonic Boom, Inc. | Method and system for remote user controlled manufacturing |
| US6128647A (en) | 1996-04-05 | 2000-10-03 | Haury; Harry R. | Self configuring peer to peer inter process messaging system |
| US20050180095A1 (en) * | 1996-11-29 | 2005-08-18 | Ellis Frampton E. | Global network computers |
| US6108699A (en) | 1997-06-27 | 2000-08-22 | Sun Microsystems, Inc. | System and method for modifying membership in a clustered distributed computer system and updating system configuration |
| US6074427A (en) * | 1997-08-30 | 2000-06-13 | Sun Microsystems, Inc. | Apparatus and method for simulating multiple nodes on a single machine |
| US6202080B1 (en) | 1997-12-11 | 2001-03-13 | Nortel Networks Limited | Apparatus and method for computer job workload distribution |
| US6067609A (en) | 1998-04-09 | 2000-05-23 | Teranex, Inc. | Pattern generation and shift plane operations for a mesh connected computer |
| US6195680B1 (en) | 1998-07-23 | 2001-02-27 | International Business Machines Corporation | Client-based dynamic switching of streaming servers for fault-tolerance and load balancing |
| US6229570B1 (en) * | 1998-09-25 | 2001-05-08 | Lucent Technologies Inc. | Motion compensation image interpolation—frame rate conversion for HDTV |
| US6571274B1 (en) | 1998-11-05 | 2003-05-27 | Beas Systems, Inc. | Clustered enterprise Java™ in a secure distributed processing system |
| US6006259A (en) | 1998-11-20 | 1999-12-21 | Network Alchemy, Inc. | Method and apparatus for an internet protocol (IP) network clustering system |
| WO2001001219A2 (en) * | 1999-06-25 | 2001-01-04 | Massively Parallel Computing, Inc. | Massive collective network processing system and methods |
| US6578068B1 (en) | 1999-08-31 | 2003-06-10 | Accenture Llp | Load balancer in environment services patterns |
| US6782537B1 (en) | 1999-09-23 | 2004-08-24 | International Business Machines Corporation | Establishing a communicator across multiple processes in a multithreaded computing environment |
| US6751698B1 (en) | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
| US6546403B1 (en) * | 2000-01-19 | 2003-04-08 | International Business Machines Corporation | Mechanism to resubmit queries in a parallel database system |
| JP2001229145A (ja) * | 2000-02-16 | 2001-08-24 | Oki Systek Tokai Co Ltd | プロセッサ間データ通信方法及び装置 |
| US20010039497A1 (en) | 2000-03-30 | 2001-11-08 | Hubbard Edward A. | System and method for monitizing network connected user bases utilizing distributed processing systems |
| US7254265B2 (en) * | 2000-04-01 | 2007-08-07 | Newsight Corporation | Methods and systems for 2D/3D image conversion and optimization |
| JP2001344199A (ja) | 2000-06-02 | 2001-12-14 | Nec Corp | 分散型処理システム及び方法並びに記録媒体 |
| US7418470B2 (en) * | 2000-06-26 | 2008-08-26 | Massively Parallel Technologies, Inc. | Parallel processing systems and method |
| US6968359B1 (en) | 2000-08-14 | 2005-11-22 | International Business Machines Corporation | Merge protocol for clustered computer system |
| US20020049859A1 (en) * | 2000-08-25 | 2002-04-25 | William Bruckert | Clustered computer system and a method of forming and controlling the clustered computer system |
| CN100525288C (zh) | 2000-10-26 | 2009-08-05 | 普里斯梅迪亚网络有限公司 | 网络中大有效负载分布的方法和装置 |
| US6691216B2 (en) | 2000-11-08 | 2004-02-10 | Texas Instruments Incorporated | Shared program memory for use in multicore DSP devices |
| US20030005068A1 (en) | 2000-12-28 | 2003-01-02 | Nickel Ronald H. | System and method for creating a virtual supercomputer using computers working collaboratively in parallel and uses for the same |
| WO2002069097A2 (en) | 2001-02-24 | 2002-09-06 | International Business Machines Corporation | Efficient implementation of a multidimensional fast fourier transform on a distributed-memory parallel multi-node computer |
| US6526491B2 (en) | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
| US7996592B2 (en) | 2001-05-02 | 2011-08-09 | Nvidia Corporation | Cross bar multipath resource controller system and method |
| US7752423B2 (en) | 2001-06-28 | 2010-07-06 | Intel Corporation | Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor |
| US7249357B2 (en) | 2001-08-20 | 2007-07-24 | Silicon Graphics, Inc. | Transparent distribution and execution of data in a multiprocessor environment |
| US7047533B2 (en) * | 2001-09-10 | 2006-05-16 | Hewlett-Packard Development Company, L.P. | Wait utility and method |
| US20040110209A1 (en) * | 2001-10-17 | 2004-06-10 | Hiroki Yokota | Method for predicting transcription levels |
| WO2003048961A1 (en) | 2001-12-04 | 2003-06-12 | Powerllel Corporation | Parallel computing system, method and architecture |
| EP1318453A1 (en) * | 2001-12-07 | 2003-06-11 | Hewlett-Packard Company | Scheduling system, method and apparatus for a cluster |
| US7093004B2 (en) | 2002-02-04 | 2006-08-15 | Datasynapse, Inc. | Using execution statistics to select tasks for redundant assignment in a distributed computing platform |
| US7376693B2 (en) * | 2002-02-08 | 2008-05-20 | Jp Morgan Chase & Company | System architecture for distributed computing and method of using the system |
| US7136924B2 (en) * | 2002-04-16 | 2006-11-14 | Dean Dauger | Method and system for parallel operation and control of legacy computer clusters |
| NZ518575A (en) | 2002-04-24 | 2004-08-27 | Open Cloud Ltd | Distributed application server using a peer configuration |
| US7502915B2 (en) | 2002-09-30 | 2009-03-10 | Nvidia Corporation | System and method using embedded microprocessor as a node in an adaptable computing machine |
| GB0226289D0 (en) * | 2002-11-11 | 2002-12-18 | Orange Personal Comm Serv Ltd | Telecommunications |
| 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 |
| US6968335B2 (en) * | 2002-11-14 | 2005-11-22 | Sesint, Inc. | Method and system for parallel processing of database queries |
| US7177874B2 (en) | 2003-01-16 | 2007-02-13 | Jardin Cary A | System and method for generating and processing results data in a distributed system |
| US7533141B2 (en) | 2003-01-24 | 2009-05-12 | Sun Microsystems, Inc. | System and method for unique naming of resources in networked environments |
| US7466958B2 (en) * | 2003-02-10 | 2008-12-16 | Educational Testing Service | Equation editor |
| IL155112A0 (en) | 2003-03-27 | 2003-10-31 | Eci Telecom Ltd | Technique for network management |
| US7257681B2 (en) * | 2003-06-11 | 2007-08-14 | Cisco Technology, Inc. | Maintaining entity order with gate managers |
| US20040254984A1 (en) | 2003-06-12 | 2004-12-16 | Sun Microsystems, Inc | System and method for coordinating cluster serviceability updates over distributed consensus within a distributed data system cluster |
| US7533389B2 (en) | 2003-06-20 | 2009-05-12 | Sun Microsystems, Inc. | Dynamic loading of remote classes |
| GB2403560A (en) | 2003-07-02 | 2005-01-05 | Advanced Risc Mach Ltd | Memory bus within a coherent multi-processing system |
| US7716323B2 (en) | 2003-07-18 | 2010-05-11 | Netapp, Inc. | System and method for reliable peer communication in a clustered storage system |
| JP3920818B2 (ja) | 2003-07-22 | 2007-05-30 | 株式会社東芝 | スケジューリング方法および情報処理システム |
| US7526549B2 (en) | 2003-07-24 | 2009-04-28 | International Business Machines Corporation | Cluster data port services for clustered computer system |
| JP3884417B2 (ja) | 2003-08-08 | 2007-02-21 | 株式会社東芝 | クラスタシステム及びサーバプログラム |
| US7015915B1 (en) | 2003-08-12 | 2006-03-21 | Nvidia Corporation | Programming multiple chips from a command buffer |
| US7437460B2 (en) | 2003-08-14 | 2008-10-14 | Oracle International Corporation | Service placement for enforcing performance and availability levels in a multi-node system |
| US7467102B2 (en) * | 2003-09-11 | 2008-12-16 | International Business Machines Corporation | Request type grid computing |
| US7533168B1 (en) | 2003-09-11 | 2009-05-12 | Sun Microsystems, Inc. | Autonomic grid computing mechanism |
| US7493358B2 (en) * | 2003-09-18 | 2009-02-17 | International Business Machines Corporation | Apparatus, system and method of executing monolithic application programs on grid computing systems |
| US20050097300A1 (en) | 2003-10-30 | 2005-05-05 | International Business Machines Corporation | Processing system and method including a dedicated collective offload engine providing collective processing in a distributed computing environment |
| US20050108394A1 (en) * | 2003-11-05 | 2005-05-19 | Capital One Financial Corporation | Grid-based computing to search a network |
| US8612980B2 (en) | 2003-12-04 | 2013-12-17 | The Mathworks, Inc. | Distribution of job in a portable format in distributed computing environments |
| US7406691B2 (en) | 2004-01-13 | 2008-07-29 | International Business Machines Corporation | Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment |
| US7562143B2 (en) | 2004-01-13 | 2009-07-14 | International Business Machines Corporation | Managing escalating resource needs within a grid environment |
| US7289125B2 (en) | 2004-02-27 | 2007-10-30 | Nvidia Corporation | Graphics device clustering with PCI-express |
| US20050235055A1 (en) | 2004-04-15 | 2005-10-20 | Raytheon Company | Graphical user interface for managing HPC clusters |
| US20050251644A1 (en) | 2004-05-06 | 2005-11-10 | Monier Maher | Physics processing unit instruction set architecture |
| US8941668B2 (en) | 2004-06-25 | 2015-01-27 | Nvidia Corporation | Method and system for a scalable discrete graphics system |
| US7663633B1 (en) | 2004-06-25 | 2010-02-16 | Nvidia Corporation | Multiple GPU graphics system for implementing cooperative graphics instruction execution |
| US7757236B1 (en) | 2004-06-28 | 2010-07-13 | Oracle America, Inc. | Load-balancing framework for a cluster |
| US8601101B1 (en) * | 2004-06-28 | 2013-12-03 | Oracle America, Inc. | Cluster communications framework using peer-to-peer connections |
| US7908313B2 (en) | 2004-07-21 | 2011-03-15 | The Mathworks, Inc. | Instrument-based distributed computing systems |
| US7937455B2 (en) | 2004-07-28 | 2011-05-03 | Oracle International Corporation | Methods and systems for modifying nodes in a cluster environment |
| US20060026601A1 (en) | 2004-07-29 | 2006-02-02 | Solt David G Jr | Executing commands on a plurality of processes |
| US20060053216A1 (en) * | 2004-09-07 | 2006-03-09 | Metamachinix, Inc. | Clustered computer system with centralized administration |
| US8397224B2 (en) | 2004-09-13 | 2013-03-12 | The Mathworks, Inc. | Methods and system for executing a program in multiple execution environments |
| US7215356B2 (en) * | 2004-10-05 | 2007-05-08 | Wintek Corporation | 3D stereo display method and a device thereof |
| US8117288B2 (en) | 2004-10-12 | 2012-02-14 | International Business Machines Corporation | Optimizing layout of an application on a massively parallel supercomputer |
| US7542981B2 (en) | 2004-10-29 | 2009-06-02 | Massachusetts Institute Of Technology | Methods and apparatus for parallel execution of a process |
| US7814462B2 (en) | 2004-10-29 | 2010-10-12 | Massachusetts Institute Of Technology | Methods and apparatus for parallel execution of a process |
| US7433931B2 (en) * | 2004-11-17 | 2008-10-07 | Raytheon Company | Scheduling in a high-performance computing (HPC) system |
| US7275123B2 (en) | 2004-12-06 | 2007-09-25 | Nvidia Corporation | Method and apparatus for providing peer-to-peer data transfer within a computing environment |
| FR2881306B1 (fr) | 2005-01-21 | 2007-03-23 | Meiosys Soc Par Actions Simpli | Procede de journalisation non intrusive d'evenements externes aupres d'un processus applicatif, et systeme mettant en oeuvre ce procede |
| US7698390B1 (en) | 2005-03-29 | 2010-04-13 | Oracle America, Inc. | Pluggable device specific components and interfaces supported by cluster devices and systems and methods for implementing the same |
| EP1715405A1 (en) | 2005-04-19 | 2006-10-25 | STMicroelectronics S.r.l. | Processing method, system and computer program product for dynamic allocation of processing tasks in a multiprocessor cluster platforms with power adjustment |
| US8028299B2 (en) | 2005-04-21 | 2011-09-27 | Waratek Pty, Ltd. | Computer architecture and method of operation for multi-computer distributed processing with finalization of objects |
| JP4533251B2 (ja) | 2005-06-09 | 2010-09-01 | キヤノン株式会社 | 情報処理システムおよびジョブ割り当て方法 |
| US8719825B2 (en) | 2005-08-17 | 2014-05-06 | Sap Ag | Prompting for execution or delay of scheduled job |
| US7747981B2 (en) * | 2005-09-23 | 2010-06-29 | Wolfram Research, Inc. | Method of dynamically linking objects operated on by a computational system |
| WO2007038445A2 (en) | 2005-09-26 | 2007-04-05 | Advanced Cluster Systems, Llc | Clustered computer system |
| US7818623B2 (en) * | 2005-10-25 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | Kernel debugging in a cluster computing system |
| US7634530B2 (en) | 2005-11-10 | 2009-12-15 | The Mathworks, Inc. | Dynamic definition for concurrent computing environments |
| US7469309B1 (en) | 2005-12-12 | 2008-12-23 | Nvidia Corporation | Peer-to-peer data transfer method and apparatus with request limits |
| US7861060B1 (en) | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
| US8074224B1 (en) | 2005-12-19 | 2011-12-06 | Nvidia Corporation | Managing state information for a multi-threaded processor |
| US7644130B2 (en) | 2005-12-30 | 2010-01-05 | Intel Corporation | Method and apparatus for transparent selection of alternate network interfaces in a message passing interface (“MPI”) implementation |
| WO2007096816A2 (en) * | 2006-02-27 | 2007-08-30 | Koninklijke Philips Electronics N.V. | Rendering an output image |
| US9405564B2 (en) | 2006-05-10 | 2016-08-02 | The Mathworks, Inc. | System and method for targeting commands to concurrent computing units executing a concurrent computing process |
| US8082289B2 (en) * | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
| US7562174B2 (en) | 2006-06-15 | 2009-07-14 | Nvidia Corporation | Motherboard having hard-wired private bus between graphics cards |
| US8539207B1 (en) | 2006-11-03 | 2013-09-17 | Nvidia Corporation | Lattice-based computations on a parallel processor |
| US8321849B2 (en) | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
| US8407580B2 (en) * | 2007-04-09 | 2013-03-26 | Wolfram Research, Inc. | Method and system for presenting input expressions and evaluations of the input expressions on a workspace of a computational system |
| US7827024B2 (en) | 2007-05-09 | 2010-11-02 | International Business Machines Corporation | Low latency, high bandwidth data communications between compute nodes in a parallel computer |
| US7627744B2 (en) | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
| US8134591B2 (en) * | 2008-05-07 | 2012-03-13 | Eastman Kodak Company | Display using bidirectionally scanned linear modulator |
-
2007
- 2007-05-04 US US11/744,461 patent/US8082289B2/en active Active
- 2007-06-07 WO PCT/US2007/070585 patent/WO2007146731A2/en not_active Ceased
- 2007-06-07 EP EP07812046.6A patent/EP2027543B1/en active Active
- 2007-06-07 JP JP2009515576A patent/JP4995902B2/ja active Active
- 2007-06-07 EP EP17207443.7A patent/EP3379414A1/en active Pending
-
2008
- 2008-02-29 US US12/040,519 patent/US8140612B2/en active Active
-
2009
- 2009-05-13 US US12/465,519 patent/US8402083B2/en active Active
-
2012
- 2012-03-16 US US13/423,063 patent/US8676877B2/en active Active
- 2012-05-10 JP JP2012108306A patent/JP2012216214A/ja active Pending
-
2014
- 2014-02-14 US US14/181,112 patent/US10333768B2/en active Active
- 2014-09-05 JP JP2014181494A patent/JP6014090B2/ja active Active
-
2016
- 2016-09-23 JP JP2016185469A patent/JP2017016693A/ja active Pending
-
2019
- 2019-06-21 US US16/449,084 patent/US11128519B2/en active Active
- 2019-07-10 JP JP2019128168A patent/JP2020009450A/ja active Pending
-
2021
- 2021-07-13 US US17/374,864 patent/US11563621B2/en active Active
- 2021-07-13 US US17/374,789 patent/US11570034B2/en active Active
-
2022
- 2022-02-04 JP JP2022016640A patent/JP7451578B2/ja active Active
-
2023
- 2023-01-23 US US18/158,283 patent/US11811582B2/en active Active
- 2023-10-02 US US18/479,720 patent/US12021679B1/en active Active
-
2024
- 2024-05-16 US US18/666,632 patent/US20250147817A1/en active Pending
-
2025
- 2025-01-17 US US19/030,175 patent/US20250173195A1/en active Pending
- 2025-01-17 US US19/030,316 patent/US20250173196A1/en active Pending
- 2025-01-17 US US19/030,706 patent/US20250173197A1/en active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11126196A (ja) * | 1997-10-23 | 1999-05-11 | Hitachi Ltd | データ転送方法およびそれに適した計算機システム |
| JPH11328134A (ja) * | 1998-05-14 | 1999-11-30 | Hitachi Ltd | 計算機間データ送受信方法 |
| JP2004061359A (ja) * | 2002-07-30 | 2004-02-26 | Ricoh Co Ltd | 画像形成装置用部品の表面粗さ評価方法及び評価システム並びに切削加工方法及び切削加工システム |
| JP2004247405A (ja) * | 2003-02-12 | 2004-09-02 | Semiconductor Energy Lab Co Ltd | 半導体装置 |
Non-Patent Citations (3)
| Title |
|---|
| 小西 克巳,外1名: "「PCグリッド上でのMATLAB分散計算と評価」", 情報処理学会研究報告, vol. 第2005巻,第84号, JPN6017035263, 5 August 2005 (2005-08-05), pages 31 - 36, ISSN: 0003988018 * |
| 建部 修見,外3名: "「リモートメモリ書き込みを用いたMPIの効率的実装」", 情報処理学会論文誌, vol. 第40巻,第5号, JPN6017035265, 15 May 1999 (1999-05-15), pages 2246 - 2255, ISSN: 0003988019 * |
| 松村 博光,外2名: "「通信ブロックの軽減を考慮した大規模行列における分散処理システムの設計」", 情報処理学会研究報告, vol. 第98巻,第18号, JPN6017035260, 5 March 1998 (1998-03-05), pages 19 - 24, ISSN: 0003988017 * |
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7451578B2 (ja) | アプリケーションプログラムのためのクラスタコンピューティングのサポート | |
| Bischl et al. | BatchJobs and BatchExperiments: Abstraction mechanisms for using R in batch environments | |
| Eckstein et al. | Pebbl: an object-oriented framework for scalable parallel branch and bound | |
| Li et al. | {MilliSort} and {MilliQuery}:{Large-Scale}{Data-Intensive} Computing in Milliseconds | |
| Perumalla et al. | Discrete event execution with one-sided and two-sided gvt algorithms on 216,000 processor cores | |
| Kalyanaraman et al. | Implementing hadoop container migrations in OpenNebula private Cloud Environment | |
| Kalnis et al. | Mizan: Optimizing graph mining in large parallel systems | |
| Lee et al. | An Optimal Network-Aware Scheduling Technique for Distributed Deep Learning in Distributed HPC Platforms. Electronics 2023, 12, 3021 | |
| Kim et al. | HetCCL: Accelerating LLM Training with Heterogeneous GPUs | |
| Crafa et al. | Actors vs Shared Memory: two models at work on Big Data application frameworks | |
| Singh et al. | Computer Science & Engineering | |
| Saha | Review of Parallel Computing | |
| Revathi | Performance tuning and scheduling of large data set analysis in map reduce paradigm by optimal configuration using Hadoop | |
| Lobo | Group Communication for Large Scale Computing Projects |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161021 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161116 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7426 Effective date: 20161213 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20161214 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170914 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170913 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171214 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180328 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20180604 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180925 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20190312 |
