説明

ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、およびプログラム

【課題】ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、および製品を提供する。
【解決手段】ハイブリッド・コンピューティング環境におけるデータ処理であって、このハイブリッド・コンピューティング環境が、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ110と、アクセレレータ・アーキテクチャ104を有するアクセレレータ・アーキテクチャとを含み、ホスト・コンピュータおよびアクセレレータが、システム・レベル・メッセージ伝達モジュールによって相互にデータ通信を行うように適合され、ホスト・コンピュータ上でホスト・アプリケーション・プロセス167が実行している。ホスト・アプリケーション・プロセスの命令で、アクセレレータ上で実行スレッドを開始するステップと、ホスト・アプリケーション・プロセスによってアクセレレータ上で実行スレッドを管理するステップ等を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の分野はデータ処理であり、更に具体的には、ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、および製品に関する。
【背景技術】
【0002】
1948年のEDVACコンピュータ・システムの開発は、コンピュータ時代の幕開けと言われることが多い。以来、コンピュータ・システムは極めて複雑なデバイスへと進化している。今日のコンピュータは、EDVAC等の初期のシステムに比べ、はるかに洗練されている。コンピュータ・システムは通常、ハードウェアおよびソフトウェア・コンポーネント、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入出力(「I/O」)デバイス等の組み合わせを含む。半導体処理およびコンピュータ・アーキテクチャにおける進歩によってコンピュータの性能がますます高まるにつれて、いっそう洗練されたコンピュータ・ソフトウェアが生まれ、これがハードウェアの性能向上を利用するようになり、結果として、今日のコンピュータ・システムは、わずか数年前に比べてもはるかに強力なものとなっている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
今日のコンピュータ・システムの進歩により、今や、一部のコンピューティング環境は、異なるアーキテクチャのコア・コンポーネントを含み、それらが共に動作してデータ処理タスクを完了するまでになっている。かかるコンピューティング環境を、本明細書においては、「ハイブリッド」環境と記載する。これは、かかる環境が、異なるアーキテクチャを有するホスト・コンピュータおよびアクセレレータを含むことを示す。ハイブリッド・コンピューティング環境は、多くの非ハイブリッド・コンピューティング環境に比べ、データ処理においていっそう計算的に強力かつ効率的であるが、かかるハイブリッド・コンピューティング環境には、自動コンピューティング機械科学に対する大きな課題がある。
【課題を解決するための手段】
【0004】
ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、および製品。このハイブリッド・コンピューティング環境は、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータと、アクセレレータ・アーキテクチャを有するアクセレレータ・アーキテクチャと、を含み、アクセレレータ・アーキテクチャが、特定クラスのコンピューティング機能の実行速度についてホスト・コンピュータ・アーキテクチャに対して最適化され、ホスト・コンピュータおよびアクセレレータが、システム・レベル・メッセージ伝達モジュールによって相互にデータ通信を行うように適合され、ホスト・コンピュータ上でホスト・アプリケーション・プロセスが実行する。
【0005】
本発明の実施形態に従った、かかるハイブリッド・コンピューティング環境におけるデータ処理は、ホスト・アプリケーション・プロセスの命令で、システム・レベル・メッセージ伝達モジュールによって、アクセレレータ上で実行スレッドを開始するステップと、システム・レベル・メッセージ伝達モジュールによって、ホスト・アプリケーション・プロセスに対して、実行スレッドのためのプロセス識別子(「PID」)を戻すステップと、実行スレッドがホスト・コンピュータ上の実行スレッドであるかのように、ホスト・アプリケーション・プロセスによってアクセレレータ上で実行スレッドを管理する、ステップと、を含む。
【0006】
本発明の前述およびその他の目的、機構、および利点は、添付図面に示した本発明の例示的な実施形態の以下の具体的な説明から、明らかとなろう。図面において、同様の参照番号は概ね本発明の例示的な実施形態の同様の部分を表す。
【図面の簡単な説明】
【0007】
【図1】本発明の実施形態に従ったデータ処理に有用な一例のハイブリッド・コンピューティング環境の図である。
【図2】本発明の実施形態に従ったデータ処理に有用な例示的なハイブリッド・コンピューティング環境のブロック図を示す。
【図3】本発明の実施形態に従ったデータ処理に有用な更に別の例示的なハイブリッド・コンピューティング環境のブロック図を示す。
【図4】本発明の実施形態に従ったデータ処理に有用な更に別の例示的なハイブリッド・コンピューティング環境のブロック図を示す。
【図5】本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理の例示的な方法を示すフロー・チャートを示す。
【図6】本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理の別の例示的な方法を示すフロー・チャートを示す。
【図7】本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理の更に別の例示的な方法を示すフロー・チャートを示す。
【図8】本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理の更に別の例示的な方法を示すフロー・チャートを示す。
【図9】本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理の更に別の例示的な方法を示すフロー・チャートを示す。
【図10】本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理の更に別の例示的な方法を示すフロー・チャートを示す。
【発明を実施するための形態】
【0008】
本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理のための例示的な方法、装置、および製品について、図1からの添付図面を参照して説明する。図1は、本発明の実施形態に従ったデータ処理に有用な一例のハイブリッド・コンピューティング環境(100)の図を示す。「ハイブリッド・コンピューティング環境」という言葉は、本明細書において用いる場合、コンピュータ・メモリに動作的に結合された複数のコンピュータ・プロセッサを含むコンピューティング環境であり、メモリに記憶されプロセッサ上で実行されるコンピュータ・プログラム命令の実行という形態でデータ処理を実施する。更に、図1の例におけるハイブリッド・コンピューティング環境(100)は、アクセレレータ・アーキテクチャを有するアクセレレータと協同して動作するホスト・アーキテクチャを有する少なくとも1つのホスト・コンピュータを含み、この場合、ホスト・アーキテクチャおよびアクセレレータ・アーキテクチャは異なるアーキテクチャである。この例におけるホストおよびアクセレレータのアーキテクチャを特徴付けるのは、アーキテクチャ・レジスタ、すなわち、各アーキテクチャ上で実行するコンピュータ・プログラム命令によってアクセス可能なレジスタであり、例えば、命令レジスタ、プログラム・カウンタ、メモリ・インデックス・レジスタ、スタック・ポインタ等のレジスタである。すなわち、2つのアーキテクチャのアーキテクチャ・レジスタ間で、数、種類、構造、および関係は異なるので、ハイブリッド・コンピューティング環境のホスト・コンピュータ上で実行するためにコンパイルされたコンピュータ・プログラム命令は、通常、ハイブリッド・コンピューティング環境のいずれかの関連するアクセレレータによってネイティブに(natively)実行することはできない。
【0009】
ハイブリッド・コンピューティング環境の例は、データ処理システムを含む。このシステムは、各々がx86プロセッサを有する1つ以上のホスト・コンピュータと、アーキテクチャ・レジスタがPowerPC命令セットを実施するアクセレレータと、を含む。ホスト・コンピュータにおいてx86プロセッサ上で実行するためにコンパイルされたコンピュータ・プログラム命令は、アクセレレータにおけるPowerPCによってネイティブに実行することはできない。更に、本明細書において記載する例示的なハイブリッド・コンピューティング環境のいくつかは、LANL(Los Alamos National Laboratory:ロスアラモス国立研究所)ロードランナー・プロジェクト(ニューメキシコの州の鳥から名付けられた)において開発されたLANLスーパーコンピュータ・アーキテクチャに基づいたものであることは、読者には認められよう。このスーパーコンピュータ・アーキテクチャは、最初に「ペタフロップ(petaflop)」すなわち毎秒1000兆回の浮動小数点演算を実行したことが有名である。LANLスーパーコンピュータ・アーキテクチャは、デュアル・コアAMD Opteronプロセッサを有する多くのホスト・コンピュータを含み、これらは、異なるアーキテクチャを有するIBM Cellプロセッサ、Opteronプロセッサ、およびCellプロセッサを有する多くのアクセレレータに結合されている。
【0010】
図1の例示的なハイブリッド・コンピューティング環境(100)は、複数のコンピュータ・ノード(102)、I/Oノード(108)、およびサービス・ノード(112)を含む。コンピュータ・ノード(102)は、相互に、ならびにI/Oノード(108)およびサービス・ノード(112)とデータ通信を行うために、ネットワーク(101)を介して結合されている。データ通信ネットワーク(101)は、イーサネット、インターネット・プロトコル(「IP」)、PCIe、インフィニバンド(Infiniband)、ファイバ・チャネル、または当業者に想起されるような他のネットワークとして実施することができる。
【0011】
図1の例示的なハイブリッド・コンピューティング環境(100)において、コンピュータ・ノードは、主要なユーザ・レベルのコンピュータ・プログラム実行を実施し、サービス・ノード(112)上で実行しているサービス・アプリケーション(124)から初期プログラム・ロード等の管理サービスを受容し、I/Oノード(108)を介してデータ記憶装置(116)およびI/O機能(118、120)に対するアクセスを得る。図1の例では、I/Oノード(118)は、高速イーサネットまたは当業者に想起されるような別の構造(fabric)タイプのデータ通信構造を用いて実施されるローカル・エリア・ネットワーク(「LAN」)(114)を介して、データ通信のために、I/Oデバイス(116、118、120)に接続されている。図1の例のハイブリッド・コンピューティング環境(100)におけるI/Oデバイスは、データ記憶デバイス(116)の形態のコンピューティング環境用の不揮発性メモリ、プリンタ(118)の形態のハイブリッド・コンピューティング環境用の出力デバイス、およびコンピュータ端末(120)の形態のユーザ(126)I/Oを含む。コンピュータ端末(120)は、サービス・アプリケーション・インタフェース(122)を実行し、このインタフェース(122)は、ハイブリッド・コンピューティング環境においてコンピュータ・ノードを構成するため、および、このコンピュータ・ノードによる主要なユーザ・レベルのコンピュータ・プログラム命令の実行を開始するためのインタフェースをユーザに与える。
【0012】
図1の例において、各コンピュータ・ノードは、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(110)と、アクセレレータ・アーキテクチャを有する1つ以上のアクセレレータ(104)と、を含む。ホスト・コンピュータ(110)は、コンピュータ・ノードと、いずれかの特定のコンピュータ・ノードの外部にあるハイブリッド・コンピューティング環境の他のコンポーネントとの間のインタフェース機能を実行するホスト・コンピュータであるという意味で、「ホスト」である。すなわち、これは、初期ブート手順、自己診断の起動、基本的なI/O機能を実行し、サービス・ノードからユーザ・レベルのプログラム・ロードを受容するホスト・コンピュータである。アクセレレータ(104)は、各アクセレレータが、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されたアクセレレータ・アーキテクチャを有するという点で、「アクセレレータ」である。かかる加速されたコンピューティング機能は、例えば、ベクトル処理、浮動小数点演算、および当業者に想起されるような他のものを含む。
【0013】
図1の例のコンピュータ・ノードの各々がホスト・コンピュータおよびアクセレレータを含むので、各コンピュータ・ノードが、図1の大きなハイブリッド・コンピューティング環境(100)内でのもっと小さな別個のハイブリッド・コンピューティング環境を表すことは、当業者には認められよう。すなわち、コンピュータ・ノード(102)の組み合わせがハイブリッド・コンピューティング環境(100)を形成することができるだけでなく、個々の各コンピュータ・ノードも、もっと小さい別個のハイブリッド・コンピューティング環境として見ることができる。そして、図1の例のハイブリッド・コンピューティング環境(100)は、各コンピュータ・ノードについて1つずつ、9個の別個の小さいハイブリッド・コンピューティング環境から成るものとして見ることができ、これらが共に図1のハイブリッド・コンピューティング環境(100)を形成する。
【0014】
図1の各コンピュータ・ノード(102)内で、ホスト・コンピュータ(110)および1つ以上のアクセレレータ(104)は、システム・レベル・メッセージ伝達モジュール(「SLMPM:system level message passing module」)(146)によって、および、少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(106、107)によって相互にデータ通信を行うように適合されている。SLMPM(146)は、ホスト・コンピュータ(110)とアクセレレータ(104)との間でメッセージ・ベースのデータ通信を行うためにユーザ・レベルのアプリケーションに対してアプリケーション・プログラミング・インタフェース(「API」)を提示するコンピュータ・プログラム命令のモジュールまたはライブラリである。本発明の実施形態に従ってSLMPMとして用いるために実施可能なメッセージ・ベースのデータ通信ライブラリの例は、以下を含む。
・メッセージ伝達インタフェースすなわち「MPI」。最初にSupercomputing 1994で発表され、いかなる主要標準団体によっても認可されていない2つのバージョンの業界標準インタフェース。
・LANLスーパーコンピュータのデータ通信および同期インタフェース(「DACS」)。
・POSIXスレッド・ライブラリ(「Pthread」)、すなわち分散マルチスレッド処理のためのIEEE標準。
・オープン・マルチプロセッシング・インタフェース(「OpenMP」)、すなわち並列プログラミングのための業界認定仕様。
・当業者に想起される他のライブラリ。
【0015】
データ通信構造(106、107)は、ホスト・コンピュータとアクセレレータとの間でデータ通信結合を実施するデータ通信ハードウェアおよびソフトウェアの構成である。データ通信構造タイプの例は、当業者に想起されるような、周辺機器相互接続(「PCI」)、PCIe(PCI express)、イーサネット、インフィニバンド、ファイバ・チャネル、SCSI(Small Computer System Interface)、eSATA(External Serial Advanced Technology Attachment)、USB(Universal Serial Bus)等を含む。
【0016】
図1の例示的なハイブリッド・コンピューティング環境(100)において、ホスト・コンピュータ(110)上で、ホスト・アプリケーション・プロセス(167)が実行している。本明細書において用いる場合、「プロセス」という言葉は、同時にいくつかのコンピュータ・プログラムを実行するように構成されたコンピュータ・アーキテクチャ上で順次実行されるコンピュータ・プログラムのインスタンスである。ホスト・アプリケーション・プロセスは、ホスト・コンピュータ(110)上で実行されているホスト・アプリケーションのインスタンスである。本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理を実行するには、ホスト・アプリケーション・プロセス(167)の命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ(104)上で実行スレッド(169)を開始し、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセス(167)に対して、実行スレッド(169)のためのプロセス識別子(「PID」)を戻し、次いで、実行スレッド(169)がホスト・コンピュータ(110)上の実行スレッドであるかのように、ホスト・アプリケーション・プロセス(167)によってアクセレレータ(104)上で実行スレッド(169)を管理すれば良い。本明細書において用いる場合、実行スレッドという言葉は、コンピュータ・プログラム実行の基本的な単位を指す。スレッドは、コンピュータ・プログラムが、それ自体を2つ以上の同時にまたは擬似同時に動作するタスクに分割するための方法である。単一のプロセスは、同時に動作するいくつかのスレッドを有することができる。スレッドの各々は、イベントを待つこと、または、プロセスが継続実行を完了させる必要がない時間のかかるタスクを実行すること等、異なるタスクを実行する。スレッド実行が完了すると、すなわち実行スレッドによって行われたタスクが終了すると、スレッドは通常中断されるか破棄される。
【0017】
図1に示すようなハイブリッド・コンピューティング環境(100)を構成するコンピュータ・ノード、データ通信構造、ネットワーク、I/Oデバイス、サービス・ノード、I/Oノード等の配置は、単なる例示であり、本発明を限定するものではない。本発明の実施形態に従ったデータ処理を行うことができるハイブリッド・コンピューティング環境は、当業者に想起されるような、図1に示さない追加のノード、ネットワーク、デバイス、およびアーキテクチャを含むことができる。図1の例におけるハイブリッド・コンピューティング環境(100)は、コンピュータ・ノード(102)を9個のみ含むが、本発明の実施形態に従ったハイブリッド・コンピューティング環境がいかなる数のコンピュータ・ノードも含み得ることを、読者は留意すべきである。多数のコンピュータ・ノードを有するハイブリッド・コンピューティング環境の一例として挙げたLANLスーパーコンピュータは、この記述の時点で、12,000を超えるコンピュータ・ノードを含む。かかるハイブリッド・コンピューティング環境におけるネットワークおよびデータ通信構造は、例えばTCP(伝送制御プロトコル)、IP(インターネット・プロトコル)、および当業者に想起されるような他のものを含む多くのデータ通信プロトコルをサポートすることができる。図1に示すものに加えて、多種多様なハードウェア・プラットフォーム上で、本発明の様々な実施形態を実施することができる。
【0018】
更に説明を行うため、図2は、本発明の実施形態に従ったデータ処理に有用な例示的なハイブリッド・コンピューティング環境(100)のブロック図を示す。図2のハイブリッド・コンピューティング環境(100)は、4つのコンピュータ・ノードを含む。図1のコンピュータ・ノードと同様、図2の例のコンピュータ・ノードの各々は、小さい別個のハイブリッド・コンピューティング環境となることができ、これらが共にもっと大きなハイブリッド・コンピューティング環境を構成する。図2の例において、かかるハイブリッド・コンピューティング環境(100)のいっそう詳しい説明に役立てるため、1つのコンピュータ・ノード(103)を拡大図で示す。コンピュータ・ノード(103)の拡大図に示すように、図2の例のコンピュータ・ノード(102、103)の各々は、ホスト・コンピュータ(110)を含む。ホスト・コンピュータ(110)は、高速メモリ・バス(153)を介してコンピュータ・メモリすなわちランダム・アクセス・メモリ(「RAM」)(142)に動作的に結合されたコンピュータ・プロセッサ(152)を含む。各ホスト・コンピュータ(110)のプロセッサ(152)は、ホスト・コンピュータ・アーキテクチャを規定する1組のアーキテクチャ・レジスタ(154)を有する。
【0019】
また、コンピュータ・ノードの各々は、1つ以上のアクセレレータ(104、105)を含む。各アクセレレータ(104、105)は、高速メモリ・バス(151)を介してRAM(140)に動作的に結合されたコンピュータ・プロセッサ(148)を含む。ホスト・コンピュータおよびアクセレレータ(104、105)のRAM(140、142)には、オペレーティング・システム(145)が記憶されている。本発明の実施形態に従ったハイブリッド・コンピューティング環境のホスト・コンピュータおよびアクセレレータに有用なオペレーティング・システムは、UNIX(TM)、Linux(TM)、Microsoft XP(TM)、MicrosoftVista(TM)、Microsoft NT(TM)、AIX(TM)、IBM社のi5/OS(TM)、および当業者に想起される他のものを含む。ホスト・コンピュータにおけるオペレーティング・システムが、アクセレレータ上で用いられるオペレーティング・システムと同一である必要はない。
【0020】
各アクセレレータ(104、105)のプロセッサ(148)は、アクセレレータ・アーキテクチャを規定する1組のアーキテクチャ・レジスタ(150)を有する。各アクセレレータのプロセッサ(148)のアーキテクチャ・レジスタ(150)は、ホスト・コンピュータ(110)におけるプロセッサ(152)のアーキテクチャ・レジスタ(154)とは異なる。異なるアーキテクチャを用いてホスト・コンピュータおよびアクセレレータが同一の命令セットをサポートすることは、可能であるが、珍しいことである。このため、アクセレレータ(104)のプロセッサ(148)上で実行するためにコンパイルされたコンピュータ・プログラム命令は、概して、ホスト・コンピュータ(110)のプロセッサ(152)上でネイティブに実行することは予想されておらず、その逆も同様である。更に、ホスト・プロセッサとアクセレレータとの間のハードウェア・アーキテクチャにおける一般的な相違のため、アクセレレータがホストの命令セットをサポートする場合であっても、ホスト・コンピュータ(110)のプロセッサ(152)上で実行するためにコンパイルされたコンピュータ・プログラム命令は、概して、アクセレレータ(104)のプロセッサ(148)上でネイティブに実行することは予想されていない。図2の例におけるアクセレレータ・アーキテクチャは、ホスト・コンピュータ・アーキテクチャに対して、特定クラスのコンピューティング機能の実行速度について最適化されている。すなわち、アクセレレータが最適化されている機能または複数の機能について、これらの機能の実行は、ホスト・コンピュータのプロセッサ上で実行された場合よりも、アクセレレータ上での方が、高速に進行する。
【0021】
図2の例において、ホスト・コンピュータ(110)およびアクセレレータ(104、105)は、システム・レベル・メッセージ伝達モジュール(「SLMPM」)(146)によって、および、少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(128、130)によって相互にデータ通信を行うように適合されている。この例では、ホスト・コンピュータ(110)とアクセレレータ(104)との間でメッセージ・ベースのデータ通信をサポートするため、ホスト・コンピュータ(110)およびアクセレレータ(104)は双方ともSLMPM(146)を有し、データ通信用のいずれかの結合の双方の側において、メッセージ・ベースの通信の発信および受信の双方が可能となっている。また、図2の例において、ホスト・コンピュータ(110)およびアクセレレータ(104、105)は、PCIe通信アダプタ(160)を用いてPCIe構造(130)によって、およびイーサネット通信アダプタ(161)を用いてイーサネット構造(128)によって、相互にデータ通信を行うように適合されている。PCIeおよびイーサネットの使用は説明のためであり、本発明を限定するものではない。本発明の実施形態に従ったハイブリッド・コンピューティング環境が、例えばPCI、インフィニバンド、ファイバ・チャネル、SCSI、eSATA、USB等のような他の構造タイプの構造を含むことができることは、当業者には容易に認められよう。
【0022】
この例におけるSLMPM(146)は、概して、本発明の実施形態に従ったハイブリッド・コンピューティング環境(100)におけるデータ処理のために動作する際には、ホスト・コンピュータ(110)とアクセレレータ(104、105)との間の複数のデータ通信モードについてデータ通信性能を監視し、ホスト・コンピュータからアクセレレータにデータ通信モードに従ってデータを送信するための要求(168)を受信し、要求されたデータ通信モードに従ってデータを送信するか否かを判定し、要求されたデータ通信モードに従ってデータを送信しない場合、別のデータ通信モードを選択して、この選択したデータ通信モードに従ってデータを送信する。図2の例においては、監視した性能は、コンピュータ・ノード(103)の動作中にホスト・コンピュータ(110)のRAM(142)にSLMPM(146)によって記憶された監視性能データ(174)として示す。
【0023】
データ通信モードは、データ通信構造タイプ、データ通信リンク、およびデータ通信プロトコル(178)を指定する。データ通信リンク(156)は、ホスト・コンピュータとアクセレレータとのアダのデータ通信接続である。図2の例では、ホスト・コンピュータ(110)とアクセレレータ(104)との間のリンク(156)は、PCIe接続(138)またはイーサネット・ネットワーク(106)を介したイーサネット接続(131、132)を含むことができる。図2の例におけるホスト・コンピュータ(110)とアクセレレータ(105)との間のリンク(156)は、PCIe接続(136)またはイーサネット・ネットワーク(106)を介したイーサネット接続(131、134)を含むことができる。図2の例において、ホスト・コンピュータとアクセレレータとの間に各構造タイプごとに1つのみのリンクを示すが、各構造タイプごとに任意の数のリンクが存在し得ることは、当業者には容易に認められよう。
【0024】
データ通信プロトコルは、ホスト・コンピュータ(110)からアクセレレータ(104)に情報を送信するために必要なデータ表現、信号方式、認証、およびエラー検出のための1組の標準的なルールである。図2の例においては、SLMPM(146)が、ホスト・コンピュータ(110)とアクセレレータとの間のデータ通信のためのいくつかのプロトコル(178)の1つを選択することができる。かかるプロトコル(178)の例は、送信および受信動作(181)によって実行される共有メモリ転送(「SMT」)(180)、ならびに、PUTおよびGET動作(183)によって実行される直接メモリ・アクセス(「DMA」)(182)を含む。
【0025】
共有メモリ転送は、ホスト・コンピュータとアクセレレータとの間のデータを、かかる目的のために割り当てら得た共有メモリ空間(158)内に伝達して、いずれの時点でもメモリ内に1つのみのデータ・インスタンスが存在するようにするためのデータ通信プロトコルである。図2のホスト・コンピュータ(110)とアクセレレータ(104)との間の例示的な共有メモリ転送として、以下について考察する。SMT(180)プロトコルに従って、アプリケーション(166)が、ホスト・コンピュータ(110)からアクセレレータ(104)へのデータ(176)の送信を要求する(168)。かかる要求(168)は、かかる共有メモリに割り当てられたメモリ・アドレスを含むことができる。この例では、共有メモリ・セグメント(158)はアクセレレータ(104)上のメモリ位置に例示されているが、共有メモリ・セグメントは、アクセレレータ(104)上、ホスト・コンピュータ(110)上、またはホスト・コンピュータおよびアクセレレータの双方の上、または、このセグメントがホストおよびアクセレレータによって必要な場合にアクセス可能である限り、完全にローカル・コンピュータ・ノード(103)の外部にさえも配置可能であることは、読者には認められよう。共有メモリ転送を実行するため、TCPプロトコルにおけるものと同様のハンドシェーキング手順によって、ホスト・コンピュータ(110)上のSLMPM(146)は、アクセレレータ(104)上で実行しているSLMPM(146)とのデータ通信接続を確立する。次いで、SLMPM(146)は、ヘッダおよびペイロード・データを含むメッセージ(170)を生成し、このメッセージを特定構造の特定リンクのためのメッセージ送信キュー内に挿入する。メッセージを生成する際に、SLMPMは、メッセージのヘッダに、アクセレレータの識別およびアクセレレータ上で実行しているプロセスの識別を挿入する。また、SLMPMは、ヘッダ内にまたはペイロード・データの一部として、要求(168)からのメモリ・アドレスをメッセージに挿入する。また、SLMPMは、メッセージ・ペイロード・データの一部として、送信するデータ(176)をメッセージ(170)内に挿入する。次いで、メッセージは、通信アダプタ(160、161)によって、構造(128、130)を介して、アクセレレータ(104)上で実行しているSLMPMに送信され、ここで、SLMPMは、メッセージ内のメモリ・アドレスに従って、ペイロード・データ、送信されたデータ(176)を、RAM(140)の共有メモリ空間(158)に記憶する。
【0026】
直接メモリ・アクセス(「DMA」)は、コンピュータ・プロセッサ(152)に対する動作的な負担を減らしてホスト・コンピュータとアクセレレータとの間でデータを伝達するためのデータ通信プロトコルである。DMA転送は、本質的に、ある位置から別の位置へ、典型的にはホスト・コンピュータからアクセレレータへまたはその逆に、メモリ・ブロックのコピーを実施する。ホスト・コンピュータおよびアクセレレータのいずれかまたは双方は、DMAエンジンすなわち直接メモリ・アクセスのためのコンピュータ・ハードウェアおよびソフトウェアの集合を含むことができる。直接メモリ・アクセスは、アクセレレータおよびホスト・コンピュータのプロセッサに対する動作的な負担を減らしてそれらのメモリに対する読み出しおよび書き込みを行うことを含む。例えば、アクセレレータのDMAエンジンは、DMAの目的のために割り当てられたメモリに対する書き込みおよびこのメモリからの読み出しを行うことができ、一方で、アクセレレータのプロセッサは、コンピュータ・プログラム命令を実行し、または別の方法で動作を継続する。すなわち、コンピュータ・プロセッサはDMA転送を実行するための命令を発行することができるが、転送を実行するのはプロセッサでなくDMAエンジンである。
【0027】
図2の例では、アクセレレータ(104)のみがDMAエンジン(184)を含み、ホスト・コンピュータはこれを含まない。この例では、ホスト・コンピュータ上のプロセッサ(152)は、ホストからアクセレレータへのデータのDMA転送を開始するために、SMTプロトコルに従ったメッセージをアクセレレータに送信し、アクセレレータに遠隔「GET」動作を実行するように命令する。アクセレレータ(104)だけがDMAエンジンを含む唯一のデバイスである図2の例に示した構成は、単に例示のためのものであり、限定ではない。多くの実施形態において、ホスト・コンピュータおよびアクセレレータの双方がDMAエンジンを含むことができ、更に他の実施形態ではホスト・コンピュータのみがDMAエンジンを含むことは、当業者には容易に認められよう。
【0028】
図2のハイブリッド・コンピューティング環境においてDMAプロトコルを実施するために、いくらかのメモリ領域をDMAエンジンによるアクセスのために割り当てる。かかるメモリの割り当ては、他のアクセレレータまたはホスト・コンピュータから独立して実施することができ、または別のアクセレレータまたはホスト・コンピュータによって開始してこれと協同して完了させることができる。SMAプロトコルに従って割り当てられる共有メモリ領域は、例えば、DMAエンジンに利用可能とされたメモリ領域とすることができる。すなわち、図2のハイブリッド・コンピューティング環境(100)におけるDMAデータ通信の最初のセットアップおよび実施は、少なくとも部分的に、共有メモリ転送、または、DMAエンジンに関して帯域外の別の帯域外データ通信プロトコルによって実行することができる。DMA転送を実施するためのメモリ割り当ては比較的待ち時間が長いが、いったん割り当てると、DMAプロトコルは、多くの他のデータ通信プロトコルよりも必要なプロセッサ利用が少なくて済む高帯域データ通信を可能とする。
【0029】
直接「PUT」動作は、起点のデバイス上のDMAエンジンからターゲット・デバイス上のDMAエンジンまでデータを送信するモードである。直接「PUT」動作によって、ターゲット・デバイスのプロセッサがほとんど関与することなく、ターゲット・デバイス上にデータを送信し記憶することができる。直接「PUT」動作において、ターゲット・デバイスのプロセッサの関与を最小限に抑えるために、起点のDMAエンジンは、ターゲット・デバイス上の記憶位置の具体的な識別と共に、ターゲット・デバイス上に記憶するデータを転送する。起点のDMAは、ターゲット・デバイス上の具体的な記憶位置を知っている。なぜなら、ターゲット・デバイス上にデータを記憶するための具体的な記憶位置は、すでにターゲットDMAエンジンによって起点のDMAエンジンに提供されているからである。
【0030】
遠隔「GET」動作は、「rGET」と称されることもあり、起点デバイス上のDMAエンジンからターゲット・デバイス上のDMAエンジンまでデータを送信する別のモードである。遠隔「GET」動作によって、起点デバイスのプロセッサがほとんど関与することなく、ターゲット・デバイス上にデータを送信して記憶することができる。遠隔「GET」動作において、起点デバイスのプロセッサの関与を最小限に抑えるため、起点DMAエンジンは、ターゲットDMAエンジンによってアクセス可能な記憶位置にデータを記憶し、直接または共有メモリ送信による帯域外で、ターゲットDMAエンジンに、送信準備のできたデータの記憶位置およびサイズを通知し、ターゲットDMAエンジンはその記憶位置からデータを検索する。
【0031】
複数のデータ通信モードについてのデータ通信性能の監視は、データ通信リンク(156)に対するメッセージ送信要求キュー(162〜165)における多数の要求(168)の監視を含む場合がある。図2の例では、各メッセージ送信要求キュー(162〜165)には、1つの特定のデータ通信リンク(156)が関連付けられている。各キュー(162〜165)は、このキューに関連付けられたデータ通信リンク(156)と共に、通信アダプタ(160、161)によって送信されるデータ(176)を含むメッセージ(170)のエントリを含む。
【0032】
また、複数のデータ通信モードについてのデータ通信性能の監視は、共有メモリ空間(158)の利用の監視を含む場合がある。図2の例では、共有メモリ空間(158)は、アクセレレータのRAM(140)に割り当てられている。利用とは、ターゲット・デバイスに送信するためにデータを記憶したが、ターゲット・デバイスによってまだ読み出しも受信もされていない割り当て共有メモリ空間の比率であり、割り当て共有メモリに対する書き込みおよびこのメモリからの読み出しを追跡することによって監視される。図2のハイブリッド・コンピューティング環境(100)においては、共有メモリ空間、実際にはいかなるメモリも、限定がある。このため、アプリケーション・プログラム(166)の実行中に共有メモリ空間(158)がいっぱいになると、共有メモリ空間における空間の限定のためにホスト・コンピュータ(110)からアクセレレータへのデータ送信を遅くするか、または停止さえする場合もあるようになっている。
【0033】
本発明のいくつかの実施形態においては、図2のハイブリッド・コンピューティング環境(100)を並列コンピューティング環境として動作するように構成して、この並列コンピューティング環境において2つ以上のホスト・コンピュータ(110)上でアプリケーション・プログラム(166)が2つ以上のインスタンスを実行することができる。かかる実施形態では、データ通信モードを通じたデータ通信性能の監視は、並列コンピューティング環境において2つ以上のホスト・コンピュータ上で実行しているアプリケーション・プログラム(166)の複数のインスタンスにまたがるデータ通信性能情報(174)の集約を含む場合がある。集約した性能情報(174)を用いて、当業者に想起されるように、データ通信モードについての平均通信待ち時間の計算、特定の構造タイプのデータ通信リンクにおける平均要求数の計算、並列コンピューティング環境における複数のホスト・コンピュータおよびアクセレレータ間の平均共有メモリ利用の計算等を行うことができる。かかる方法のいずれかの組み合わせをSLMPMによって用いて、要求されたデータ通信モードに従ってデータを送信するか否かを判定すること、および、要求されたデータ通信モードに従ってデータを送信しない場合にデータを送信するための別のデータ通信モードを選択することの双方を行うことができる。
【0034】
図2のSLMPM(146)は、ホスト・コンピュータ(110)上のアプリケーション・プログラム(166)から、ホスト・コンピュータ(110)からアクセレレータ(104)にデータ通信モードに従ってデータ(176)を送信するための要求(168)を受信する。かかるデータ(176)は、アクセレレータ(104)によって実行するためにコンパイルされたコンピュータ・プログラム命令、アクセレレータ(104)上で実行しているアプリケーション・プログラムのための処理対象データ(work piece data)、またはコンピュータ・プログラム命令および処理対象データの何らかの組み合わせを含むことができる。データ通信モードに従ってデータ(176)を送信するための要求(168)の受信は、指定された構造タイプによってデータを送信するための要求の受信、ホスト・コンピュータからアクセレレータに指定されたデータ通信リンクを介してデータを送信するための要求の受信、または、プロトコルに従ってホスト・コンピュータからアクセレレータにデータを送信するための要求の受信を含むことができる。
【0035】
データ通信モードに従ってデータ(176)を送信するための要求(168)は、APIを介したSLMPM(146)に対するユーザ・レベルのアプリケーション関数呼び出し(function call)として実施することができる。すなわち、これは、プロトコル、構造タイプ、およびリンクに従ってデータ通信モードを明示的に指定する呼び出しである。関数呼び出しとして実施される要求は、関数呼び出し自体の動作に従ってプロトコルを指定することができる。例えば、dacs_put()関数呼び出しは、DMA「PUT」動作のデフォルト・モードにおいてデータを送信するために、DACSライブラリとして実施されるSLMPMが提示するAPIによる呼び出しを表すことができる。かかる呼び出しは、発呼側のアプリケーションおよび発呼側のアプリケーションを書いたプログラマの観点からは、デフォルト・モードに従ってデータを送信するためのSLMPMライブラリに対する要求を表し、プログラマには、高速API呼び出し(express API call)と関連付けられたデフォルト・モードと知られている。この例ではdacs_put()である被呼側の関数を、本発明の実施形態に従って符号化し、要求されたデータ通信モードに従ってすなわち被呼側の関数のデフォルト・モードに従ってデータを送信するか否かについて、それ自身の判定を行うことができる。更に別の例では、dacs_send()命令は、SMT「送信」動作のデフォルト・モードにおいてデータを送信するために、DACSライブラリとして実施されるSLMPMが提示するAPIを介した呼び出しを表すことができ、この場合も、被呼側の関数dacs_send()を、本発明の実施形態に従って符号化して、要求されたモードに従ってデータを送信するか否かについてそれ自身の判定を行う。
【0036】
関数呼び出しにおける特定のアクセレレータの識別によって、構造タイプを効果的に指定することができる。かかる関数呼び出しは、呼び出しパラメータとして、特定のアクセレレータの識別を含むことができる。例えば、PCIe IDの使用による特定のアクセレレータの識別によって、PCI構造タイプが効果的に識別される。別の同様の例では、イーサネット・アダプタの媒体アクセス制御(「MAC」)アドレスの使用による特定のアクセレレータの識別によって、イーサネットの構造タイプが効果的に識別される。ホスト上で実行しているアプリケーションからの関数呼び出しのアクセレレータIDを、構造タイプを識別するように実施する代わりに、関数呼び出しが、呼び出しのパラメータとして、特定のアクセレレータの全体的に一意の識別のみを含み、これによってホスト・コンピュータからアクセレレータへのリンクのみを指定し、構造タイプは指定しないということも可能である。この場合、呼び出された関数は、特定のプロトコルによって用いるためのデフォルトの構造タイプを実施することができる。例えば、SLMPMにおいて呼び出された関数が、DMAプロトコルによって用いるためのデフォルトの構造タイプとしてPCIeを用いて構成され、SLMPMが、DMAプロトコル、DMA PUT、またはDMA遠隔GET動作に従ってアクセレレータ(104)にデータを送信するための要求を受信した場合、呼び出された関数は、DMAのデフォルト構造タイプすなわちPCIe構造タイプを明示的に指定する。
【0037】
各構造タイプの1つのみのリンクが単一のホスト・コンピュータを単一のアクセレレータに適合させるハイブリッド・コンピューティング環境においては、関数呼び出しのパラメータにおける特定のアクセレレータの識別によって、リンクを効果的に指定することができる。2つのPCIeリンクがホスト・コンピュータ(110)をアクセレレータ(104)に接続する等、各構造タイプの2つ以上のリンクがホスト・コンピュータおよびアクセレレータを適合するハイブリッド・コンピュータ環境においては、呼び出されたSLMPM関数は、アクセレレータの識別によって指定される構造タイプについて、関数呼び出しのパラメータにおいて識別されたアクセレレータのデフォルト・リンクを実施することができる。
【0038】
また、図2の例におけるSLMPM(146)は、監視した性能(174)に応じて、要求されたデータ通信モードに従ってデータ(176)を送信するか否かを判定する。要求されたデータ通信モードに従ってデータ(176)を送信するか否かの判定は、要求された構造タイプによってデータを送信するか否か、要求されたデータ通信リンクを介してデータを送信するか否か、または要求されたプロトコルに従ってデータを送信するか否かの判定を含むことができる。
【0039】
本発明の実施形態に従ったハイブリッド・コンピューティング環境においては、データ通信モードを通じたデータ通信性能の監視は、データ通信リンクのためのメッセージ送信要求キュー(162〜165)における多数の要求の監視を含み、要求されたデータ通信モードに従ってデータ(176)を送信するか否かの判定は、メッセージ送信要求キュー内の要求数が所定の閾値を超えたか否かを判定することによって実行可能である。本発明の実施形態に従ったハイブリッド・コンピューティング環境では、複数のデータ通信モードについてのデータ通信性能の監視は、共有メモリ空間の利用の監視を含み、要求されたデータ通信モードに従ってデータ(176)を送信するか否かの判定は、共有メモリ空間の利用が所定の閾値を超えたか否かを判定することによって実行可能である。
【0040】
要求されたデータ通信モードに従ってデータを送信しない場合、SLMPM(146)は、監視した性能に応じて、データを送信するための別のデータ通信モードを選択し、この選択したデータ通信モードに従ってデータ(176)を送信する。データを送信するための別のデータ通信モードの選択は、監視した性能に応じた、データを送信する別のデータ通信構造タイプの選択、データを送信するデータ通信リンクの選択、および、別のデータ通信プロトコルの選択を含むことができる。一例として、要求されたデータ通信モードが、PCIe構造(130)のリンク(138)を介したアクセレレータ(104)に対するPUT動作を用いたDMA送信である場合について考える。監視したデータ性能(174)により、リンク(138)に関連付けられた送信メッセージ要求キュー(162)内の要求数が所定の閾値を超えることが示される場合、SLMPMは、データ(176)を送信するための別の構造タイプすなわちイーサネット構造(128)およびリンク(131、132)を選択することができる。また、監視した性能(176)によって、共有メモリ空間(158)の現在の利用が所定の閾値未満であり、キュー(162)内の顕著なDMA送信の数が所定の閾値を超えることが示される場合について考える。かかる場合、SLMPM(146)は、データ(174)を送信するため、共有メモリ転送等の別のプロトコルを選択することができる。
【0041】
また、データ(172)を送信するためのSLMPMによる別のデータ通信モードの選択は、データ通信メッセージ・サイズ(172)に応じたデータ通信プロトコル(178)の選択を含むことができる。データ通信メッセージ・サイズ(172)に応じたデータ通信プロトコル(178)の選択は、メッセージのサイズが所定の閾値を超えるか否かを判定することによって実行可能である。より大きいメッセージ(170)では、DMAプロトコルが好ましいプロトコルである可能性がある。なぜなら、通常、より大きいメッセージ(170)のDMA転送を行う際のプロセッサ利用は、同一サイズのメッセージの共有メモリ転送を行う際のプロセッサ利用よりも少ないからである。
【0042】
上述したように、SLMPMは、選択したデータ通信モードに従ってデータを送信することができる。選択したデータ通信モードに従ったデータの送信は、選択したデータ通信構造タイプによるデータの送信、選択したデータ通信リンクを介したデータの送信、または選択したプロトコルに従ったデータの送信を含むことができる。SLMPM(146)が、選択したデータ通信モードに従ったデータの送信を実行するには、デバイス・ドライバによって、選択したデータ通信モードのデータ通信構造タイプのための通信アダプタに、選択したデータ通信モードのプロトコルに従ってメッセージ(170)を送信するように命令すれば良い。このメッセージは、メッセージ・ヘッダ内にアクセレレータの識別を含み、メッセージ・ペイロード内に送信するデータ(176)を含む。
【0043】
図2の例のハイブリッド・コンピューティング環境(100)においては、ホスト・コンピュータ(110)上でホスト・アプリケーション・プロセスが実行している。図2の例のハイブリッド・コンピューティング環境(100)におけるデータ処理を実行するには、ホスト・アプリケーション・プロセス(167)の命令で、SLMPM(146)によって、アクセレレータ(104)上で実行スレッド(169)を開始し、SLMPM(146)によって、ホスト・アプリケーション・プロセス(167)に対して、実行スレッド(169)のためのPIDを戻し、実行スレッド(169)がホスト・コンピュータ(110)上の実行スレッドであるかのように、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ(104)上で実行スレッド(169)を管理すれば良い。
【0044】
図2のハイブリッド・コンピューティング環境(100)において、例示的なSLMPM(146)によって、ホスト・アプリケーション・プロセス(167)の命令で、アクセレレータ(104)上で実行スレッド(169)を実行することは、ホスト・アプリケーション・プロセス(167)から、プロセス間データ通信メッセージにおいて、アクセレレータ(104)上で実行スレッド(169)を開始するための命令を受信することを含む場合がある。このデータ通信メッセージは、実行スレッドのための動作情報を含む。ホスト・アプリケーション・プロセスの観点から、プロセス間データ通信メッセージは、SLMPM(146)が提供する関数に対するAPIを介した関数呼び出しとすることができる。「動作情報」という言葉は、本明細書において用いる場合、ハイブリッド・コンピューティング環境(100)において、ソフトウェア・プログラム、プロセス、実行スレッド等の実行を開始、維持、および終了させる際に用いられる情報を指す。アクセレレータ(104)上で実行スレッド(169)を開始するための命令の一部として含まれる動作情報は、実行スレッドのための実行パラメータ、実行スレッドのための環境変数、実行スレッドのための実行可能ファイル名、実行スレッドを開始するアクセレレータの識別子、ホスト・コンピュータ(110)からアクセレレータ(104)に転送するファイル・リストを含むことができる。これらのファイルは、例えば、実行スレッドのための実行可能ファイル、データ・ファイル、構成ファイル、環境変数のための値を指定するファイル、実行パラメータの値を指定するファイル等を含む。アクセレレータ上での実行スレッドの開始は、更に、アクセレレータ(104)上で動作しているSLMPM(146)のインスタンスによるUnixタイプの「fork(分岐)」システム・コマンドの実行を含み、SLMPM(146)を2つのプロセスに分岐させることができる。この場合、分岐したプロセスが、アクセレレータ(104)上で実行スレッド(169)を開始するための命令に含まれる動作情報によって、Unixタイプの「exec(実行)」システム・コマンドを実行する。
【0045】
図2のハイブリッド・コンピューティング環境(100)における例示的なSLMPM(146)が、実行スレッド(169)のためのPIDをホスト・アプリケーション・プロセスに戻すには、「exec」システム・コマンドの実行の前に、アクセレレータ(104)上での上述した分岐プロセスによって、Unixタイプの「getpid」システム・コマンドを実行すれば良い。そのリターンは、分岐したプロセスのためのPIDであり、従って後に実行されるスレッド(169)のためのPIDである。更に、このリターンされたPIDを、分岐したプロセスによってSLMPMに提供し、SLMPMによってホスト・アプリケーション・プロセス(167)に、プロセス間データ通信メッセージ内でPIDを提供すれば良い。
【0046】
ハイブリッド・コンピューティング環境(100)における例示的なホスト・アプリケーション・プロセス(167)は、アクセレレータ(104)上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ(110)上の実行スレッド(169)であるかのように管理する。すなわち、アクセレレータ(104)上の実行スレッド(169)は実際には異なるプロセスのスレッドであるが、そのように管理するのではなく、ホスト・アプリケーション・プロセス(167)は、本発明の実施形態に従って、アクセレレータ(104)上の実行スレッド(169)を自分自身のスレッドとして管理する。ホスト・アプリケーション・プロセス(167)は、例えばUnixタイプの「stdout」および「stderr」等の実行スレッドの標準ストリームを、ホスト・アプリケーション・プロセスの標準ストリームに対して、SLMPM(146)によって構成されたマッピングを行うことによって、アクセレレータ(104)上の実行スレッド(169)を管理することができる。標準ストリームは、実行スレッドが実行を開始する場合のスレッドとその動作環境との間で予め構成された入力および出力チャネルである。標準ストリームによって、同一プロセスのスレッド間、スレッドとそのプロセスとの間等のデータ通信が可能となる。スレッド(169)およびプロセス(167)のための標準ストリームは、SLMPMを介したスレッドとプロセスとの間のソケット接続を用いることにより、SLMPM(146)によってマッピングすることができる。ホスト・アプリケーション・プロセスの標準ストリームに実行スレッドの標準ストリームをマッピングすることで、アクセレレータ(104)上の実行スレッド(169)およびホスト・アプリケーション・プロセス(167)は、一方から他方にデータ通信を転送することができ、これは、プロセス(167)およびスレッド(169)の観点からは、それらが双方とも同一プロセッサ上で実行しているかのように見える。従って、SLMPMは、プロセス(167)およびスレッド(169)の観点からホスト・コンピュータとアクセレレータとの間に存在する分離を効果的に除去するかまたはつなぐことができる。
【0047】
また、あたかもアクセレレータ(104)上の実行スレッド(169)がホスト・コンピュータ(110)上の実行スレッド(169)であるかのように実行スレッド(169)を管理することは、ホスト・アプリケーション・プロセスの子プロセスとして実行スレッドを管理すること、アクセレレータ上の実行スレッドの送信時にシステム・レベル・メッセージ伝達モジュールを介してホスト・アプリケーション・プロセスによって終了データを受信すること、またはシステム・レベル・メッセージ伝達モジュール(146)によってアクセレレータ(104)上で実行スレッド(169)を無効化する(kill)ことを含む場合がある。
【0048】
本明細書において用いる場合、「子プロセス」という言葉は、親プロセスと呼ぶ別のプロセスによって生成されるコンピュータ・プロセスを指し、生成されたプロセスは通常、親プロセスからその属性の多くを受け継ぐ。プロセスは、上述したようなfork−execシステム・コマンドを用いて生成されて、fork−execシステム・コマンドの実行時にアクセレレータ(104)上で動作しているSLMPM(146)のインスタンスによって実行スレッド(169)を含むプロセスが生成されるようになっている。従って、ホスト・アプリケーション・プロセス(167)は実行スレッド(169)の実行を要求するが、プロセスにおいて実行スレッド(169)の開始時にアクセレレータ(104)上で動作しているSLMPM(146)のインスタンスは、実際、そのスレッド(169)の親プロセスである。しかしながら、本発明の実施形態に従って、アクセレレータ上のSLMPM(146)が実際はスレッドの親プロセスであるという事実にもかかわらず、ホスト・アプリケーション・プロセス(146)は、実行スレッド(169)を、この実行スレッド(169)がホスト・アプリケーション・プロセス(167)の子プロセスであるかのように管理する。図2のハイブリッド・コンピューティング環境(100)における例示的なホスト・アプリケーション・プロセス(167)は、実行スレッド(169)を実行しているアクセレレータ(104)上で動作しているプロセスとインタラクトすることによって、実行スレッド(169)を、ホスト・アプリケーション・プロセス(167)の子プロセスとして管理することができ、その際には、あたかも、スレッド(169)を実行しているプロセスが、通常は子プロセスによって受け継がれるホスト・アプリケーション・プロセスからの属性を受け継ぐかのように行う。かかる属性は、例えば、実ユーザ識別子、実グループ識別子、有効ユーザ識別子、有効グループ識別子、プロセス・グループ識別子、端末グループ識別子、ルート・ディレクトリ、現在の作業ディレクトリ、信号処理設定、およびファイル・モード生成マスクを含むことができる。かかる属性は、ホスト・アプリケーション・プロセスによって、アクセレレータ(104)上で実行スレッド(169)を開始するための命令の動作情報に含ませることができ、上述したUnixタイプの「exec」システム・コマンドの実行時に前述の分岐SLMPM(146)によって設定することができる。
【0049】
図2のハイブリッド・コンピューティング環境(100)における例示的なホスト・アプリケーション・プロセス(167)が、アクセレレータ上での実行スレッド(169)の終了時に、システム・レベル・メッセージ伝達モジュール(146)を介してホスト・アプリケーション・プロセス(167)によって終了データ(704)を受信するには、SLMPM(146)によって、アクセレレータ上での実行スレッド(169)の実行を監視し、実行スレッドの終了時に、ホスト・アプリケーション・プロセスに対して、プロセス間データ通信メッセージ内で終了データを送信すれば良い。本明細書において用いる場合、終了データという言葉は、実行スレッドの終了時に存在するいずれかのデータを指す。かかる終了データは、終了ステータス識別子、スレッドの終了を引き起こす例外が生じたコンピュータ・プログラム命令ブロック等、当業者に想起されるようなものを含むことができる。
【0050】
図2のハイブリッド・コンピューティング環境(100)における例示的なホスト・アプリケーション・プロセス(167)が、システム・レベル・メッセージ伝達モジュール(146)によってアクセレレータ(104)上の実行スレッド(169)を無効化するには、実行スレッドの識別子を含むプロセス間データ通信メッセージにおいて、スレッド(169)を終了させるための命令を送信すれば良い。ホスト・アプリケーション・プロセス(167)の観点からは、プロセス間データ通信メッセージは、SLMPM(146)が提供する関数に対するAPIを介した関数呼び出しとすることができる。スレッドの識別子は、スレッドの一意の識別、アクセレレータの識別およびスレッドのPIDの組み合わせ、ならびに当業者に想起されるような他の方法におけるものとして実施することができる。この命令に応答して、アクセレレータ(104)上で動作しているSLMPM(146)は、アクセレレータ(104)上で動作している実行スレッド(169)の実際の親プロセスとして、ホスト・アプリケーション・プロセスからの命令において指定されたPIDをその引数として有するUnixタイプの「kill」コマンドを実行することによって、実行スレッドを終了させることができる。
【0051】
また、図2のハイブリッド・コンピューティング環境(100)における例示的なSLMPM(146)は、本発明の実施形態に従って、ホスト・アプリケーション・プロセス(167)の終了を検出し、その終了時に、アクセレレータ(104)上の実行スレッド(169)を無効化するように構成することも可能である。例示したSLMPM(146)は、連続的に、またはホスト・アプリケーション・プロセス(167)の実行ステータスを周期的にチェックすることで、プロセスの実行を監視することによって、ホスト・アプリケーション・プロセス(167)の終了を検出することができる。SLMPM(146)は、Unixタイプの「kill」コマンドを用いて、上述したようにアクセレレータ(104)上の実行スレッド(169)を無効化することができる。
【0052】
また、図2のハイブリッド・コンピューティング環境(100)における例示的なSLMPM(146)は、本発明の実施形態に従って、ホスト・アプリケーション・プロセスの命令で、アクセレレータ上の実行スレッドが終了したか否かを判定することを含めて、待機関数を実行し、待機関数のリターン時に、アクセレレータ上の実行スレッドが終了したことをホスト・アプリケーション・プロセスに教えるように構成することも可能である。ホスト・アプリケーション・プロセスの命令で、アクセレレータ上の実行スレッドが終了したか否かを判定することを含めて待機関数を実行することは、ホスト・アプリケーション・プロセス(169)から、SLMPM(146)によって、プロセス間データ通信メッセージとして、待機関数を実行するための命令の受信を含むことができ、この命令は、アクセレレータ(104)上で動作している実行スレッド(169)のPIDを含む。かかる命令は、ホスト・アプリケーション・プロセスの観点からは、SLMPM(146)待機関数に対するAPIを介した関数呼び出しとして実施することができる。本明細書において用いる場合、「待機関数」という言葉は、別のプロセスまたは通常プロセス識別子によって識別される実行スレッドが実行を完了するまで、発呼側のプロセスに実行を一時停止させる関数である。この場合、待機関数によって、アクセレレータ(104)上で動作している実行スレッドが実行を完了するまで、ホスト・アプリケーション・プロセスは実行を一時停止する。図2の例におけるSLMPM(146)は、待機関数のリターン時に、アクセレレータ上の実行スレッド(169)が終了したことの通知をプロセス間データ通信メッセージにおいて送信することによって、アクセレレータ(104)上の実行スレッド(169)が終了したことをホスト・アプリケーション・プロセス(167)に教えることができる。
【0053】
更に説明を行うため、図3は、本発明の実施形態に従ったデータ処理に有用な更に別の例示的なハイブリッド・コンピューティング環境(100)のブロック図を示す。図3のハイブリッド・コンピューティング環境は、図2のハイブリッド・コンピューティング環境と類似し、これと同様に、4つのコンピュータ・ノード(102、103)を含み、その各々が、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(110)およびアクセレレータ・アーキテクチャを有するアクセレレータ(104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。ホスト・コンピュータ(110)およびアクセレレータ(104)は、システム・レベル・メッセージ伝達モジュール(146)または少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(128、130)によるデータ通信のために相互に適合されている。図3の例においては、ホスト・コンピュータ(110)は、イーサネット構造(128)およびPCIe構造(130)によって、アクセレレータ(104)に適合されている。
【0054】
コンピュータ・ノード(103)の拡大図において示すようなホスト・コンピュータ(110)は、x86プロセッサを含む。x86プロセッサは、そのアーキテクチャが、Intel x86シリーズのマイクロプロセッサ、386、486、586、またはPentium(TM)等のアーキテクチャ・レジスタ・セットに基づいたプロセッサである。x86プロセッサの例は、AMD(Advanced Micro Devices)Opteron(TM)、AMD Phenom(TM)、AMD Athlon XP(TM)、AMD Athlon 64(TM)、Intel Nehalem(TM)、Intel Pentium 4、Intel Core 2 Duo、Intel Atom等、当業者に想起されるようなものを含む。図の例におけるx86プロセッサ(152)は、多くのx86プロセッサにおいて見られる典型的なアーキテクチャ・レジスタ・セット(154)を示す。それらは、例えば、アキュムレータ・レジスタ(「AX」)、ベース・レジスタ(「BX」)、カウンタ・レジスタ(「CX」)、データ・レジスタ(「DX」)、ストリング動作のためのソース・インデックス・レジスタ(「SI」)、ストリング動作のための宛先インデックス(「DI」)、スタック・ポインタ(「SP」)、現在のスタック・フレームのアドレスを保持するためのスタック・ベース・ポインタ(「BP」)、および現在の命令アドレスを保持する命令ポインタ(「IP」)を含む。
【0055】
図3の例におけるアクセレレータ(104)は、セル・ブロードバンド・エンジン・アーキテクチャ(「CBEA」)を有するセル・ブロードバンド・エンジン(「CBE」)として示す。CBEAは、「STI」として知られるソニー・コンピュータエンタテインメント、東芝、およびIBMの連合によって共同開発されたマイクロプロセッサ・アーキテクチャである。CBEAに従って実施されるマイクロプロセッサは、「セル」プロセッサ、または単にCBEと称されることもある。CBEAは、あまり性能の高くない汎用パワー・アーキテクチャ・コアすなわちPPE(Power Processing Element:パワー処理要素)(148)を、マルチメディアおよびベクトル処理アプリケーションならびに多くの他の形態の専用計算を著しく加速するSPE(Synergistic Processing Element:相乗処理要素)(308)と呼ばれる効率化共同処理要素と組み合わせる。CBEアーキテクチャは、効率/電力を重視し、待ち時間よりも帯域幅を優先し、プログラム・コードの簡潔さよりもピーク計算スループットにとって有利である。
【0056】
CBEとして実施される図3のアクセレレータ(104)は、この例ではPPE(パワー処理要素)であるメイン・プロセッサ(148)と、SPE(308)と称する8個の完全に機能するコプロセッサと、PPEおよびSPEを接続する要素相互接続バス(「EIB」)(312)と称する高帯域幅環状データ・バスと、を含む。PPE(148)は、パワー・アーキテクチャ・プロセッサであり、2方向マルチスレッド・コアが、8個のSPE(308)のためのコントローラとして機能する。「パワー・アーキテクチャ」という言葉は、ここでは、IBMの異なる世代のプロセッサ・アーキテクチャを指し、広義には、POWER、PowerPC、およびCellアーキテクチャに基づいた全ての製品を含む。従って、CBEアクセレレータ(104)のPPE(148)のアーキテクチャ・レジスタ(150)は、ホスト・コンピュータ(110)のx86プロセッサ(152)のものとは異なる。図3のPPE(148)は、パワー・アーキテクチャの例示的なアーキテクチャ・レジスタ・セット(150)を含み、これは、32の汎用レジスタ(「GRP」)、32の浮動小数点レジスタ(「FPR」)、固定点例外レジスタ(「XER」)、カウンタ・レジスタ(「CTR」)、条件レジスタ(「CR」)、命令アドレス・レジスタ(「IAR」)、リンク・レジスタ(「LR」)、およびプロセッサ・バージョン・レジスタ(「PVR」)を含む。
【0057】
SPE(308)は、CBE(104)の計算の作業負荷のほとんどを処理する。SPEはベクトル化浮動小数点コード実行のために最適化されているが、SPEは、例えば、SPE上のローカル・メモリ(141)に記憶されたオペレーティング・システムによって、Linuxの軽量の変更バージョン等のオペレーティング・システムを実行することができる。図3の例における各SPE(308)は、相乗処理ユニット(「SPU」)(302)およびメモリ・フロー・コントローラ(「MFE」)(310)を含む。SPU(302)は、単精度および2倍精度命令のための128ビット単一命令多重データ(「SIMD:single instruction, multiple data」)構成を有する縮小命令セット・コンピューティング(「RISC:Reduced Instruction Set Computing」)プロセッサである。いくつかの実施においては、SPUは、命令およびデータのために256KB埋め込みスタティックRAM(141)を含むことができ、PPE(148)に可視的でありソウトウェアによって直接アドレス可能なローカル記憶装置と呼ばれる。各SPU(302)は、4ギガバイト(「GB」)までのローカル記憶メモリをサポートすることができる。ローカル記憶装置は、従来のCPUキャッシュのようには動作しない。なぜなら、ローカル記憶装置は、ソフトウェアにトランスペアレントでなく、ロードするデータを予測するハードウェア構造を含むわけでもないからである。また、SPU(302)は、128ビット128入力レジスタ・ファイル(307)を含む、PPEのものとは異なるアーキテクチャ・レジスタ(306)を実施する。SPU(302)は、単一のクロック・サイクルにおいて、16の8ビット整数、8の16ビット整数、4の32ビット整数、または4の単精度浮動小数点数に対して動作することができると共に、メモリ動作を実行することができる。
【0058】
MFC(310)は、CBE(104)内のSPU(302)を統合する。MFC(310)は、SPUにデータ転送および同期機能を提供し、CBE(104)のための輸送ハブとして機能するEIB(312)に対するSPUインタフェースを実施する。また、MFC(310)は、SPE(308)とPPE(148)との間の通信インタフェースを実施し、DMAを介してSPU(302)のローカル記憶装置(141)とCBEシステム・メモリすなわちRAM(140)との間のバルク・データ転送を実行するデータ転送エンジンとして機能する。SPU(302)から専用データ転送エンジンへとデータ転送の負担を軽減することによって、データ処理およびデータ転送が並列に進行し、ソフトウェア・パイプライニングおよびダブル・バッファリング等の最新のプログラミング方法をサポートする。非同期に、かつPPE(148)およびSPE(302)上でのデータ処理と並列に、高性能のデータ転送を実行する能力を提供することで、MFC(310)は、アプリケーション・レベルでデータ処理および転送を明示的にインターリーブする必要をなくす。
【0059】
図3の例におけるSLMPM(146)は、ホスト・コンピュータ(110)とアクセレレータ(104)との間の複数のデータ通信モードについてデータ通信性能を監視し、ホスト・コンピュータ(110)上のアプリケーション・プログラム(166)から、ホスト・コンピュータ(110)からアクセレレータ(104)にデータ通信モードに従ってデータを送信するための要求を受信し、監視した性能に応じて、要求されたデータ通信モードに従ってデータを送信するか否かを判定し、要求されたデータ通信モードに従ってデータを送信しない場合、監視した性能に依存して、データを送信するための別のデータ通信モードを選択し、この選択したデータ通信モードに従ってデータを送信することができる。
【0060】
図3の例示的なハイブリッド・コンピューティング環境(100)においては、ホスト・コンピュータ(110)上でホスト・アプリケーション・プロセスが実行することができる。本発明の実施形態に従ったハイブリッド・コンピューティング環境においてデータ処理を実行するには、ホスト・アプリケーション・プロセスの命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ(104)上で実行スレッドを開始し、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセスに、実行スレッドのためのPIDを戻し、ホスト・アプリケーション・プロセスによって、アクセレレータ(104)上の実行スレッドがあたかもホスト・コンピュータ(110)上の実行スレッドであるかのように、この実行スレッドを管理すれば良い。
【0061】
更に説明を行うため、図4は、本発明の実施形態に従ったデータ処理に有用な更に別の例示的なハイブリッド・コンピューティング環境(100)のブロック図を示す。図4のハイブリッド・コンピューティング環境は、図2のハイブリッド・コンピューティング環境と類似し、これと同様に、4つのコンピュータ・ノード(102、103)を含み、その各々が、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(110)および各々がアクセレレータ・アーキテクチャを有する1つ以上のアクセレレータ(104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。図4の例におけるホスト・コンピュータ(110)およびアクセレレータ(104)は、システム・レベル・メッセージ伝達モジュール(146)または少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(128、130)によるデータ通信のために相互に適合されている。図4の例においては、ホスト・コンピュータ(110)は、イーサネット構造(128)およびPCIe構造(130)によって、アクセレレータ(104)に適合されている。
【0062】
図4は、LANLスーパーコンピュータにおいて実施されるものと同様のハイブリッド・コンピューティング環境の例を示す。LANLスーパーコンピュータにおいて実施されるホスト・コンピュータ(110)は、コンピュータ・ノード(103)の拡大図によって示すように、2つのAMD Opteronプロセッサ(155)を含み、その各々がデュアル・コア・プロセッサである。ホスト・コンピュータ(110)のコア(152)は各々、図4の例において、単一の完全に機能するx86プロセッサ・コアとして示し、各コアがそれ自身のアーキテクチャ・レジスタ・セット(154)を有する。図4の例におけるプロセッサ・コア(152)は各々、動作的にRAM(142)に結合され、RAMにはアプリケーション・プログラム(166)のインスタンス、SLMPM(146)のインスタンス、およびオペレーティング・システム(145)が記憶されている。LANLスーパーコンピュータの例では、SLMPM(146)は、本発明の実施形態に従って改良されたデータ通信および同期(「DACS」)ライブラリである。
【0063】
図4の例における各x86プロセッサ・コア(152)は、図3に関連して上述したようなCBEとして実施される別個のアクセレレータ(104)に対して、イーサネット(128)およびPCIe(130)構造によって適合されている。この例におけるホスト・コンピュータ(110)の各AMD Opteronプロセッサ(155)の各コア(152)は、少なくとも1つのCBEに接続されている。この例では、CBE(104)に対するOpteronプロセッサ・コアの比率は1対1であるが、他の例示的な実施形態では、例えば1対2、1対3等、アクセレレータに対するプロセッサの異なる比率を実施可能であることは、当業者には認められよう。
【0064】
図4の例において、各x86プロセッサ・コア(152)上で実行するSLMPM(146)の各インスタンスは、ホスト・コンピュータ(110)とプロセッサ・コア(152)に接続されたアクセレレータ(104)との間のデータ通信モードを通してデータ通信性能を監視し、ホスト・コンピュータ(110)のプロセッサ・コア(152)上で実行するアプリケーション・プログラム(166)のインスタンスから、ホスト・コンピュータ(110)からプロセッサ・コア(152)に接続されたアクセレレータ(104)に対してデータ通信モードに従ってデータを送信するための要求を受信し、監視した性能に応じて、要求されたデータ通信モードに従ってデータを送信するか否かを判定し、要求されたデータ通信モードに従ってデータを送信しない場合、監視した性能に従って、データを送信するための別のデータ通信モードを選択し、この選択されたデータ通信モードに従ってデータを送信するように構成することができる。
【0065】
図4の例示的なハイブリッド・コンピューティング環境(100)においては、ホスト・コンピュータ(110)上でホスト・アプリケーション・プロセスが実行することができる。本発明の実施形態に従ってハイブリッド・コンピューティング環境(100)におけるデータ処理を実行するには、ホスト・アプリケーション・プロセスの命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ(104)上で実行スレッドを開始し、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセスに、実行スレッドのためのPIDを戻し、ホスト・アプリケーション・プロセスによって、アクセレレータ(104)上の実行スレッドがあたかもホスト・コンピュータ(110)上の実行スレッドであるかのように、この実行スレッドを管理すれば良い。
【0066】
更に説明を行うため、図5は、本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理のための例示的な方法を示すフロー・チャートを示す。図5の方法は、本明細書において上述したハイブリッド・コンピューティング環境と同様のハイブリッド・コンピューティング環境において実行される。かかるハイブリッド・コンピューティング環境は、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(図2の110)およびアクセレレータ・アーキテクチャを有するアクセレレータ(図2の104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。ホスト・コンピュータ(図2の110)およびアクセレレータ(図2の104)は、SLMPM(図2の146)または任意に少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(図2の128、130)によるデータ通信のために相互に適合されている。また、かかるハイブリッド・コンピューティング環境は、ホスト・コンピュータ(110)上で実行するホスト・アプリケーション・プロセス(167)を含む。
【0067】
図5の方法は、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ上の実行スレッド(169)の開始を要求すること(508)を含む。アクセレレータ上の実行スレッド(169)の開始の要求(508)は、プロセス間データ通信メッセージ(510)において、アクセレレータ上で実行スレッド(169)を開始するための命令を送信することを含み、このメッセージ(510)は実行スレッドのための動作情報を含む。メッセージ(510)は、ホスト・アプリケーション・プロセス(167)の観点からは、SLMPM(146)が提供する関数に対するAPI(512)を介した呼び出しとして実施することができる。
【0068】
図5の方法は、ホスト・アプリケーション・プロセス(167)の命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ上で実行スレッド(169)を開始すること(502)を含む。ホスト・アプリケーション・プロセス(167)の命令で、アクセレレータ上で実行スレッド(169)を開始すること(502)は、データ通信メッセージ(510)内の命令に応答して実行することができ、データ通信メッセージ(510)に含まれる動作情報を用いてUnixタイプのfork−execシステム・コマンドを実行する。
【0069】
また、図5の方法は、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセス(167)に、実行スレッド(169)のためのプロセス識別子(「PID」)(506)を戻すこと(504)を含む。ホスト・アプリケーション・プロセス(167)に実行スレッド(169)のためのPID(506)を戻すこと(504)を行うには、上述のUnixタイプの「exec」システム・コマンドを実行する前に、分岐したプロセスによってUnixタイプの「getpid」システム・コマンドを実行すれば良い。そのリターンは、分岐したプロセスのPIDであり、後に実行される実行スレッド(169)のPIDである。更に、分岐したプロセスによってSLMPMにリターンされたPIDを提供し、SLMPMによってホスト・アプリケーション・プロセス(167)に、プロセス間データ通信メッセージ内でPIDを提供すれば良い。
【0070】
また、図5の方法は、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ上の実行スレッド(169)を、あたかもこの実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)を含む。アクセレレータ上の実行スレッド(169)があたかもホスト・コンピュータ上の実行スレッドであるかのように、この実行スレッド(169)の管理(508)を行うには、実行スレッド(169)を開始する際に、SLMPM(146)によって、実行スレッド(169)の標準ストリームをホスト・アプリケーション・プロセスの標準ストリームにマッピングし、あたかもスレッドがホスト・コンピュータ上で実行しているかのように、ホスト・アプリケーション・プロセス(169)によって、スレッドの動作を開始、一時停止、無効化、または他の方法で制御すれば良い。
【0071】
更に説明を行うため、図6は、本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理のための更に別の例示的な方法を示すフロー・チャートを示す。図6の方法は、図5の方法と同様に、本明細書において上述したハイブリッド・コンピューティング環境と類似したハイブリッド・コンピューティング環境において実行される。かかるハイブリッド・コンピューティング環境は、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(図2の110)およびアクセレレータ・アーキテクチャを有するアクセレレータ(図2の104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。ホスト・コンピュータ(図2の110)およびアクセレレータ(図2の104)は、システム・レベル・メッセージ伝達モジュール(図2の146)または任意に少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(図2の128、130)によるデータ通信のために相互に適合されている。また、図6の方法は、図5の方法と同様に、ホスト・アプリケーション・プロセス(167)の命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ上で実行スレッド(169)を開始すること(502)と、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセス(167)に、実行スレッド(169)のためのプロセス識別子(「PID」)(506)を戻すこと(504)と、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)と、を含む。しかしながら、図6の方法が図5の方法と異なるのは、図6の方法において、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)が、実行スレッド(169)を、ホスト・アプリケーション・プロセス(167)の子プロセスとして管理すること(602)を含む点である。ホスト・アプリケーション・プロセス(167)の子プロセスとしての実行スレッド(169)の管理(602)を行うには、実行スレッド(169)を実行しているアクセレレータ(104)上で動作しているプロセスとインタラクトし、その際に、あたかもスレッド(169)を実行しているプロセスが、通常は子プロセスによって受け継がれるホスト・アプリケーション・プロセスからの属性を受け継いだかのように行えば良い。かかる属性は、実行スレッド(169)を開始するためのホスト・アプリケーション・プロセス(167)からの命令メッセージ(510)に含まれる動作情報に依存して、プロセスの実行時にスレッドを実行するプロセスのために設定される。
【0072】
更に説明を行うため、図7は、本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理のための更に別の例示的な方法を示すフロー・チャートを示す。図7の方法は、図5の方法と同様に、本明細書において上述したハイブリッド・コンピューティング環境と類似したハイブリッド・コンピューティング環境において実行される。かかるハイブリッド・コンピューティング環境は、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(図2の110)およびアクセレレータ・アーキテクチャを有するアクセレレータ(図2の104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。ホスト・コンピュータ(図2の110)およびアクセレレータ(図2の104)は、システム・レベル・メッセージ伝達モジュール(図2の146)または任意に少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(図2の128、130)によるデータ通信のために相互に適合されている。また、図7の方法は、図5の方法と同様に、ホスト・アプリケーション・プロセス(167)の命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ上で実行スレッド(169)を開始すること(502)と、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセス(167)に、実行スレッド(169)のためのプロセス識別子(「PID」)(506)を戻すこと(504)と、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)と、を含む。しかしながら、図7の方法が図5の方法と異なるのは、図7の方法において、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)が、アクセレレータ上での実行スレッド(169)の終了時に、SLMPM(146)を介してホスト・アプリケーション・プロセス(167)によって終了データ(506)を受信すること(702)を含む点である。アクセレレータ上での実行スレッド(169)の終了時に終了データ(506)を受信する(702)には、SLMPM(146)によって、アクセレレータ上での実行スレッド(169)の実行を監視し、実行スレッドの終了時に、ホスト・アプリケーション・プロセスに、プロセス間データ通信メッセージ内で終了データを送信すれば良い。
【0073】
更に説明を行うため、図8は、本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理のための更に別の例示的な方法を示すフロー・チャートを示す。図8の方法は、図5の方法と同様に、本明細書において上述したハイブリッド・コンピューティング環境と類似したハイブリッド・コンピューティング環境において実行される。かかるハイブリッド・コンピューティング環境は、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(図2の110)およびアクセレレータ・アーキテクチャを有するアクセレレータ(図2の104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。ホスト・コンピュータ(図2の110)およびアクセレレータ(図2の104)は、システム・レベル・メッセージ伝達モジュール(図2の146)または任意に少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(図2の128、130)によるデータ通信のために相互に適合されている。また、図8の方法は、図5の方法と同様に、ホスト・アプリケーション・プロセス(167)の命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ上で実行スレッド(169)を開始すること(502)と、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセス(167)に、実行スレッド(169)のためのプロセス識別子(「PID」)(506)を戻すこと(504)と、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)と、を含む。しかしながら、図8の方法が図5の方法と異なるのは、図8の方法において、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)が、SLMPM(146)によってアクセレレータ上の実行スレッド(169)を無効化すること(802)を含む点である。SLMPM(146)によってアクセレレータ上の実行スレッド(169)を無効化する(802)には、コマンドの引数として実行スレッドのPIDを用いてUnixタイプの「kill」システム・コマンドを実行すれば良い。
【0074】
更に説明を行うため、図9は、本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理のための更に別の例示的な方法を示すフロー・チャートを示す。図9の方法は、図5の方法と同様に、本明細書において上述したハイブリッド・コンピューティング環境と類似したハイブリッド・コンピューティング環境において実行される。かかるハイブリッド・コンピューティング環境は、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(図2の110)およびアクセレレータ・アーキテクチャを有するアクセレレータ(図2の104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。ホスト・コンピュータ(図2の110)およびアクセレレータ(図2の104)は、システム・レベル・メッセージ伝達モジュール(図2の146)または任意に少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(図2の128、130)によるデータ通信のために相互に適合されている。また、図9の方法は、図5の方法と同様に、ホスト・アプリケーション・プロセス(167)の命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ上で実行スレッド(169)を開始すること(502)と、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセス(167)に、実行スレッド(169)のためのプロセス識別子(「PID」)(506)を戻すこと(504)と、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)と、を含む。しかしながら、図9の方法が図5の方法と異なるのは、図9の方法が、SLMPM(146)によってホスト・アプリケーション・プロセス(167)の終了を検出すること(902)、および、この終了時にSLMPM(146)によってアクセレレータ上の実行スレッド(169)を無効化すること(904)を含む点である。ホスト・アプリケーション・プロセス(167)の終了を検出する(902)には、連続的または周期的にホスト・アプリケーション・プロセス(167)の実行を監視すれば良い。SLMPM(146)は、Unixタイプの「kill」コマンドによって、上述したようにアクセレレータ上の実行スレッド(169)を無効化することができる。
【0075】
更に説明を行うため、図10は、本発明の実施形態に従ったハイブリッド・コンピューティング環境におけるデータ処理のための更に別の例示的な方法を示すフロー・チャートを示す。図10の方法は、図5の方法と同様に、本明細書において上述したハイブリッド・コンピューティング環境と類似したハイブリッド・コンピューティング環境において実行される。かかるハイブリッド・コンピューティング環境は、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータ(図2の110)およびアクセレレータ・アーキテクチャを有するアクセレレータ(図2の104)を含む。アクセレレータ・アーキテクチャは、特定クラスのコンピューティング機能の実行速度について、ホスト・コンピュータ・アーキテクチャに対して最適化されている。ホスト・コンピュータ(図2の110)およびアクセレレータ(図2の104)は、システム・レベル・メッセージ伝達モジュール(図2の146)または任意に少なくとも2つの異なる構造タイプの2つ以上のデータ通信構造(図2の128、130)によるデータ通信のために相互に適合されている。また、図10の方法は、図5の方法と同様に、ホスト・アプリケーション・プロセス(167)の命令で、システム・レベル・メッセージ伝達モジュール(146)によって、アクセレレータ上で実行スレッド(169)を開始すること(502)と、システム・レベル・メッセージ伝達モジュール(146)によって、ホスト・アプリケーション・プロセス(167)に、実行スレッド(169)のためのプロセス識別子(「PID」)(506)を戻すこと(504)と、ホスト・アプリケーション・プロセス(167)によって、アクセレレータ上の実行スレッド(169)を、あたかも実行スレッド(169)がホスト・コンピュータ上の実行スレッドであるかのように管理すること(508)と、を含む。しかしながら、図10の方法が図5の方法と異なるのは、図10の方法が、ホスト・アプリケーション・プロセス(167)の命令で、SLMPM(146)によって、アクセレレータ上の実行スレッド(169)が終了したか否かの判定を含めて、待機関数を実行すること(906)、および、待機関数のリターン時に、SLMPM(146)によって、ホスト・アプリケーション・プロセス(167)に、アクセレレータ上の実行スレッド(169)が終了したと教えること(908)を含む点である。待機関数を実行する(906)には、ホスト・アプリケーション・プロセス(169)から、SLMPM(146)によって、プロセス間データ通信メッセージとして待機関数を実行するための命令を受信すれば良い。この命令は、アクセレレータ(104)上で動作している実行スレッド(169)のPIDを含む。待機関数のリターン時に、ホスト・アプリケーション・プロセス(167)に、アクセレレータ上の実行スレッド(169)が終了したことを教える(908)には、アクセレレータ上の実行スレッド(169)が終了したことの通知を、プロセス間データ通信メッセージ(910)内で送信すれば良い。
【0076】
本発明の例示的な実施形態について、主として、完全に機能するハイブリッド・コンピューティング環境におけるデータ処理の文脈で説明する。しかしながら、本発明の方法の態様は、いずれかの適切なデータ処理システムと共に用いるために信号記録媒体上に配されたコンピュータ・プログラムにおいて具現化可能であることは、当業者には理解されよう。かかる信号記録媒体は、磁気媒体、光媒体、または他の適切な媒体を含む、機械読み取り可能情報のための伝送媒体または記録可能媒体とすることができる。記録可能媒体の例は、ハード・ドライブにおける磁気ディスクまたはディスケット、光ドライブのためのコンパクト・ディスク、磁気テープ、および当業者に想起されるような他のものを含む。伝送媒体の例は、音声通信のための電話ネットワーク、ならびに、例えばイーサネット(TM)等のデジタル・データ通信ネットワーク、ならびに、インターネット・プロトコルおよびワールド・ワイド・ウェブによって通信を行うネットワークを含む。適切なプログラミング手段を有するいかなるコンピュータ・システムも、プログラムにおいて具現化されるように本発明の方法のステップを実行可能であることは、当業者には直ちに認められよう。本明細書において記載した例示的な実施形態のいくつかは、コンピュータ・ハードウェア上にインストールされて実行するソフトウェアに適応させているが、ファームウェアとして、またはハードウェアとして実施される代替的な実施形態が本発明の範囲内であることは、当業者には直ちに認められよう。
【0077】
前述の記載から、本発明の真の精神から逸脱することなく本発明の様々な実施形態において変形および変更が可能であることは理解されよう。本明細書における記載は、例示の目的のためだけのものであり、限定の意味で解釈されるものではない。本発明の範囲は、特許請求の範囲の文言によってのみ限定される。
【符号の説明】
【0078】
100 ハイブリッド・コンピューティング環境
102、103 コンピュータ・ノード
104 アクセレレータ
110 ホスト・コンピュータ
146 システム・レベル・メッセージ伝達モジュール
167 ホスト・アプリケーション・プロセス
169 実行スレッド

【特許請求の範囲】
【請求項1】
ハイブリッド・コンピューティング環境におけるデータ処理の方法であって、前記ハイブリッド・コンピューティング環境が、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータと、アクセレレータ・アーキテクチャを有するアクセレレータ・アーキテクチャと、を含み、前記アクセレレータ・アーキテクチャが、特定クラスのコンピューティング機能の実行速度について前記ホスト・コンピュータ・アーキテクチャに対して最適化され、前記ホスト・コンピュータおよび前記アクセレレータが、システム・レベル・メッセージ伝達モジュールによって相互にデータ通信を行うように適合され、前記ホスト・コンピュータ上でホスト・アプリケーション・プロセスが実行し、前記方法が、
前記ホスト・アプリケーション・プロセスの命令で、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上で実行スレッドを開始するステップと、
前記システム・レベル・メッセージ伝達モジュールによって、前記ホスト・アプリケーション・プロセスに対して、前記実行スレッドのためのプロセス識別子(「PID」)を戻すステップと、
前記実行スレッドが前記ホスト・コンピュータ上の実行スレッドであるかのように、前記ホスト・アプリケーション・プロセスによって前記アクセレレータ上で前記実行スレッドを管理する、ステップと、
を含む、方法。
【請求項2】
前記実行スレッドを管理するステップが、前記アプリケーション・プロセスの子プロセスとして前記実行スレッドを管理することを更に含む、請求項1に記載の方法。
【請求項3】
前記実行スレッドを管理するステップが、前記アクセレレータ上での実行スレッドの終了時に、前記システム・レベル・メッセージ伝達モジュールを介して、前記ホスト・アプリケーション・プロセスによって終了データを受信することを更に含む、請求項1に記載の方法。
【請求項4】
前記実行スレッドを管理するステップが、前記システム・レベル・メッセージ伝達モジュールを介して前記アクセレレータ上の前記実行スレッドを無効化することを更に含む、請求項1に記載の方法。
【請求項5】
前記システム・レベル・メッセージ伝達モジュールによって、前記ホスト・アプリケーション・プロセスの終了を検出することと、
前記終了時に、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドを無効化することと、
を更に含む、請求項1に記載の方法。
【請求項6】
前記ホスト・アプリケーション・プロセスの命令で、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドが終了したか否かを判定することを含めて、待機関数を実行するステップと、
前記待機関数のリターン時に、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドが終了したことを、前記ホスト・アプリケーション・プロセスに教えるステップと、
を更に含む、請求項1に記載の方法。
【請求項7】
ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータと、アクセレレータ・アーキテクチャを有するアクセレレータ・アーキテクチャと、を含むハイブリッド・コンピューティング環境であって、前記アクセレレータ・アーキテクチャが、特定クラスのコンピューティング機能の実行速度について前記ホスト・コンピュータ・アーキテクチャに対して最適化され、前記ホスト・コンピュータおよび前記アクセレレータが、システム・レベル・メッセージ伝達モジュールによって相互にデータ通信を行うように適合され、前記ホスト・コンピュータ上でホスト・アプリケーション・プロセスが実行し、前記システム・レベル・メッセージ伝達モジュールがコンピュータ・プログラム命令を含み、この命令が、
前記ホスト・アプリケーション・プロセスの命令で、前記アクセレレータ上で実行スレッドを開始し、前記ホスト・アプリケーション・プロセスに対して、前記実行スレッドのためのプロセス識別子(「PID」)を戻すことができ、
前記ホスト・アプリケーション・プロセスがコンピュータ・プログラム命令を含み、この命令が、前記実行スレッドが前記ホスト・コンピュータ上の実行スレッドであるかのように、前記アクセレレータ上で前記実行スレッドを管理することができる、
ハイブリッド・コンピューティング環境。
【請求項8】
前記実行スレッドを管理することが、前記アプリケーション・プロセスの子プロセスとして前記実行スレッドを管理することを更に含む、請求項7に記載のハイブリッド・コンピューティング環境。
【請求項9】
前記実行スレッドを管理することが、前記アクセレレータ上での実行スレッドの終了時に、前記システム・レベル・メッセージ伝達モジュールを介して、前記ホスト・アプリケーション・プロセスによって終了データを受信することを更に含む、請求項7に記載のハイブリッド・コンピューティング環境。
【請求項10】
前記実行スレッドを管理することが、前記システム・レベル・メッセージ伝達モジュールを介して前記アクセレレータ上の前記実行スレッドを無効化することを更に含む、請求項7に記載のハイブリッド・コンピューティング環境。
【請求項11】
前記システム・レベル・メッセージ伝達モジュールによって、前記ホスト・アプリケーション・プロセスの終了を検出することができ、
前記終了時に、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドを無効化することができる、
コンピュータ・プログラム命令を更に含む、請求項7に記載のハイブリッド・コンピューティング環境。
【請求項12】
前記ホスト・アプリケーション・プロセスの命令で、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドが終了したか否かを判定することを含めて、待機関数を実行することができ、
前記待機関数のリターン時に、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドが終了したことを、前記ホスト・アプリケーション・プロセスに教えることができる、
コンピュータ・プログラム命令を更に含む、請求項7に記載のハイブリッド・コンピューティング環境。
【請求項13】
ハイブリッド・コンピューティング環境におけるデータ処理のためのコンピュータ・プログラムであって、前記ハイブリッド・コンピューティング環境が、ホスト・コンピュータ・アーキテクチャを有するホスト・コンピュータと、アクセレレータ・アーキテクチャを有するアクセレレータ・アーキテクチャと、を含み、前記アクセレレータ・アーキテクチャが、特定クラスのコンピューティング機能の実行速度について前記ホスト・コンピュータ・アーキテクチャに対して最適化され、前記ホスト・コンピュータおよび前記アクセレレータが、システム・レベル・メッセージ伝達モジュールによって相互にデータ通信を行うように適合され、前記ホスト・コンピュータ上でホスト・アプリケーション・プロセスが実行し、前記コンピュータ・プログラムが、コンピュータ読み取り可能信号記録媒体上に配され、前記コンピュータ・プログラムがコンピュータ・プログラム命令を含み、この命令が、
前記ホスト・アプリケーション・プロセスの命令で、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上で実行スレッドを開始することができ、
前記システム・レベル・メッセージ伝達モジュールによって、前記ホスト・アプリケーション・プロセスに対して、前記実行スレッドのためのプロセス識別子(「PID」)を戻すことができ、
前記実行スレッドが前記ホスト・コンピュータ上の実行スレッドであるかのように、前記ホスト・アプリケーション・プロセスによって前記アクセレレータ上で前記実行スレッドを管理することができる、
コンピュータ・プログラム。
【請求項14】
前記実行スレッドを管理することが、前記アプリケーション・プロセスの子プロセスとして前記実行スレッドを管理することを更に含む、請求項13に記載のコンピュータ・プログラム。
【請求項15】
前記実行スレッドを管理することが、前記アクセレレータ上での実行スレッドの終了時に、前記システム・レベル・メッセージ伝達モジュールを介して、前記ホスト・アプリケーション・プロセスによって終了データを受信することを更に含む、請求項13に記載のコンピュータ・プログラム。
【請求項16】
前記実行スレッドを管理することが、前記システム・レベル・メッセージ伝達モジュールを介して前記アクセレレータ上の前記実行スレッドを無効化することを更に含む、請求項13に記載のコンピュータ・プログラム。
【請求項17】
前記システム・レベル・メッセージ伝達モジュールによって、前記ホスト・アプリケーション・プロセスの終了を検出することができ、
前記終了時に、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドを無効化することができる、
コンピュータ・プログラム命令を更に含む、請求項13に記載のコンピュータ・プログラム。
【請求項18】
前記ホスト・アプリケーション・プロセスの命令で、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドが終了したか否かを判定することを含めて、待機関数を実行することができ、
前記待機関数のリターン時に、前記システム・レベル・メッセージ伝達モジュールによって、前記アクセレレータ上の前記実行スレッドが終了したことを、前記ホスト・アプリケーション・プロセスに教えることができる、
コンピュータ・プログラム命令を更に含む、請求項13に記載のコンピュータ・プログラム。
【請求項19】
前記信号記録媒体が記録可能媒体を含む、請求項13に記載のコンピュータ・プログラム。
【請求項20】
前記信号記録媒体が伝送媒体を含む、請求項13に記載のコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2010−61648(P2010−61648A)
【公開日】平成22年3月18日(2010.3.18)
【国際特許分類】
【出願番号】特願2009−176070(P2009−176070)
【出願日】平成21年7月29日(2009.7.29)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】