(57)【特許請求の範囲】
【請求項１】
第１情報処理装置及び第２情報処理装置を有する並列処理装置であって、
前記第１情報処理装置は、
所定処理を表す第１識別子及び宛先通信インタフェースを表す論理識別子である第２識別子を宛先として付加したパケットをＲＤＭＡ通信で前記第２情報処理装置へ送信する送信部を備え、
前記第２情報処理装置は、
複数の通信インタフェースと、
前記第１情報処理装置から送信されたパケットをＲＤＭＡ通信で受信し、受信したパケットに付加された前記第１識別子及び前記第２識別子を基に、前記受信したパケットの宛先となる前記所定処理で使用される通信インタフェースを選択し、選択した通信インタフェースに前記受信したパケットを転送する受信部とを備えた
ことを特徴とする並列処理装置。
【請求項２】
前記第２情報処理装置で実行される、それぞれが異なる用途の通信を行う前記所定処理を含む複数の処理のそれぞれに前記第１識別子を含む一意の大域識別子を割り当てる第１割当部を備えた管理装置をさらに備えたことを特徴とする請求項１に記載の並列処理装置。
【請求項３】
前記所定処理は、１つ又は複数のプロセスを有する各並列計算タスクであり、
前記第２情報処理装置は、複数の前記通信インタフェースの中で、各前記プロセスが使用する通信インタフェースのそれぞれに異なる第２識別子を割り当てる第２割当部をさらに備えた、
ことを特徴とする請求項１又は２に記載の並列処理装置。
【請求項４】
前記第１情報処理装置は、
前記所定処理を実行する第１実行部をさらに有し、
前記第２情報処理装置は、
前記所定処理を前記第１実行部と協働して実行する第２実行部をさらに有し、
前記送信部は、前記第１実行部により実行された所定処理によるパケット送信の場合、前記第１識別子及び前記第２識別子を宛先として付加したパケットをＲＤＭＡ通信で第２情報処理装置へ送信し、
前記受信部は、受信したパケットに付加された前記第１識別子を基に前記第２実行部により実行される前記所定処理を特定し、前記第２識別子を基に前記所定処理で使用されるパケットの宛先となる前記通信インタフェースを選択し、選択した通信インタフェースに前記受信したパケットを転送する受信部とを備えた
ことを特徴とする請求項１〜３のいずれか一つに記載の並列処理装置。
【請求項５】
第１情報処理装置及び複数の通信インタフェースを有する第２情報処理装置の間の通信制御方法であって、
前記第１情報処理装置に、所定処理を表す第１識別子及び宛先通信インタフェースを表す論理識別子である第２識別子を宛先として付加したパケットをＲＤＭＡ通信で前記第２情報処理装置へ送信させ、
前記第２情報処理装置に、前記第１情報処理装置から送信されたパケットをＲＤＭＡ通信で受信させ、受信したパケットに付加された前記第１識別子及び前記第２識別子を基に、前記受信したパケットの宛先となる前記所定処理で使用される通信インタフェースを選択させ、選択した通信インタフェースへ前記受信したパケットを転送させる
ことを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理装置及び通信制御方法に関する。
【背景技術】
【０００２】
近年、ＨＰＣ（High  Performance  Computing）分野では、それぞれがプロセッサとメモリを備え、独立してＯＳ（Operating  System）を実行するノードを、インターコネクトによって多数接続した構成を有する分散メモリ型並列計算機が主流となっている。このような分散メモリ型並列計算機では、各ノードでプロセスが起動され、起動されたプロセスは相互に通信してデータを交換しながら並列計算を行う。インターコネクトは、ノード間を接続するネットワークと、ノードがネットワークに接続するためのデバイスを有する。
【０００３】
２つのノード間でデータを確実に転送するには、ノード間を接続するネットワーク及びデバイスの特性に合わせた手順で通信が制御される。ノード間を接続するネットワーク及びノードがネットワークに接続するためのデバイスの特性に合わせた手順は、プロトコルとも呼ばれる。
【０００４】
インターネットで使用されるＴＣＰ（Transmission  Control  Protocol）／ＩＰ（Internet  Protocol）プロトコルのプロトコル処理は、一般的にＯＳのプロトコルスタックが行う。各プロセスは、Ｂａｒｋｌｅｙ  Ｓｏｃｋｅｔなどのソフトウェア・インタフェースによって、プロトコルスタックに対するデータ入出力を行う。プロトコルスタックによるプロトコル処理は、ＯＳのシステムプロセスで実行される。すなわち、プロトコル処理を行う場合、割り込みなどでプロセッサが実行する処理がＯＳカーネルに移り、その間プロセッサは、他の計算を行うことが困難である。
【０００５】
プロセッサの演算効率を上げる、すなわち実行性能を理論性能に近づけるには、プロセッサは、プロトコル処理を行わない方がよい。そこで、ＨＰＣ分野では、一般的にＲＤＭＡ（Remote  Direct  Memory  Access）と呼ばれる方式でデータを転送する。ＲＤＭＡは、送信元プロセスが管理するメモリをインターコネクトのデバイスが直接読み出し、ノード間を接続するネットワークでデータを転送し、宛先プロセスが管理するメモリに直接書き込む技術である。
【０００６】
このＲＤＭＡ方式であっても、他のプロトコル処理と同様に、通信開始制御を受けて処理が開始される。ＲＤＭＡにおける通信開始制御は、ハードウェアの観点では、メモリ空間にマップされるメモリマップドレジスタによって通信開始を制御する方式が一般的である。また、ソフトウェアの観点では、ＲＤＭＡにおける通信開始制御は、インターコネクトも入出力デバイスの一種であることから、ＯＳが各プロセスの通信開始要求を取りまとめ、デバイスドライバが代表して通信を制御する方式が一般的である。デバイスドライバとは、様々なプロセスからの入出力機器への制御要求を取りまとめ、代表で制御するためのＯＳの仕組みである。
【０００７】
デバイスドライバ経由の通信開始制御は、プロセスの処理を中断してＯＳカーネルの処理に移行する処理を伴う。この処理は、ソフトウェアの観点からはプロセススイッチと呼ばれ、ハードウェアの観点からはコンテキストスイッチと呼ばれる。プロセスの処理を中断してＯＳカーネルの処理に移行する処理は、オーバヘッドの大きい処理のため、プロセッサの計算時間が重要であるＨＰＣにおいては、回避することが好ましい。例えば、通信インタフェースと呼ばれる制御レジスタの組を複数用意し、各プロセスの仮想メモリ空間にそのプロセスが占有利用する通信インタフェースを割り当てることで、デバイスドライバ経由の通信開始制御を回避することができる。この通信インタフェースは、インターコネクトにおけるノードがネットワークに接続するためのデバイスにあたる。
【０００８】
ここで、複数の通信インタフェースを有するインターコネクトを搭載する並列計算機では、ノード内の各プロセスだけでなく、ファイル入出力やシステム制御などのシステム向けの通信を行う処理にも通信インタフェースが割り当てられる。ここで、システム向けの通信とは、ノード動作時に経常的に動作しているプロセスにおける通信であり、例えば、システム全体を管理するプログラムによる管理用の通信や、ストレージ装置との通信などである。
【０００９】
システムソフトウェアによるシステム向けの通信を行う処理に対する通信インタフェースの割り当ては、固定的である傾向がある。このような固定的な通信インタフェースの割り当てでは、通信資源の拡張は困難である。また、固定的に通信インタフェースを割り当てた場合、仮想マシンを導入する際には、ソフトウェアによるインターコネクトの仮想化が行われることになる。
【００１０】
なお、クラスタシステム全体に割り当てた大域識別子と、各計算機内で用いる局所識別子との対応関係を用いた計算機クラスタの従来技術がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−３１６６３７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、仮想化に対応しているインターコネクトでは、実際の通信インタフェースの数を隠蔽するために、ＯＳ及びデバイスドライバが通信インタフェースを管理する。その場合、システム向け通信を行う処理であっても動的に通信インタフェースが割り当てられる。
【００１３】
ただし、動的に割り当てられた通信インタフェース同士で通信を行うには、ノード間で事前に、ＴＣＰ（Transmission  Control  Protocol）／ＩＰ（Internet  Protocol）などを用いて通信インタフェースの識別子の交換が行われる。そのため、実質的に他の通信手段を用いることになり、システム向け通信用途としての使用には適さない。このような理由から、システム向け通信を行う処理に対して動的に通信インタフェースを割り当てることは好ましくない。
【００１４】
一方、仮想化に対応していない通信インターコネクトでは、システム向け通信用途で通信インタフェースを固定的に使用した場合、仮想マシン導入時に仮想マシン間で通信インタフェースの競合が発生するおそれがある。この場合、競合の解消のためにソフトウェアによる仮想化が用いられるが、ソフトウェア処理のためのオーバヘッドが大きいため、ＨＰＣ分野で用いることは困難である。このように、システム向け通信用途で通信インタフェースを固定的に使用した場合、他の処理に影響を与え、並列処理装置の処理能力の低下を招く。
【００１５】
また、仮想マシン間の通信インタフェースの競合回避として、仮想化した入出力デバイスを多重化する方法が考えられる。例えば、従来、仮想化された複数の入出力デバイスを仮想マシン毎に割り当てることで、入出力デバイスを多重化することが行われてきた。この方式をインターコネクトに適用した場合、仮想マシン導入時の仮想マシン間での通信インタフェースの競合は避けられる。しかし、このような方法で仮想的な入出力デバイスを多重化しても、実体は１つであるので、設定レジスタの競合回避などをハードウェアで実装することになり、実装が複雑になってしまう。
【００１６】
なお、大域識別子と局所識別子との対応関係を用いる計算機クラスタの従来技術は、クラスタにおけるリソースの管理に用いられる情報であり、ノード間の通信に用いることは困難である。
【００１７】
開示の技術は、上記に鑑みてなされたものであって、簡易な構成で処理能力を向上させた並列処理装置及び通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本願の開示する並列処理装置及び通信制御方法の一つの態様において、並列処理装置は第１情報処理装置及び第２情報処理装置を有する。前記第１情報処理装置は、所定処理を表す第１識別子及び宛先通信インタフェースを表す論理識別子である第２識別子を宛先として付加したパケットをＲＤＭＡ通信で前記第２情報処理装置へ送信する送信部を備える。前記第２情報処理装置は、複数の通信インタフェースと、前記第１情報処理装置から送信されたパケットをＲＤＭＡ通信で受信し、受信したパケットに付加された前記第１識別子及び前記第２識別子を基に、前記受信したパケットの宛先となる前記所定処理で使用される通信インタフェースを選択し、選択した通信インタフェースに前記受信したパケットを転送する受信部とを備える。
【発明の効果】
【００１９】
本願の開示する並列処理装置及び通信制御方法の一つの態様によれば、簡易な構成で処理能力を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】図１は、並列処理装置の構成図である。
【図２】図２は、ノード及び管理装置のブロック図である。
【図３】図３は、割当テーブルの一例を表す図である。
【図４】図４は、ＧＰＩＤ及び論理ＩＤを用いたノード間のＲＤＭＡ通信を説明するための図である。
【図５】図５は、ＧＰＩＤ及び論理ＩＤの割当処理のフローチャートである。
【図６】図６は、通信インタフェースに受信したパケットを割り当てる処理のフローチャートである。
【発明を実施するための形態】
【００２１】
以下に、本願の開示する並列処理装置及び通信制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する並列処理装置及び通信制御方法が限定されるものではない。
【実施例】
【００２２】
図１は、並列処理装置の構成図である。図１に示すように、本実施例に係る並列処理装置１は、ノード１１〜１３を含む複数のノードを有する。ノード１１〜１３を含む各ノードを区別しない場合、「ノード１０」という。ノード１０は、第１情報処理装置及び第２情報処理装置の一例にあたる。また、並列処理装置１は、管理装置２０、ネットワーク３０及びストレージ装置４０を有する。
【００２３】
ネットワーク３０は、インターコネクトを形成するネットワークであり、ノード１０同士を接続する。
【００２４】
管理装置２０は、各ノード１０にＴＣＰ／ＩＰなどを用いて接続される。管理装置２０は、各ノード１０への並列計算タスクの割り当てや各ノード１０の異常の検出などを行う。
【００２５】
ストレージ装置４０は、各ノード１０にＴＣＰ／ＩＰなどを用いて接続される。ストレージ装置４０は、並列計算に用いるプログラムやデータを格納する。ここで、本実施例では、並列処理装置１にノード１０とは別にプログラムやデータを格納するストレージ装置４０を配置したが、各ノード１０にハードディスクを搭載し、そのハードディスクの中にプログラムやデータを格納する構成にしてもよい。
【００２６】
ノード１１は、プロセッサ１１１、メモリ１１２、通信インタフェース１１３及び送受信回路１１４を有する。ノード１２は、プロセッサ１２１、メモリ１２２、通信インタフェース１２３及び送受信回路１２４を有する。ノード１３は、プロセッサ１３１、メモリ１３２、通信インタフェース１３３及び送受信回路１３４を有する。ノード１１，１２及び１３は、いずれも同じ動作をするので、ここでは、ノード１１を例に説明する。
【００２７】
プロセッサ１１１は、演算処理部である。プロセッサ１１１は、ＯＳを動作させる。さらに、プロセッサ１１１は、ストレージ装置４０に格納されたプログラムを読み出し、メモリ１１２上にプロセスを展開して実行する。そして、プロセッサ１１１は、プロセスを実行することで、メモリ１１２を用いて演算処理を行う。また、プロセッサ１１１は、通信インタフェース１１３を用いて他のノード１２や１３との間で通信を行う。また、プロセッサ１１１は、通信インタフェース１１３に対してＲＤＭＡによる通信（以下では、「ＲＤＭＡ通信」という。）を指示することで、通信インタフェース１１３にＲＤＭＡ通信を実行させる。
【００２８】
メモリ１１２は、主記憶装置である。メモリ１１２は、例えば、ＲＡＭ（Random  Access  Memory）である。
【００２９】
通信インタフェース１１３は、インターコネクトにおけるノード１１がネットワーク３０に接続するためのデバイスである。通信インタフェース１１３は、それぞれ複数の物理的な通信インタフェースを有する。ここで、通信インタフェース１１３、１２３及び１３３といった各ノード１０に含まれる通信インタフェースの数に特に制限は無く、ノード１０毎に通信インタフェースの数が異なってもよい。
【００３０】
通信インタフェース１１３は、ＲＤＭＡによりデータ送信を行うことができる。通信インタフェース１１３は、プロセッサ１１１から独立して動作する専用回路などで構成される演算処理装置を有する。通信インタフェース１１３によるＲＤＭＡ通信を用いたデータ送信及び受信応答などの制御は、この演算処理装置により実現される。通信インタフェース１１３は、それぞれに物理的な識別子である物理ＩＤ（Identifier）が割り当てられる。また、通信インタフェース１１３は、それぞれに後述する論理ＩＤが割り当てられる。また、通信インタフェース１１３は、プロセッサ１１１が実行するプロセスにより、各プロセスが使用する通信インタフェースとして対応付けられる。
【００３１】
通信インタフェース１１３は、ＲＤＭＡ通信でデータを他のノード１０へ送信する場合、宛先の通信インタフェースの物理ＩＤが付加されたパケットを送受信回路１１４に送信する。また、ＲＤＭＡ通信でデータを他のノード１０から受信する場合、通信インタフェース１１３は、送受信回路１１４からパケットを受信し、プロセッサ１１１によって実行される対応するプロセスにパケットを転送する。
【００３２】
送受信回路１１４は、通信インタフェース１１３が実行するＲＤＭＡ通信を仲介する。具体的には、送受信回路１１４は、通信インタフェース１１３が送出したパケットを受信する。そして、送受信回路１１４は、宛先を後述するＧＰＩＤ（Group  Identifier）及び論理ＩＤに変更する。そして、送受信回路１１４は、宛先を変更したパケットをネットワーク３０を介して他のノード１０へ送信する。
【００３３】
また、送受信回路１１４は、他のノード１０からネットワーク３０を介して受信したパケットの宛先から使用する通信インタフェース１１３及び宛先となるプロセスを特定する。そして、送受信回路１１４は、特定した通信インタフェース１１３を介して特定したプロセスにパケットを送信する。
【００３４】
ここで、本実施例に係る並列処理装置１において、ノード１１のメモリ１１２に格納されたデータをノード１２との間でＲＤＭＡにより送受信する処理について詳細に説明する。
【００３５】
図２は、ノード及び管理装置のブロック図である。ここでは、ノード１１を含むノード１０に並列計算タスクを実行させる場合で説明する。並列計算タスクの実行は、複数のノード１０において１つ又は複数のプロセスがタスク実行部１００により実行されることで実現される。すなわち、並列計算タスクは、タスク実行部１００で実行されるプロセスを含む各ノード１０で実行される複数のプロセスにより実現される。以下では、ノード１１を含むノード１０に実行させる特定の並列計算タスクを、「実行タスク」という。また、並列計算タスクを実現するための各プロセスを、「その並列計算タスクに属するプロセス」という。
【００３６】
管理装置２０は、ＧＰＩＤ割当部２１及びタスク割当部２２を有する。タスク割当部２２は、実行する並列計算タスク及びその並列計算タスクで使用するノード数などの資源の情報の入力を操作者から受ける。そして、タスク割当部２２は、指定された並列計算タスクを実行させるノード１０、言い換えれば、並列計算タスクを割り当てるノード１０を決定する。ここでは、タスク割当部２２は、ノード１１を含む複数のノード１０に実行タスクを割り当てる。
【００３７】
タスク割当部２２は、実行タスクを実行するためにノード１１に実行させるプログラムの情報をノード１１のタスク実行部１００に通知する。さらに、タスク割当部２２は、実行タスクを割り当てたノード１１を含むノード１０の情報をＧＰＩＤ割当部２１へ通知する。
【００３８】
ＧＰＩＤ割当部２１は、並列処理装置１で実行される並列計算タスク毎に並列計算タスクの識別子であるＧＰＩＤを割り当てる。具体的には、ＧＰＩＤ割当部２１は、並列計算タスクのノード１０に対する割り当てがタスク割当部２２から通知される毎に、数字を１つインクリメントするなどして、それぞれの並列計算タスクに一意のＧＰＩＤを割り当てる。例えば、ＧＰＩＤ割当部２１は、実行タスクを割り当てたノード１１を含むノード１０の情報をタスク割当部２２から取得する。そして、ＧＰＩＤ割当部２１は、実行タスクに一意のＧＰＩＤを割り当てる。このＧＰＩＤが、「第１識別子」及び「大域識別子」の一例にあたる。
【００３９】
さらに、ＧＰＩＤ割当部２１は、並列計算タスクが割り当てられた各ノード１０にその割り当てられた並列計算タスクに対応するＧＰＩＤを通知する。例えば、ＧＰＩＤ割当部２１は、実行タスクに対応するＧＰＩＤをノード１１の送受信回路１１４のテーブル生成部１４２に通知する。このＧＰＩＤ割当部２１は、「第１割当部」の一例にあたる。
【００４０】
ここで、本実施例では、並列計算タスクに対するＧＰＩＤの割り当てを例に説明したが、ＧＰＩＤの割り当て対象はこれに限らず、ＧＰＩＤ割当部２１は、例えば、並列処理装置１が実行する特定の通信を行う処理毎にＧＰＩＤを割り当てる。特定の通信を行う処理毎とは、例えば、ストレージとの通信、システム全体を管理するプログラムによる管理用の通信を行う処理といった、並列計算処理装置において決められた通信を行う処理毎である。この並列計算タスクを含む特定の通信を行う処理及び並列計算タスクを実行する仮想マシンが、「所定処理」の一例にあたる。ここで、仮想マシンとは、コンピュータの動作をエミュレートするソフトウェアやフレームワークであり、処理の一例として考えられる。
【００４１】
ノード１１は、タスク実行部１００、通信インタフェース１１３及び送受信回路１１４を有する。図２では、１つの通信インタフェース１１３を図示しているが、実際には、図１で図示したように、通信インタフェース１１３は、複数の通信インタフェースを有する。以下では、通信インタフェース１１３は、ノード１１に搭載された複数の通信インタフェースの何れかであるとする。
【００４２】
タスク実行部１００は、図２のプロセッサ１１１及びメモリ１２２により実現される。タスク実行部１００は、論理ＩＤ割当部１１０を有する。
【００４３】
タスク実行部１００は、実行タスクを実行するためのノード１１で実行するプログラムの情報をタスク割当部２２から取得する。そして、タスク実行部１００は、指定されたプログラムをストレージ装置４０から取得する。その後、タスク実行部１００は、取得したプログラムを実行してプロセスを生成する。
【００４４】
プロセス生成後、タスク実行部１００は、自己が実行する実行タスクに属するプロセス及び実行タスクが割り当てられた他のノード１０で生成された実行タスクに属するプロセスの全てと同期をとる。タスク実行部１００は、この同期のための通信を、例えば、適当な通信インタフェース１１３及び送受信回路１１４を介して他のノード１０と行う。
【００４５】
また、タスク実行部１００の論理ＩＤ割当部１１０は、タスク実行部１００がプログラムを実行することで、そのプログラムから生成されるプロセスが使用する通信インタフェース１１３の個数を取得する。そして、論理ＩＤ割当部１１０は、取得した個数に合わせてプロセスが使用する通信インタフェース１１３を決定する。さらに、論理ＩＤ割当部１１０は、プロセスが使用する通信インタフェース１１３のそれぞれに実行タスクを実行するノード１０の全てに亘って一意の論理ＩＤを割り当てる。
【００４６】
例えば、論理ＩＤ割当部１１０は、異なるプロセスであっても同じ並列計算タスクに含まれるプロセスであれば、各プロセスが使用する通信インタフェース１１３に対して、重複しないように論理ＩＤを割り当てる。これに対して、異なる並列計算タスクに含まれるプロセスであれば、論理ＩＤ割当部１１０は、それぞれのプロセス間での重複を許して通信インタフェース１１３に論理ＩＤを割り当てる。この論理ＩＤが、「第２識別子」の一例にあたる。
【００４７】
論理ＩＤ割当部１１０は、実行タスクの情報とともに、その実行タスクのプロセスが使用する通信インタフェース１１３に割り当てた論理ＩＤとその通信インタフェース１１３の物理ＩＤとの対応関係をテーブル生成部１４２へ通知する。この論理ＩＤ割当部１１０は、「第２割当部」の一例にあたる。
【００４８】
そして、タスク実行部１００は、論理ＩＤ割当部１１０による論理ＩＤの割り当て後、自己が実行する実行タスクに属するプロセス及び実行タスクが割り当てられた他のノード１０で生成された実行タスクに属するプロセスの全てと同期をとる。
【００４９】
その後、タスク実行部１００は、生成したプロセスを実行し、他のノード１０が実行するプロセスと協働させることで、実行タスクを実行する。このプロセスの実行により、タスク実行部１００は、他のノード１０とのＲＤＭＡ通信の実行を決定し、ＲＤＭＡ通信を行うプロセスに対応する他のノード１０が実行するプロセスの通信インタフェース１１３との間でＲＤＭＡ通信を行わせる。例えば、ノード１１とノード１２との間におけるＲＤＭＡ通信について説明する。その場合、タスク実行部１００は、ＲＤＭＡ通信を行うプロセスがノード１２との通信で使用する通信インタフェース１１３に、ノード１２との間でのＲＤＭＡ通信によるデータの送信又は受信を指示する。このタスク実行部１００が、「第１実行部」及び「第２実行部」の一例にあたる。
【００５０】
通信インタフェース１１３は、タスク実行部１００からＲＤＭＡ通信の通知を受ける。ここで、通信インタフェース１１３は、ＲＤＭＡ通信を行うノード１２の通信インタフェース１２３の論理ＩＤの情報を予め有する。通信インタフェース１１３は、ＲＤＭＡ通信として、例えば、ノード１２に対するＰｕｔ又はＧｅｔの要求を受ける。通信インタフェース１１３は、Ｐｕｔ要求を受けた場合、論理ＩＤを用いてデータを格納したパケットをノード１２の通信インタフェース１２３へ送信する。また、通信インタフェース１１３は、Ｇｅｔ要求を受けた場合、論理ＩＤを用いてデータの送信要求のパケットをノード１２の通信インタフェース１２３へ送信する。その後、通信インタフェース１１３は、データを格納したパケットを送受信回路１１４を介してノード１２の通信インタフェース１２３から受信する。そして、通信インタフェース１１３は、受信したパケットに格納されたデータを、パケットで指定されたメモリ１１２の領域へ格納する。
【００５１】
通信インタフェース１１３は、送信するパケットを生成する場合に以下のような処理を行う。まず、通信インタフェース１１３は、対応するプロセスが属する実行タスクのＧＰＩＤ及びＲＤＭＡ通信の予め決められた通信先であるノード１２の通信インタフェース１２３の論理ＩＤをパケットの宛先としてパケットのヘッダに格納する。さらに、通信インタフェース１１３は、パケットの送信元として自己の物理ＩＤをパケットのヘッダに格納する。そして、通信インタフェース１１３は、生成したパケットを送受信回路１１４のパケット送信部１４３へ出力する。
【００５２】
また、パケットを受信する場合、通信インタフェース１１３は、ＲＤＭＡ通信の予め決められた通信先であるノード１２の通信インタフェース１２３から送信されたパケットを後述する送受信回路１１４のパケット受信部１４４から受信する。
【００５３】
送受信回路１１４は、記憶部１４１、テーブル生成部１４２、パケット送信部１４３及びパケット受信部１４４を有する。記憶部１４１、テーブル生成部１４２、パケット送信部１４３及びパケット受信部１４４は、例えば、送受信回路１１４を構成する専用回路により実現される。
【００５４】
記憶部１４１は、データを保持するデータ保持回路である。以下では、記憶部１４１が、割当テーブル４０１を保持するとして説明するが、実際には、記憶部１４１は、情報の対応関係を記憶する。
【００５５】
テーブル生成部１４２は、タスク実行部１００が実行する実行タスクに割り当てられたＧＰＩＤをＧＰＩＤ割当部２１から受信する。さらに、テーブル生成部１４２は、実行タスクの情報とともに、その実行タスクのプロセスが使用する通信インタフェース１１３に割り当てられた論理ＩＤとその通信インタフェース１１３の物理ＩＤとの対応関係を論理ＩＤ割当部１１０から取得する。
【００５６】
次に、テーブル生成部１４２は、各通信インタフェース１１３を使用するプロセスが属する実行タスクに割り当てられたＧＰＩＤを取得する。そして、テーブル生成部１４２は、各通信インタフェース１１３の物理アドレスと、取得したＧＰＩＤ及びその通信インタフェース１１３に割り当てられた論理ＩＤとの対応を表す図３に示すような割当テーブル４０１を作成する。図３は、割当テーブルの一例を表す図である。その後、テーブル生成部１４２は、生成した割当テーブル４０１を記憶部１４１に記憶させる。
【００５７】
図３に示すように、割当テーブル４０１には、通信インタフェース１１３の物理ＩＤに対応させて、ＧＰＩＤ及び論理ＩＤが登録される。ここで、割当テーブル４０１では、ノード１１の通信インタフェース１１３の物理ＩＤと、ＧＰＩＤ及び論理ＩＤの組とが一意に対応する。したがって、割当テーブル４０１を用いることで、ＧＰＩＤ及び論理ＩＤの組から通信インタフェース１１３の物理ＩＤが特定できる。
【００５８】
パケット送信部１４３は、ＲＤＭＡ通信のパケット送信時に通信インタフェース１１３からパケットの入力を受ける。そして、パケット送信部１４３は、ＲＤＭＡ通信でパケットをノード１２などの他のノード１０へ送信する。このパケット送信部１４３が、「送信部」の一例にあたる。
【００５９】
パケット受信部１４４は、ＲＤＭＡ通信でパケットをノード１２などの他のノード１０から受信する。そして、パケット受信部１４４は、受信したパケットのヘッダに格納されたパケットの宛先を表すＧＰＩＤ及び論理ＩＤの組を取得する。次に、パケット受信部１４４は、ノード１１におけるＧＰＩＤ及び論理ＩＤの組に対応する通信インタフェース１１３の物理ＩＤを割当テーブル４０１から取得する。そして、パケット受信部１４４は、取得した物理ＩＤを有する通信インタフェース１１３を選択する。その後、パケット受信部１４４は、受信したパケットを選択した通信インタフェース１１３へ送信する。このパケット受信部１４４は、「受信部」の一例にあたる。
【００６０】
このように、パケット受信部１４４は、通信インタフェース１１３に割り当てられた論理ＩＤと実行タスクのＧＰＩＤを用いて、そのパケットの宛先のプロセスが使用する通信インタフェース１１３にパケットを送信することができる。すなわち、各ノード１０は、通信インタフェース１１３に動的に割り当てられた論理ＩＤを用いてＲＤＭＡ通信を確実に行うことができる。
【００６１】
次に、図４を参照して、ノード１１とノード１２との間のＲＤＭＡ通信についてまとめて説明する。図４は、ＧＰＩＤ及び論理ＩＤを用いたノード間のＲＤＭＡ通信を説明するための図である。図４では、説明の都合上、ソフトウェアとハードウェアとを混在させて記載している。
【００６２】
ここでは、ノード１１及び１２において並列計算タスク１０１及び１０２が実行されている。そして、ノード１１には通信インタフェース１１３として通信インタフェース３１１〜３１４が搭載されており、ノード１２には通信インタフェース１１３として通信インタフェース３２１〜３２４が搭載されている場合で説明する。
【００６３】
ノード１１の通信インタフェース３１１〜３１４は、物理ＩＤとしてそれぞれＩＦ＃０〜＃３を有する。そして、並列計算タスク１０１が使用する通信インタフェース１１３として、通信インタフェース３１１〜３１３が割り当てられる。また、並列計算タスク１０１に、ＧＰＩＤ＃０が割り当てられる。そして、通信インタフェース３１１〜３１３に、論理ＩＤとして、ＬＩＦ＃０〜＃２が割り当てられる。また、並列計算タスク１０２が使用する通信インタフェース１１３として、通信インタフェース３１４が割り当てられる。また、並列計算タスク１０２に、ＧＰＩＤ＃１が割り当てられる。そして、通信インタフェース３１４に、論理ＩＤとして、ＬＩＦ＃０〜＃２が割り当てられる。
【００６４】
ノード１２の通信インタフェース３２１〜３２４は、物理ＩＤとしてそれぞれＩＦ＃０〜＃４を有する。ここで、ノード１０間では、通信インタフェース１１３の物理ＩＤは重なってもよい。そして、並列計算タスク１０１が使用する通信インタフェース１１３として、通信インタフェース３２１及び３２２が割り当てられる。そして、通信インタフェース３２１及び３２２に、論理ＩＤとして、それぞれＬＩＦ＃０及び＃１が割り当てられる。また、並列計算タスク１０２が使用する通信インタフェース１１３として、通信インタフェース３２３及び３２４が割り当てられる。そして、通信インタフェース３２３及び３２４に、論理ＩＤとして、それぞれＬＩＦ＃０及び＃１が割り当てられる。
【００６５】
また、ノード１１の送受信回路１１４は、割当テーブル４０１が格納されている。また、ノード１２の送受信回路１２４は、割当テーブル４０２が格納されている。そして、割当テーブル４０１及び４０２には、ノード１１に搭載された通信インタフェース３１１〜３１４の物理ＩＤであるＩＦ＃０〜４に対応させて、ＧＰＩＤ及び論理ＩＤが登録されている。また、割当テーブル４０１及び４０２には、ノード１２に搭載された通信インタフェース３２１〜３２４の物理ＩＤであるＩＦ＃０〜４に対応させて、ＧＰＩＤ及び論理ＩＤが登録されている。例えば、ここにおける割当テーブル４０１及び４０２におけるノード１２に対するテーブルは、図３で示される割当テーブル４０１と同様である。
【００６６】
ノード１１の並列計算タスク１０１が、ノード１２の並列計算タスク１０１とＲＤＭＡ通信を行う場合について説明する。並列計算タスク１０１が通信インタフェース３１２にＲＤＭＡ通信の開始を指示する。通信インタフェース３１２は、ノード１２の論理ＩＤがＬＩＤ＃１を有する通信インタフェース１１３と通信を行うことが予め決められている。そこで、通信インタフェース３１２は、ノード１２の識別情報、並列計算タスク１０１のＧＰＩＤであるＧＰＩＤ＃０及び論理ＩＤとしてＬＩＤ＃１を宛先としてパケットのヘッダに格納する。図３では、通信インタフェース３１２によりヘッダに格納された宛先を宛先４１１として表す。そして、通信インタフェース３１２は、生成したパケットを送受信回路１１４へ送信する。送受信回路１１４は、宛先４１１に示すノード１２、ＧＰＩＤ＃０及びＬＩＦ＃１を宛先とするパケットをネットワーク３０を介してノード１２へ送信する。
【００６７】
送受信回路１２４は、宛先４１１に示すノード１２、ＧＰＩＤ＃０及びＬＩＦ＃１を宛先とするパケットを受信する。そして、送受信回路１２４は、受信したパケットのヘッダからＧＰＩＤ＃０及びＬＩＦ＃１を取得する。次に、送受信回路１２４は、割当テーブル４０２の中の列４２１で表される対応関係から、ＧＰＩＤ＃０及びＬＩＦ＃１に対応する物理ＩＤであるＩＦ＃１を取得する。そして、送受信回路１２４は、物理ＩＤがＩＦ＃１を有する通信インタフェース３２２へパケットを送信する。これにより、ノード１１の並列計算タスク１０１は、ノード１２の並列計算タスク１０１と通信を行うことができる。
【００６８】
次に、図５を参照して、ＧＰＩＤ及び論理ＩＤの割当処理の流れについて説明する。図５は、ＧＰＩＤ及び論理ＩＤの割当処理のフローチャートである。
【００６９】
管理装置２０のタスク割当部２２は、並列計算タスクを割り当てるノード１０を決定する。ＧＰＩＤ割当部２１は、タスク割当部２２により割り当てが行われた並列計算タスクに割り当てる新規ＧＰＩＤを生成する（ステップＳ１０１）。また、タスク割当部２２は、並列計算タスクを割り当てたノード１０に並列計算タスクの割り当てを通知する。そして、並列計算タスクの割り当てを通知されたノード１０のタスク実行部１００は、並列計算タスクのプロセスを生成する。
【００７０】
次に、タスク割当部２２は、生成したＧＰＩＤに対応する並列計算タスクの各プロセスを実行するタスク実行部１００にそのＧＰＩＤを送信することで、その並列計算タスクの全プロセスにＧＰＩＤを通知する（ステップＳ１０２）。
【００７１】
タスク実行部１００は、実行する並列計算タスクの全プロセス及びその並列計算タスクを実行する他のノード１０の全プロセスの間で同期を行う(ステップＳ１０３)。
【００７２】
論理ＩＤ割当部１１０は、各プロセスが使用する通信インタフェース１１３に論理ＩＤを割り当てる（ステップＳ１０４）。この時、タスク実行部１００は、異なる並列計算タスクのプロセス間では、重複を許して論理ＩＤを割り当てる。
【００７３】
次に、論理ＩＤ割当部１１０は、並列計算タスクの各プロセスが使用する通信インタフェース１１３の物理ＩＤ、各並列計算タスクのＧＰＩＤ及び各通信インタフェース１１３の論理ＩＤを送受信回路１１４のテーブル生成部１４２に送信する。テーブル生成部１４２は、受信した物理ＩＤ、ＧＰＩＤ及び論理ＩＤから割当テーブル４０１を作成する。そして、テーブル生成部１４２は、生成した割当テーブル４０１を記憶部１４１に格納する（ステップＳ１０５）。
【００７４】
その後、タスク実行部１００は、実行する並列計算タスクの全プロセス及びその並列計算タスクを実行する他のノード１０の全プロセスの間で同期を行う(ステップＳ１０６)。
【００７５】
そして、タスク実行部１００は、プロセスを実行し、並列計算を開始する（ステップＳ１０７）。
【００７６】
次に、図６を参照して、通信インタフェース１１３に受信したパケットを割り当てる処理の流れについて説明する。図６は、通信インタフェースに受信したパケットを割り当てる処理のフローチャートである。
【００７７】
送受信回路１１４のパケット受信部１４４は、他のノード１０からＲＤＭＡ通信によりパケットを受信する（ステップＳ２０１）。
【００７８】
そして、パケット受信部１４４は、受信したパケットのヘッダからパケットの宛先である並列計算タスクのＧＰＩＤ及び通信インタフェース１１３の論理ＩＤを取得する（ステップＳ２０２）。
【００７９】
次に、パケット受信部１４４は、送信元のノード１０に対応する割当テーブル４０１に登録された通信インタフェース１１３のＧＰＩＤ及び論理ＩＤとパケットの宛先のＧＰＩＤ及び論理ＩＤとを比較する（ステップＳ２０２）。
【００８０】
そして、パケット受信部１４４は、パケットの宛先とＧＰＩＤ及び論理ＩＤが一致する通信インタフェース１１３が割当テーブル４０１に登録されているか否かを判定する（ステップＳ２０３）。
【００８１】
パケットの宛先とＧＰＩＤ及び論理ＩＤが一致する通信インタフェース１１３が割当テーブル４０１に登録されている場合（ステップＳ２０３：肯定）、パケット受信部１４４は、一致した通信インタフェース１１３の物理ＩＤを取得する（ステップＳ２０４）。
【００８２】
そして、パケット受信部１４４は、取得した物理ＩＤを有する通信インタフェース１１３にパケットを送信する（ステップＳ２０５）。
【００８３】
これに対して、パケットの宛先とＧＰＩＤ及び論理ＩＤが一致する通信インタフェース１１３が割当テーブル４０１に登録されていない場合（ステップＳ２０３：否定）、パケット受信部１４４は、受信したパケットを破棄する（ステップＳ２０６）。
【００８４】
ここで、以上の説明では、並列計算タスクにＧＰＩＤを動的に割り当て、系列計算タスクに属する各プロセスが使用する通信インタフェース１１３に論理ＩＤを動的に割り当てる場合で説明した。ただし、ＧＰＩＤを割り当てる対象は並列計算タスクに限らない。例えば、特定の通信を行う処理、用途が予め規定された通信を行う処理についてＧＰＩＤを割り当て、その処理で使用される通信インタフェース１１３に論理ＩＤを割り当ててもよい。その場合、論理ＩＤは固定的に割り当てられてもよい。特定の通信を行う処理とは、例えば、特定の計算処理、特定のＩＯ処理及びシステム向けの通信を行う処理などである。
【００８５】
以上に説明したように、本実施例に係る並列処理装置は、並列計算タスク及び通信用途毎にそれぞれを識別するための大域識別子としてＧＰＩＤを割り当て、各並列計算タスク及び通信用途で使用される通信インタフェースに論理識別子を割り当てる。そして、本実施例に係る並列処理装置は、大域識別子及び論理識別子を用いてノード間で通信を行う。
【００８６】
通信インタフェースに割り当てる論理識別子は、固定的に使用されても、他の並列計算タスクや通信用途の通信には影響を与えない。したがって、通信インタフェースに固定的に割り当てられた論理識別子を用いても、並列処理装置の処理能力の低下を軽減することができる。すなわち、通信に用いる識別子の割当の自由度を向上させることができる。
【００８７】
また、本実施例に係る並列処理装置における通信では、動的に論理識別子を通信インタフェースに割り当てるが、ノード間での事前の識別子の交換を行わないため識別子交換用の通信手段を使用せずに通信を行うことができ、容易な処理で通信を行うことができる。
【００８８】
また、本実施例に係る並列処理装置における大域識別子及び論理識別子を用いた通信は、ソフトウェアによる通信インタフェースの仮想化の場合のソフトウェア処理によるオーバヘッドが発生しない。そのため、並列処理装置の処理能力の低下を軽減することができる。
【００８９】
また、仮想マシンの導入時には、仮想マシン毎に異なる大域識別子を割り当てることで、競合を解消することができ、設定レジスタの競合回避のためのハードウェアを実装しなくても良くなる。したがって、簡易な構成で仮想マシンの競合を解消することができる。
【００９０】
さらに、本実施例に係る並列処理装置は、科学技術計算用分散メモリ型並列計算機に適用することができる。科学技術計算用分散メモリ型並列計算機は、従来の数値シミュレーションに加え、大規模グラフ処理、機械学習、神経形態学的計算などの新しいアプリケーションを用いた処理での活用が期待されている。これらのアプリケーションでは、通信遅延がボトルネックとなり待ち時間が多いので、各ノードで同時に複数の並列計算タスクを実行することでプロセッサの利用率を向上させ、システム全体における並列計算タスク処理のスループットを向上することができる。そして、本実施例に係る並列処理装置は、各ノードにおいて複数の並列計算タスクの同時実行を容易にするので、科学技術計算用分散メモリ型並列計算機における新しいアプリケーションの利用を促進することができる。
【符号の説明】
【００９１】
１  並列処理装置
１０〜１３  ノード
２０  管理装置
２１  ＧＰＩＤ割当部
２２  タスク割当部
３０  ネットワーク
４０  ストレージ装置
１００  タスク実行部
１０１，１０２  並列計算タスク
１１０  論理ＩＤ割当部
１１１，１２１，１３１  プロセッサ
１１２，１２２，１３２  メモリ
１１３，１２３，１３３  通信インタフェース
１１４，１２４，１３４  送受信回路
１４１  記憶部
１４２  テーブル生成部
１４３  パケット送信部
１４４  パケット受信部
３１１〜３１４，３２１〜３２４  通信インタフェース
４０１，４０２  割当テーブル
【図１】
0006610398.tif 000002
【図２】
0006610398.tif 000003
【図３】
0006610398.tif 000004
【図４】
0006610398.tif 000005
【図５】
0006610398.tif 000006
【図６】
0006610398.tif 000007