JP2017187973A - 並列処理装置及び通信制御方法 - Google Patents

並列処理装置及び通信制御方法 Download PDF

Info

Publication number
JP2017187973A
JP2017187973A JP2016077292A JP2016077292A JP2017187973A JP 2017187973 A JP2017187973 A JP 2017187973A JP 2016077292 A JP2016077292 A JP 2016077292A JP 2016077292 A JP2016077292 A JP 2016077292A JP 2017187973 A JP2017187973 A JP 2017187973A
Authority
JP
Japan
Prior art keywords
node
rdma
communication
communication interface
transfer data
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.)
Granted
Application number
JP2016077292A
Other languages
English (en)
Other versions
JP6740683B2 (ja
Inventor
雄一郎 安島
Yuichiro Yasujima
雄一郎 安島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016077292A priority Critical patent/JP6740683B2/ja
Priority to CN201710145981.2A priority patent/CN107273318A/zh
Priority to US15/459,290 priority patent/US20170295237A1/en
Priority to EP17161704.6A priority patent/EP3229145A1/en
Publication of JP2017187973A publication Critical patent/JP2017187973A/ja
Application granted granted Critical
Publication of JP6740683B2 publication Critical patent/JP6740683B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA

Abstract

【課題】処理能力を向上させた並列処理装置を提供する。
【解決手段】並列処理装置1は、ノード11、ノード12及びノード13を有する。ノード11は、所定データのRDMA通信を開始させ、RDMA通信の応答を受信するプロセッサ111と、プロセッサ111による所定データのRDMA通信の開始を受けて、RDMAによる所定データの送信を指示するRDMA通信要求を送信する通信インタフェース113とを備える。ノード12は、所定データが格納されたメモリ122と、通信インタフェース113から送信されたRDMA通信要求を受信し、メモリ122に格納された所定データをRDMAでノード13へ送信する通信インタフェース123とを備える。ノード13は、メモリ132と、通信インタフェース123によりRDMAで送信された所定データを受信しメモリ132に格納し、RDMA通信の応答を作成し送信する通信インタフェース133とを備える。
【選択図】図1

Description

本発明は、並列処理装置及び通信制御方法に関する。
近年、科学技術分野では、それぞれがプロセッサとメモリを備え、独立してOS(Operating System)を実行するノードを、インターコネクトによって多数接続した構成を有する分散メモリ型並列計算機が主流となっている。分散メモリ型並列計算機などを用いた高性能計算を行う技術は、HPC(High Performance Computing)と呼ばれる。このような分散メモリ型並列計算機では、各ノードでプロセスが起動され、起動されたプロセスは相互に通信してデータを交換しながら並列計算を行う。インターコネクトは、ノード間を接続するネットワークと、ノードがネットワークに接続するためのデバイスを有する。
2つのノード間でデータを確実に転送するには、ノード間を接続するネットワーク及びノードがネットワークに接続するためのデバイスの特性に合わせた手順で通信が制御される。ノード間を接続するネットワーク及びノードがネットワークに接続するためのデバイスの特性に合わせた手順は、プロトコルとも呼ばれる。
インターネットで使用されるTCP(Transmission Control Protocol)/IP(Internet Protocol)プロトコルのプロトコル処理は、一般的にOSのプロトコルスタックが行う。各プロセスは、Berkeley Socketなどのソフトウェア・インタフェースによって、プロトコルスタックに対するデータ入出力を行う。プロトコルスタックによるプロトコル処理は、OSのシステムプロセスで実行される。すなわち、プロトコル処理を行う場合、割り込みなどでプロセッサが実行する処理がOSカーネルに移り、その間プロセッサは、他の計算を行うことが困難である。
プロセッサの演算効率を上げる、すなわち実行性能を理論性能に近づけるには、プロセッサは、プロトコル処理を行わない方がよい。そこで、HPC分野では、一般的にRDMA(Remote Direct Memory Access)と呼ばれる方式でデータを転送する。RDMAは、送信元プロセスが管理するメモリをインターコネクトのデバイスが直接読み出し、ノード間を接続するネットワークでデータを転送し、宛先プロセスが管理するメモリに直接書き込む技術である。
RDMAのプロトコルには事実上の標準となった規格はないが、どのRDMAのプロトコルも一般的にPut及びGetと呼ばれる機能を備える。Putは、送信元プロセスが開始するプロトコルであり、他のノードへの書き込みに相当する。Getは、宛先プロセスが開始するプロトコルであり、他ノードからの読み出しに相当する。
RDMAのプロトコル処理を行う場合、インターコネクトにおいても、プロトコルの開始の指示は、Putでは送信元ノードのプロセッサが行い、Getでは宛先ノードのプロセッサが行う。このため、従来のRDMAのプロトコルを用いた通信は、片側のプロセッサだけが通信制御を行うという位置づけで、片側通信とも呼ばれる。
Putは、プロトコルの開始元プロセスが送信元であるので一見宛先にデータを送るだけでよく、プロトコルの開始元プロセスとは異なる送信元プロセスからデータを送るために往復の通信が行われるGetよりも単純であるように見える。しかし、実際にはPutであっても、確実にデータが転送されたことを確認するために、宛先から送信元にデータ到達の通知を送るので、往復の通信となる。プロトコルとしては、PutとGetとは、いずれも送信元プロセスから宛先プロセスへの往復の手続きであり、転送データを伴うのが往路か復路かの点が異なる。
RDMAのプロトコルは、インターコネクトのデバイスで処理するため、ハードウェア化し易いシンプルな設計となっていることが好ましい。Put及びGetは、送信元プロセスと宛先プロセスとを1往復するシンプルな構成でありこの条件を満たす。
また、ハードウェア化において複雑性が問題になる場合は他にもある。例えば、プロセスが使用するメモリは、OSの仮想化によって断片化されており、実用的にはアドレス変換機構が用いられる。他にも、プロトコルでデータの喪失及び毀損を検出して、データの送達を保証する仕組みがあることが好ましい。そこで、設計ミスなどの障害、経路上のノード故障などによるネットワーク上でのデータ喪失、又は偶発的なデータ化が起こる場合があり、計算の中断やデータの再送信などの対処を行うことになるため、複雑なプロトコルとなる。HPC向けインターコネクトでは、この複雑性を回避すべく、ノード間を接続するネットワークやノードがネットワークに接続するためのデバイスの方式レベルで送達保障に役立つ機能を作り込むことが一般的である。この点では、途中経路の品質を前提にすることが困難であり、インターコネクトで使用されるプロトコルは、送達保障だけでなく輻輳制御までプロトコルとして作り込むTCP/IPとは一線を画すといえる。
ただし、RDMAにおけるPut及びGetの通信は、依存関係のある一連の通信においては待ち時間が発生し、プロセッサの演算効率を下げる原因となる。Put及びGetの通信によるプロセッサの演算効率の低下は、集団通信と呼ばれる頻出する通信パターンにおいて、効率のよい通信アルゴリズムを採用する際に顕著に表れる。集団通信とは、複数のプロセス間で一斉に同じ目的の通信が行われる通信方法である。集団通信は、並列処理装置においては、例えば、並列計算を行う際に各ノードに初期データを配布する場合や、結果を各ノードに配布する場合に用いられる。
例えば、集団通信として、複数ノードに同じデータを転送する場合、送信元ノードが全てのノードにPutでデータを送る通信が考えられる。この場合、通信制御に係わるのは送信元プロセスである。しかし、この方法では時間がかかりすぎる。そこで、1回目は送信元ノードが1つのノードにデータを転送し、2回目はデータを有する2つのノードがそれぞれ他の1つのノードにデータを転送し、3回目はデータを有する4つのノードがそれぞれ他の1つのノードにデータを転送する集団通信が考えられる。このように、データの送信元プロセスを倍々に増やすアルゴリズムでデータを転送すれば、データの転送処理における転送回数はプロセス数の2進対数で済む。
また、特定の通信パターンを実行する集団通信においては、通信制御でプロセッサの実行時間を消費しないように、集団通信機能を有するインターコネクトが提案されている。例えば、ノード間を接続するネットワークに集団通信機能を持たせるものや、ノードがネットワークに接続するためのデバイスに集団通信プロトコルを実行するためのコントローラを搭載するものなど、様々な方式が提案されている。ただし、インターコネクトが集団通信機能をもつ場合、機能が固定化されてしまうことや通信バッファの容量が制約されてしまうことが問題となる。
この点、ノードがネットワークに接続するためのデバイスにコントローラを搭載させた場合、機能や通信バッファの容量にある程度の柔軟性を持たせることができる。しかし、コントローラを高機能化して、主記憶装置上に通信バッファを確保し、再利用や共有化などの高度な処理を加えていくと、OSなどの高度な資源管理ソフトウェアを用いることとなる。この場合、コントローラがプロセッサ並みの性能を持つことになる。また、この場合、従来のRDMA通信であれば実行時に使用できる主記憶装置に制限は無いにも関わらず、通信バッファの容量の制約は残る。そのため、コントローラにプロセッサの実行環境を用意するのではなく、プロセッサやコア数を増やしてプロセッサで処理することが好ましい。
なお、サーバ間で仮想計算機を移動する場合に、RDMAを用いる従来技術がある。また、ノード間でのデータ転送をRDMAで行う場合に、レコードに識別子をもうけてすれ違いを検出し、プログラムの待ち合わせのオーバヘッドを減らす従来技術がある。
特開2008−97273号公報 特開2002−63060号公報
しかしながら、プロセッサを用いて効率的に集団通信を行うとしても、次のような問題がある。例えば、データの送信元プロセスを倍々に増やすアルゴリズムを用いたデータ転送を行った場合、最終的には、半数のノードがデータ待ち状態となってしまう。このような通信アルゴリズムでは、データ転送処理の効率は向上するが、多数のノードによる複雑な通信制御が行われるため、そのデータ待ちの間に計算を行うプログラミングは実現困難である。そのため、データの待ち時間は利用されず、プロセッサの演算効率が下がってしまう。
このように、集団通信では、通信処理を行う場合に各通信の同期化が要求される場合がある。そして、同期化が期待される集団通信では、待機時間が長くなり、通信効率が低下するおそれがある。
また、仮想計算機の移動にRDMAを用いる従来技術や、レコードに識別子を設けて擦れ違いを検出する従来技術を用いても、このようなデータの待ち時間を削減することは困難である。
開示の技術は、上記に鑑みてなされたものであって、処理能力を向上させた並列処理装置及び通信制御方法を提供することを目的とする。
本願の開示する並列処理装置及び通信制御方法は、一つの態様において、第1情報処理装置、第2情報処理装置及び第3情報処理装置を有する。前記第1情報処理装置は、所定データのRDMA通信を開始させ、前記RDMA通信の応答を受信するデータ転送制御部と、前記データ転送制御部による前記所定データの前記RDMA通信の開始を受けて、前記RDMA通信による前記所定データの送信を指示するRDMA通信要求を送信する転送指示部とを備える。前記第2情報処理装置は、前記所定データが格納された第1メモリと、前記データ転送制御部から送信された前記RDMA通信要求を受信し、前記第1メモリに格納された前記所定データを前記RDMA通信で前記第3情報処理装置へ送信するデータ送信部とを備える。前記第3情報処理装置は、第2メモリと、前記データ送信部により前記RDMA通信で送信された前記所定データを受信し前記第2メモリに格納し、前記RDMA通信の前記応答を作成し送信する受信処理部とを備える。
本願の開示する並列処理装置及び通信制御方法の一つの態様によれば、処理能力を向上させることができるという効果を奏する。
図1は、並列処理装置の構成図である。 図2は、RDMA通信要求の送信を表す図である。 図3は、転送データの送信を表す図である。 図4は、転送データの宛先から転送データの送信元へのRDMAの受信応答の送信を表す図である。 図5は、転送データの送信元から制御元へのRDMAの受信応答の送信を表す図である。 図6は、制御元のノードのプロセッサによる通信インタフェースに対する通信指示の処理のフローチャートである。 図7は、制御元のノードの通信インタフェースによるRDMA通信要求の送信処理のフローチャートである。 図8は、転送データの送信元となる通信インタフェースによる転送データの送信処理のフローチャートである。 図9は、転送データの宛先となる通信インタフェースによるRDMAの受信応答の送信処理のフローチャートである。 図10は、転送データの送信元となる通信インタフェースによるRDMAの受信応答の転送処理のフローチャートである。 図11は、実施例1に係る集団通信を用いた転送データの配布の全体的な動作を説明するための図である。 図12は、1プロセスが集団通信のデータ転送全てを実行する場合の手順を表すフローチャートである。 図13は、実施例2に係る並列処理装置によるRDMA通信要求、転送データ及びRDMAの受信応答の送信を表す図である。
以下に、本願の開示する並列処理装置及び通信制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する並列処理装置及び通信制御方法が限定されるものではない。
図1は、並列処理装置の構成図である。図1に示すように、本実施例に係る並列処理装置1は、ノード11〜13を含む複数のノードを有する。ノード11〜13を含む各ノードを区別しない場合、「ノード10」という。ノード10は、情報処理装置である。また、並列処理装置1は、管理装置20及びネットワーク30を有する。
ネットワーク30は、インターコネクトを形成するネットワークであり、ノード10間を接続する。
管理装置20は、各ノード10に接続される。管理装置20は、各ノード10へのプロセスの割り当てや各ノード10の異常の検出などを行う。
ノード11は、プロセッサ111、メモリ112及び通信インタフェース113を有する。ノード12は、プロセッサ121、メモリ122及び通信インタフェース123を有する。ノード13は、プロセッサ131、メモリ132及び通信インタフェース133を有する。
プロセッサ111,121及び131は、演算処理装置である。プロセッサ111,121及び131は、OSを動作させる。さらに、プロセッサ111,121及び131は、プロセスを実行し、メモリ112,122及び132を用いて演算処理を行う。また、プロセッサ111,121及び131は、それぞれ通信インタフェース113,123及び133を用いて各ノード10間で通信を行う。また、プロセッサ111,121及び131は、それぞれ通信インタフェース113,123及び133に対してRDMAによる通信を指示することで、通信インタフェース113,123及び133にRDMAによる通信を実行させる。
メモリ112,122及び132は、主記憶装置である。メモリ112,122及び132は、例えば、RAM(Random Access Memory)などである。
通信インタフェース113,123及び133は、インターコネクトにおけるノード10がネットワーク30に接続するためのデバイスである。通信インタフェース113,123及び133は、RDMAによりデータ送信を行うことができる。通信インタフェース113,123及び133は、プロセッサ111,121及び131から独立して動作する専用回路などで構成される演算処理装置を有する。通信インタフェース113,123及び133によるデータ送信及び受信応答などの制御は、この演算処理装置により実現される。
ここで、本実施例に係る並列処理装置1において、ノード11のメモリ112に格納されたデータを他の全てのノード10へRDMAを用いて送信する集団通信の処理について説明する。本実施例に係る並列処理装置1は、非同期集団通信を行う。以下では、全てのノード10へ配布するメモリ112に格納されたデータを「転送データ」という。
ノード11は、自装置から他のノード10へRDMAで転送データを送るとともに、他のノード10間でのRDMAでの転送データの送信も制御する。すなわち、ノード11のプロセッサ111は、転送データの全てのノード10へRDMAによる配布を管理する。言い換えれば、プロセッサ112及び113を含む他のノード10のプロセッサは転送データの送信制御に係わらない。このノード11が、「第1情報処理装置」の一例にあたる。ノード11の具体的な動作を以下に説明する。
ノード11のメモリ112は、転送データを保持する。
ノード11のプロセッサ111は、転送データをノード11から他のノード10へ送信する場合、以下の処理を行う。ここでは、転送データの送信先がノード12である場合を例に説明する。プロセッサ111は、通信指示用メモリ領域をメモリ112の中に確保する。次に、通信指示用メモリ領域に、パケット送信元であるノード11のアドレス、読み出しメモリアドレス、パケット宛先であるノード12のアドレス、書き込みメモリアドレス及び転送データサイズを書き込む。そして、プロセッサ111は、転送データのRDMA通信要求のメモリアドレスを通信インタフェース113に通知する。ここで、RDMA通信要求とは、RDMAによりノード13へ転送データを送信することをノード12へ指示するための信号である。
その後、プロセッサ111は、RDMAの受信応答を通信インタフェース113から受信し、データ送信の完了を確認する。
一方、転送データを他のノード10間で送受信させる場合、ノード11のプロセッサ111は、以下の処理を行う。他のノード10間での通信はどのノード10間でも同様に処理が行われるので、以下では、ノード12のメモリ122に既に転送データが格納されており、ノード12からノード13へ転送データがRDMAで送付される場合を例に説明する。
プロセッサ111は、RDMA通信要求をノード12に送信させる通信指示のための通信指示用メモリ領域をメモリ112の中に確保する。そして、通信指示用メモリ領域に、転送データの送信元ノードアドレス、読み出しメモリアドレス、制御元ノードアドレス、転送データの宛先ノードアドレス、書き込みメモリアドレス及び転送データサイズを書き込む。
この場合、ノード11は、ノード12に向けて、ノード12のメモリ122に格納された転送データをノード13へRDMAで送信するRDMA通信要求のパケットを送る。そこで、送信元ノードアドレスは、ノード11から送信されるパケットの宛先にあたる。この場合、プロセッサ111は、送信元ノードアドレスとしてノード12のアドレスを書き込む。また、制御元ノードアドレスは、パケットの送信元にあたる。この場合、プロセッサ111は、制御元ノードアドレスとしてノード11のアドレスを書き込む。さらに、プロセッサ111は、宛先ノードアドレスとしてノード13のアドレスを書き込む。
そして、プロセッサ111は、RDMA通信要求のパケット送信のメモリアドレスを通信インタフェース113に通知する。その後、プロセッサ111は、RDMAの受信応答を通信インタフェース113から受信し、データ送信の完了を確認する。このプロセッサ111が、「データ転送制御部」の一例にあたる。
ノード11の通信インタフェース113は、転送データをノード11からノード12へ送信する場合、転送データのRDMA通信要求のメモリアドレスの通知をプロセッサ111から受ける。そして、通信インタフェース113は、指定されたメモリアドレスから、パケット送信元であるノード11のアドレス、読み出しメモリアドレス、パケット宛先であるノード12のアドレス、書き込みメモリアドレス及び転送データサイズを取得する。そして、通信インタフェース113は、読み出しメモリアドレス及び転送データサイズを用いて、メモリ112から転送データを取得する。次に、通信インタフェース113は、パケットのヘッダに、パケット宛先であるノード12のアドレス、パケット送信元であるノード11のアドレス、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース113は、パケットのデータ部に転送データを格納してパケットを生成する。そして、通信インタフェース113は、生成した転送データを格納したパケットをノード12の通信インタフェース123へ送信する。
その後、通信インタフェース113は、RDMAの受信応答のパケットをノード12の通信インタフェース123から受信する。そして、通信インタフェース113は、RDMAの受信応答をプロセッサ111へ送信する。
一方、転送データをノード12からノード13へ送信させる場合、ノード11の通信インタフェース113は、RDMA通信要求のパケット送信のメモリアドレスの通知をプロセッサ111から受ける。そして、通信インタフェース113は、指定されたメモリアドレスから、送信元のノード12のアドレス、読み出しメモリアドレス、制御元であるノード11のアドレス、宛先のノード13のアドレス、書き込みメモリアドレス及び転送データサイズを取得する。次に、通信インタフェース113は、パケットのヘッダに、パケット宛先であり転送データの送信元となるノード12のアドレス、パケット送信元であり制御元のノード11のアドレス、転送データの宛先となるノード13のアドレスを格納する。さらに、通信インタフェース113は、パケットのヘッダに、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納してパケットを生成する。そして、通信インタフェース113は、生成したパケットをノード12の通信インタフェース123へ送信する。
その後、通信インタフェース113は、RDMAの受信応答のパケットをノード12の通信インタフェース123から受信する。そして、通信インタフェース113は、RDMAの受信応答をプロセッサ111へ送信する。この通信インタフェース113が、「転送指示部」の一例にあたる。
次にノード12について説明する。このノード12が、「第2情報処理装置」の一例にあたる。ノード11が転送データをノード12へ送信する場合、ノード12のメモリ122には、転送データは未だ格納されていない。一方、ノード11によりノード12からノード13への転送データの転送が指示される場合、ノード12のメモリ122は、転送データを既に保持する。このメモリ122が、「第1メモリ」の一例にあたる。
ノード12の通信インタフェース123は、ノード11から転送データを受信する場合、ネットワーク30を介してノード11の通信インタフェース113から転送データを格納したパケットを受信する。次に、通信インタフェース123は、受信したパケットのデータ部から転送データを取り出す。さらに、通信インタフェース123は、パケットのヘッダから書き込みメールアドレスを取得する。そして、通信インタフェース123は、書き込みメールアドレスで指定されたメモリ122のアドレスに、転送データを書き込む。
その後、通信インタフェース123は、RDMAによる転送データの受信完了を通知するためのRDMAの受信応答のパケットを生成する。そして、通信インタフェース123は、生成したRDMAの受信応答のパケットをネットワーク30を介してノード11の通信インタフェース113へ送信する。
一方、ノード11によりノード12からノード13への転送データの送信が制御される場合、ノード12の通信インタフェース123は、ネットワーク30を介してノード11の通信インタフェース113からRDMA通信要求のパケットを受信する。次に、通信インタフェース123は、パケットのヘッダから、パケットの宛先であるノード12のアドレスを転送データの送信元のアドレスとして取得する。また、通信インタフェース123は、パケットのヘッダから、転送データの宛先であるノード13のアドレスを取得する。さらに、通信インタフェース123は、パケットのヘッダから、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを取得する。
そして、通信インタフェース123は、読み出しメモリアドレス及び転送データサイズを用いて、メモリ122から転送データを取得する。次に、通信インタフェース123は、転送データを転送するためのパケットの生成を行う。具体的には、通信インタフェース123は、パケットのヘッダに、転送データの宛先であり且つパケットの宛先でもあるノード13のアドレス、転送データの送信元であり、パケットの送信元でもあるノード12のアドレスを格納する。また、通信インタフェース123は、パケットのヘッダに、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース123は、パケットのデータ部に転送データを格納する。そして、通信インタフェース123は、生成した転送データを格納したパケットをノード13の通信インタフェース133へRDMAによりネットワーク30を介して送信する。
その後、通信インタフェース123は、RDMAの受信応答のパケットをノード13の通信インタフェース133から受信する。次に、通信インタフェース123は、RDMAの受信応答のパケットを生成する。具体的には、通信インタフェース123は、受信したパケットのヘッダから、転送データの送信元であり且つ受信応答のパケットの宛先であるノード12のアドレスを取得する。また、通信インタフェース123は、受信したパケットのヘッダから、転送データの宛先であり受信応答のパケットの送信元であるノード13のアドレスを取得する。また、通信インタフェース123は、受信したパケットのヘッダから、制御元のノード11のアドレス、読み出しメモリアドレス、書き込みメモリアドレス、転送データサイズ及び受信結果を表すエラーコードを取得する。そして、通信インタフェース123は、送信するパケットのヘッダに、制御元であり且つ受信応答のパケットの宛先となるノード11のアドレスを格納する。また、通信インタフェース123は、送信するパケットのヘッダに、転送データの送信元であり且つ受信応答のパケットの送信元となるノード12のアドレスを格納する。また、通信インタフェース123は、送信するパケットのヘッダに、転送データの宛先であるノード13のアドレス、読み出しメモリアドレス、書き込みメモリアドレス、転送データサイズ及び受信結果を表すエラーコードを格納する。そして、通信インタフェース123は、生成したRDMAの受信応答のパケットをネットワーク30を介してノード11の通信インタフェース113へ送信する。この通信インタフェース123が、「データ送信部」の一例にあたる。
次にノード13について説明する。このノード13が、「第3情報処理装置」の一例にあたる。ノード11によりノード12からノード13への転送データの転送が指示される場合、ノード13のメモリ132は、転送データが未だ格納されていない。このメモリ132が、「第2メモリ」の一例にあたる。
ノード13の通信インタフェース133は、ノード11によりノード12からノード13への転送データの送信が制御される場合、ネットワーク30を介してノード12の通信インタフェース123から転送データを格納したパケットを受信する。次に、通信インタフェース133は、受信したパケットのデータ部から転送データを取り出す。さらに、通信インタフェース133は、パケットのヘッダから書き込みメールアドレスを取得する。そして、通信インタフェース133は、書き込みメールアドレスで指定されたメモリ132のアドレスに、転送データを書き込む。
その後、通信インタフェース133は、RDMAによる転送データの受信完了を通知するためのRDMAの受信応答のパケットを生成する。具体的には、通信インタフェース133は、受信したパケットのヘッダから、転送データの送信元のノード12のアドレス、転送データの宛先のノード13のアドレス及び制御元のノード11のアドレスを取得する。さらに、通信インタフェース133は、受信したパケットのヘッダから、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを取得する。そして、通信インタフェース133は、送信するパケットのヘッダに、転送データの送信元であり且つ受信応答のパケットの宛先であるノード12のアドレスを格納する。また、通信インタフェース133は、送信するパケットのヘッダに、転送データの宛先であり受信応答のパケットの送信元であるノード13のアドレスを格納する。また、通信インタフェース133は、送信するパケットのヘッダに、制御元のノード11のアドレス、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース133は、受信結果を表すエラーコードを送信するパケットのヘッダに格納する。そして、通信インタフェース133は、生成したRDMAの受信応答のパケットをネットワーク30を介してノード12の通信インタフェース123へ送信する。この通信インタフェース133が、「受信処理部」の一例にあたる。
ここで、図2〜5を参照して、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合の、RDMAの通信要求、転送データ及びRDMAの受信応答の送信についてまとめて説明する。図2は、RDMA通信要求の送信を表す図である。図3は、転送データの送信を表す図である。図4は、転送データの宛先から転送データの送信元へのRDMAの受信応答の送信を表す図である。図5は、転送データの送信元から制御元へのRDMAの受信応答の送信を表す図である。
ノード11の通信インタフェース113は、プロセッサ111からの通信指示を受けて、ノード12の通信インタフェース123に対するRDMA通信要求のパケットを生成する。そして、図2の処理P1で示すように、ノード11の通信インタフェース113は、RDMA通信要求のパケットをノード12の通信インタフェース123へ送信する。
ノード12の通信インタフェース123は、ノード11の通信インタフェース113から送信されたRDMA通信要求のパケットを受信する。次に、ノード12の通信インタフェース123は、RDMA通信要求のパケットから、送信する転送データの情報及び宛先の情報などを取得する。次に、ノード12の通信インタフェース123は、メモリ122から転送データを取得する。次に、ノード12の通信インタフェース123は、転送データを送信するためのパケットを生成する。そして、ノード12の通信インタフェース123は、図3の処理P2で示すように、生成したパケットを送信することで、転送データをノード13の通信インタフェース133へ送信する。
ノード13の通信インタフェース133は、ノード12の通信インタフェース123から送信された転送データを送信するためのパケットを受信する。次に、ノード13の通信インタフェース133は、受信したパケットから転送データを取得し、メモリ132に格納する。次に、ノード13の通信インタフェース133は、受信したパケットから、パケットの宛先となる送信元のノード12のアドレスなどを取得する。次に、ノード13の通信インタフェース133は、RDMAの受信応答のパケットを生成する。そして、ノード13の通信インタフェース133は、図4の処理P3で示すように、RDMAの受信応答のパケットをノード12の通信インタフェース123へ送信する。
ノード12の通信インタフェース123は、ノード13の通信インタフェース133から送信されたRDMAの受信応答のパケットを受信する。次に、ノード12の通信インタフェース123は、受信したパケットから、パケットの宛先となる制御元のノード11のアドレスなどを取得する。次に、ノード12の通信インタフェース123は、RDMAの受信応答のパケットを生成する。そして、ノード12の通信インタフェース123は、図5の処理P4で示すように、RDMAの受信応答のパケットをノード11の通信インタフェース113へ送信する。ノード11の通信インタフェース113は、ノード12の通信インタフェース123からRDMAの受信応答のパケットを受信する。そして、ノード11の通信インタフェース113は、ノード11のプロセッサ111にRDMAの受信応答を送信する。ノード11のプロセッサ111は、RDMAの受信応答を受信し、RDMAによる転送データの送信処理の完了を確認する。
このように、並列処理装置1は、ノード12のプロセッサ121及びノード13のプロセッサ131を使用せずに、ノード11のプロセッサ111の制御により、ノード12からノード13へ転送データを送信させることができる。
次に、図6を参照して、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合の制御元のノード11のプロセッサ111による通信インタフェース113に対する通信指示の処理の流れについて説明する。図6は、制御元のノードのプロセッサによる通信インタフェースに対する通信指示の処理のフローチャートである。
プロセッサ111は、RDMA通信要求をノード12に送信させるための通信指示用メモリ領域をメモリ112上に確保する(ステップS1)。
次に、プロセッサ111は、転送データのRDMAによる送信の制御元でありパケットの送信元であるノード11のアドレスを通信指示用メモリ領域に書き込む(ステップS2)。
次に、プロセッサ111は、転送データの送信元でありパケットの宛先であるノード12のアドレスを通信指示用メモリ領域に書き込む(ステップS3)。
次に、プロセッサ111は、ノード12のメモリ122上の転送データの読み出しメモリアドレスを通信指示用メモリ領域に書き込む(ステップS4)。
次に、プロセッサ111は、転送データの宛先であるノード13のアドレスを通信指示用メモリ領域に書き込む(ステップS5)。
次に、プロセッサ111は、ノード13のメモリ132上の転送データの書き込みメモリアドレスを通信指示用メモリ領域に書き込む(ステップS6)。
次に、プロセッサ111は、転送データのデータサイズを通信指示用メモリ領域に書き込む(ステップS7)。
その後、プロセッサ111は、通信指示のメモリアドレスを通信インタフェース123に通知する(ステップS8)。
次に、図7を参照して、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合の通信インタフェース113のRDMA通信要求の送信処理の流れについて説明する。図7は、制御元のノードの通信インタフェースによるRDMA通信要求の送信処理のフローチャートである。
通信インタフェース113は、プロセッサ111から送信された通信指示を読み出す(ステップS11)。
次に、通信インタフェース113は、通信指示で指定された通信指示用メモリ領域に書き込まれた情報を用いて、RDMA通信要求のパケットを生成する(ステップS12)。
次に、通信インタフェース113は、RDMA通信要求のパケットをノード12の通信インタフェース123へ送信する(ステップS13)。
次に、図8を参照して、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合の転送データの送信元となる通信インタフェース123による転送データの送信処理の流れについて説明する。図8は、転送データの送信元となる通信インタフェースによる転送データの送信処理のフローチャートである。
通信インタフェース123は、通信インタフェース113から送信されたRDMA通信要求を受信する(ステップS21)。
次に、通信インタフェース123は、RDMA通信要求で指定された転送データをメモリ122から取得する(ステップS22)。
次に、通信インタフェース123は、RDMA通信要求で指定された転送データの送信元をパケットの送信元とし、転送データの宛先をパケットの宛先として転送データ送信用のパケットを生成する(ステップS23)。
次に、通信インタフェース123は、転送データ送信用のパケットをRDMAによりノード13の通信インタフェース133へ送信する(ステップS24)。
次に、図9を参照して、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合の転送データの宛先となる通信インタフェース133によるRDMAの受信応答の送信処理の流れについて説明する。図9は、転送データの宛先となる通信インタフェースによるRDMAの受信応答の送信処理のフローチャートである。
通信インタフェース133は、RDMAにより通信インタフェース123から送信された転送データ送信用のパケットを受信する(ステップS31)。
次に、通信インタフェース133は、パケットに格納された転送データをメモリ132上の指定された場所に格納する(ステップS32)。
次に、通信インタフェース133は、転送データ送信用のパケットで指定された転送データの送信元をパケットの宛先とし、転送データの宛先をパケットの送信元としてRDMAの受信応答のパケットを生成する(ステップS33)。
次に、通信インタフェース133は、RDMAの受信応答のパケットをノード12の通信インタフェース123へ送信する(ステップS34)。
次に、図10を参照して、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合の転送データの送信元となる通信インタフェース123によるRDMAの受信応答の転送処理の流れについて説明する。図10は、転送データの送信元となる通信インタフェースによるRDMAの受信応答の転送処理のフローチャートである。
通信インタフェース123は、通信インタフェース133から送信されたRDMAの受信応答のパケットを受信する(ステップS41)。
次に、通信インタフェース123は、受信したパケットで指定された制御元をパケットの宛先とし、転送データの送信元をパケットの送信元としてRDMAの受信応答のパケットを生成する(ステップS42)。
次に、通信インタフェース123は、RDMAの受信応答のパケットをノード11の通信インタフェース113へ送信する(ステップS43)。
次に、本実施例に係る集団通信を用いた転送データの配布の並列処理装置1に格納されたノード10の全体的な動作について説明する。図11は、実施例1に係る集団通信を用いた転送データの配布の全体的な動作を説明するための図である。図11では、ノード11〜18までのノードを記載した。そして、この場合もノード11が制御元の場合で説明する。また、図11では、実線で転送データの送信を表し、破線で制御信号の送信を表す。
ノード11は、最初にノード12に転送データを送信する(ステップS101)。これにより、ノード12は、転送データを保持するようになり、転送データの転送元になれる。
そこで、ノード11は、RDMA通信要求をノード12へ送信する(ステップS102)。ノード12は、RDMA通信要求を受けて、ノード14へ転送データを送信する(ステップS103)。これにより、ノード14は、転送データを保持するようになり、転送データの転送元になれる。また、ノード11は、ノード13へ転送データを送信する(ステップS104)。これにより、ノード13は、転送データを保持するようになり、転送データの転送元になれる。
ノード11は、ノード12のデータ転送が完了していれば、RDMA通信要求をノード12へ再度送信する(ステップS105)。ノード12は、RDMA通信要求を受けて、ノード17へ転送データを送信する(ステップS106)。これにより、ノード17は、転送データを保持するようになり、転送データの転送元になれる。また、ノード11は、RDMA通信要求をノード13へ送信する(ステップS107)。ノード13は、RDMA通信要求を受けて、ノード15へ転送データを送信する(ステップS108)。これにより、ノード15は、転送データを保持するようになり、転送データの転送元になれる。また、ノード11は、RDMA通信要求をノード14へ送信する(ステップS109)。ノード14は、RDMA通信要求を受けて、ノード18へ転送データを送信する(ステップS110)。これにより、ノード18は、転送データを保持するようになり、転送データの転送元になれる。また、ノード11は、ノード16へ転送データを送信する(ステップS111)。これにより、ノード16は、転送データを保持するようになり、転送データの転送元になれる。
このようにノード11は、転送データを有するノード10に対して、そのノード10が転送処理を行っていなければRDMA通信要求を送信し、RDMAによる転送データの送信を行わせる。そのため、本実施例に係る並列処理装置1では、他のノード10による転送データの送信の完了を待たずに、即時処理可能なノード10に転送データの送信を行わせることができる。
これに対して、転送データの送信元プロセスを倍々に増やすアルゴリズムを用いた場合以下のような処理となる。すなわち、ノード11は、まず、ノード12に転送データを送信する。次に、ノード11は、ノード13に転送データを送信する。また、ノード12は、ノード14に転送データを送信する。次に、ノード11は、ノード16に転送データを送信する。ノード12は、ノード17に転送データを送信する。ノード13は、ノード15に転送データを送信する。ノード14は、ノード18に転送データを送信する。
この場合、各ノード10において、転送データを送信する際に、転送元のプロセッサが送信処理の制御を行うため、データ転送の間、他の処理を行えなくなり、待ち状態になってしまう。これに対して、本実施例に係る集団通信の方法であれば、各ノード10のプロセッサは、データ転送に関わらないため、データ転送の状況に関わらず他の処理を実行することができる。
さらに、ノード11が全てのノード10に対して転送データを送信する方法を用いた場合は図12に示す処理となる。図12は、1プロセスが集団通信のデータ転送全てを実行する場合の手順を表すフローチャートである。ここでは、プロセッサによって実行される転送データの送信を行うプロセスを、「データ転送プロセス」と呼ぶ。
次に、データ転送プロセスは、ステップを1に初期化する。すなわち、#S回目のステップをステップ#Sと表した場合、データ転送プロセスは、#S=1とする(ステップS201)。
次に、データ転送プロセスは、ステップ#Sにおける全ての転送データの送信を通信インタフェース113に指示する (ステップS202)。ここで、全ての転送データの送信とは、各ステップにおいて予め決められた数の宛先のノード10に対して転送データを送信することである。
そして、データ転送プロセスは、転送データの送信が全て完了したか否かを判定する(ステップS203)。転送データの送信が残っている場合(ステップS203:否定)、データ転送プロセスは、転送データの送信が全て完了するまで待機する。
これに対して、転送データの送信が全て完了した場合(ステップS203:肯定)、データ転送プロセスは、ステップを1つインクリメントする(ステップS204)。すなわち、データ転送プロセスは、#S=#S+1とする。
次に、データ転送プロセスは、全てのステップが完了したか否かを判定する(ステップS205)。完了していないステップが残っている場合(ステップS205:否定)、データ転送プロセスは、ステップS202へ戻る。
これに対して、全てのステップが完了した場合(ステップS205:肯定)、データ転送プロセスは、集団通信による転送データの送信処理を終了する。
このように、1つのプロセスが全ての転送データの送信を行う場合、各ステップで転送データの送信が完了するまで、そのプロセスは待機することとなる。これに対して、本実施例に係る並列処理装置1では、集団通信全体を制御するプロセスは、他のノード10間での転送データの送信の完了を待たずに、転送データの送信が完了したノード10へ転送データの送信を指示することができる。したがって、1つのプロセスが全ての転送データの送信を行う場合に比べて、本実施例に係る並列処理装置1は、待機時間を短縮することができる。
さらに、本実施例に係る各ノード10におけるハードウェア構成について具体的に説明する。本実施例に係るインターコネクトのネットワーク30は、4つの仮想チャネルを備える。また、本実施例に係るインターコネクトでは、RDMAのPut及びGetプロトコルに加え、RDMAのCopyプロトコルが実装される。Copyプロトコルとは、制御元からの指示をうけて他のノード10に転送データの送信を行うためのプロトコルである。
Copy開始指示であるRDMA通信要求は、第1の仮想チャネルで転送される。また、転送データを伴うCopy要求は、第2の仮想チャネルで転送される。また、結果を通知するCopy応答であるRDMAの受信応答は、第3の仮想チャネルで転送される。また、結果を転送するCopy完了通知は、第4の仮想チャネルで転送される。これに対して、本実施例に係る並列処理装置1においてRDMAのGetプロトコルを用いる場合、Get要求は第1の仮想チャネルで転送される。転送データを伴うGet応答は第2の仮想チャネルで転送される。さらに、結果を通知するRDMAの受信応答は第3の仮想チャネルで転送される。また、Putプロトコルを用いる場合、データを伴うPut要求は第2の仮想チャネルで転送される。また、Put応答は第3の仮想チャネルで転送される。
また、高いスループットで送達保障制御を行う場合、仮想チャネルが大容量の通信バッファを持つことが好ましい。この点、本実施例に係る並列処理装置1では、データを伴う第2の仮想チャネルに大容量のバッファを配置することで送達保障制御を実現することができる。さらに、ネットワーク上の物理的な経路としては、第1の仮想チャネルと第4の仮想チャネル、第2の仮想チャネルと第3の仮想チャネルのように、転送元と転送先とが逆転する場合にはパケットは同じ経路を逆に転送されるように制御される。これにより、Copyの4回の転送について、故障ノードを回避する通信経路の探索回数を2回に削減することができる。
以上に説明したように、本実施例に係る並列処理装置は、データの送信元のノードを増やしつつRDMAのデータ転送の制御は1つのノードが実行する。そのため、並列処理装置に含まれる各ノードにおける通信制御の待ち時間が削減され、各ノードで計算を実行する時間が増加する。したがって、並列処理装置の処理能力を向上させることができる。
また、本実施例に係る並列処理装置では、集団通信を行う際のデータを伴うパケットは、転送データの送信元から転送データの宛先に向けた場合のパケットであり、仮想チャネルに搭載させる通信バッファの容量を少なくすることができる。
また、通信バッファの使用状態によりデッドロックが発生することが考えられる。このデッドロックを回避する手段としては、詰まったパケットを破棄して再送信する方法がある。しかし、この方法はプロトコルが複雑になる上に、スケーラビリティの阻害要因になるため、実現が困難である。また、プロトコルのステップ毎に仮想チャネルを分ける方法、例えば、PutとGetとで往路と復路の仮想チャネルを分ける方法も考えられる。しかし、プロトコルが複雑になると用いる仮想チャネルの数が多くなってしまい、実現が困難である。これに対して、本実施例に係る並列処理装置では、例えば、4つの仮想チャネルを用いる場合、1つの仮想チャネルに大容量の通信バッファを配置すればよく、容易にデッドロックを回避することができる。
さらに、RDMAにおける送達保障としては、リンクレベルで再送信を行うロスレスのネットワークにおいて、ノード故障のない経路を事前に発見して使用する方式が適している。しかし、プロトコルが使用する経路が増加するほど、事前に発見すべき経路が増えるため、処理負荷が大きくなってしまう。この点、本実施例に係る並列処理装置における集団通信では、制御元からの制御により他のノードがそれ以外のノードへパケットを送信する場合に、パケットの送信で用いられる経路は2本である。そのため、故障ノードを回避するための経路の探索を2回で済ますことができ、ネットワークの経路制御を簡略化することができる。
次に、実施例2について説明する。本実施例に係る並列処理装置は、RDMAの受信応答を転送データの送信元のノードを中継させずに、転送データの宛先のノードが、制御元のノードへ直接送信することが実施例1と異なる。本実施例に係る並列処理装置も図1のブロック図で表される。以下の説明では、実施例1と同様の各部の機能については説明を省略する。
ノード11の通信インタフェース113は、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合、実施例1と同様にRDMA通信要求をノード12の通信インタフェース123へ送信する。
その後、通信インタフェース113は、RDMAの受信応答のパケットをネットワーク30を介してノード13の通信インタフェース133から受信する。そして、通信インタフェース113は、RDMAの受信応答をプロセッサ111へ送信する。
ノード12の通信インタフェース123は、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合、実施例1と同様にRDMAにより転送データをノード13の通信インタフェース133へ送信する。この場合、ノード12は、RDMAの受信応答のパケットの転送は行わない。
ノード13の通信インタフェース133は、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合、実施例1と同様にRDMAにより転送データをネットワーク30を介してノード12の通信インタフェース123から受信する。
次に、通信インタフェース133は、RDMAの受信応答のパケットを生成する。具体的には、通信インタフェース133は、受信したパケットのヘッダから、転送データの送信元のノード12のアドレス、転送データの宛先のノード13のアドレス及び制御元のノード11のアドレスを取得する。さらに、通信インタフェース133は、受信したパケットのヘッダから、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを取得する。そして、通信インタフェース133は、送信するパケットのヘッダに、制御元であり且つ受信応答のパケットの宛先であるノード11のアドレスを格納する。また、通信インタフェース133は、送信するパケットのヘッダに、転送データの宛先であり受信応答のパケットの送信元であるノード13のアドレスを格納する。また、通信インタフェース133は、送信するパケットのヘッダに、転送データの送信元のノード12のアドレス、読み出しメモリアドレス、書き込みメモリアドレス及び転送データサイズを格納する。さらに、通信インタフェース133は、受信結果を表すエラーコードを送信するパケットのヘッダに格納する。そして、通信インタフェース133は、生成したRDMAの受信応答のパケットをネットワーク30を介してノード11の通信インタフェース113へ送信する。
次に、図13を参照して、ノード11によりノード12からノード13へのRDMAによる転送データの送信が制御される場合の、本実施例に係るRDMAの通信要求、転送データ及びRDMAの受信応答の送信についてまとめて説明する。図13は、実施例2に係る並列処理装置によるRDMA通信要求、転送データ及びRDMAの受信応答の送信を表す図である。
ノード11の通信インタフェース113は、図2の処理P1で示した処理と同様に、処理Q1で示すように、RDMA通信要求のパケットをノード12の通信インタフェース123へ送信する。
ノード12の通信インタフェース123は、図3の処理P2で示した処理と同様に、処理Q2で示すように、生成したパケットを送信することで、転送データをノード13の通信インタフェース133へ送信する。
ノード13の通信インタフェース133は、ノード12の通信インタフェース123から送信された転送データを送信するためのパケットを受信する。次に、ノード13の通信インタフェース133は、受信したパケットから転送データを取得し、メモリ132に格納する。次に、ノード13の通信インタフェース133は、受信したパケットから、パケットの宛先となる制御元のノード11のアドレスなどを取得する。次に、ノード13の通信インタフェース133は、RDMAの受信応答のパケットを生成する。そして、ノード13の通信インタフェース133は、処理Q3で示すように、ノード12を中継させずに、ネットワーク30を介して直接ノード11の通信インタフェース113へ、RDMAの受信応答を送信する。
ノード11の通信インタフェース113は、ネットワーク30を介してノード13の通信インタフェース133からノード12を中継させずに直接RDMAの受信応答のパケットを受信する。そして、ノード11の通信インタフェース113は、ノード11のプロセッサ111にRDMAの受信応答を送信する。ノード11のプロセッサ111は、RDMAの受信応答を受信し、RDMAによる転送データの送信処理の完了を確認する。
このように、本実施例に係るノード13の通信インタフェース133は、ノード12を中継させずに直接ノード11の通信インタフェース113へRDMAの受信応答を送信することができる。
以上に説明したように、本実施例に係る並列処理装置は、転送データの宛先のノードから他のノードを介さずに、直接制御元のノードへRDMAの受信応答が送られる。すなわち、RDMA通信要求及び転送データの送信に用いられた経路を用いずに、他の経路を用いてRDMAの受信応答を送信することができる。このように、本実施例に係る並列処理装置は、各パケットの通信経路として他の経路を用いることができ、経路選択の自由度を高めることができる。
1 並列処理装置
11〜18 ノード
20 管理装置
30 ネットワーク
111,121,131 プロセッサ
112,122,132 メモリ
113,123,133 通信インタフェース

Claims (4)

  1. 第1情報処理装置、第2情報処理装置及び第3情報処理装置を有する並列処理装置であって、
    前記第1情報処理装置は、
    所定データのRDMA通信を開始させ、前記RDMA通信の応答を受信するデータ転送制御部と、
    前記データ転送制御部による前記所定データの前記RDMA通信の開始を受けて、前記RDMA通信による前記所定データの送信を指示するRDMA通信要求を送信する転送指示部とを備え、
    前記第2情報処理装置は、
    前記所定データが格納された第1メモリと、
    前記データ転送制御部から送信された前記RDMA通信要求を受信し、前記第1メモリに格納された前記所定データを前記RDMA通信で前記第3情報処理装置へ送信するデータ送信部とを備え、
    前記第3情報処理装置は、
    第2メモリと、
    前記データ送信部により前記RDMA通信で送信された前記所定データを受信し前記第2メモリに格納し、前記RDMA通信の前記応答を作成し送信する受信処理部とを備えた
    ことを特徴とする並列処理装置。
  2. 前記データ送信部は、前記受信処理部から送信された前記応答を取得し、前記転送指示部へ転送し、
    前記転送指示部は、前記データ送信部により転送された前記応答を受信し、前記データ転送制御部へ送信し、
    前記データ転送制御部は、前記転送指示部から送信された前記応答を受信する
    ことを特徴とする請求項1に記載の並列処理装置。
  3. 前記転送指示部は、前記受信処理部から送信された前記応答を、他の情報処理装置を介さずに前記受信処理部から受信し、前記データ転送制御部へ送信し
    前記データ転送制御部は、前記転送指示部が送信した前記所定データの前記応答を前記RDMA通信の応答として受信する
    ことを特徴とする請求項1に記載の並列処理装置。
  4. 第1情報処理装置、第2情報処理装置及び第3情報処理装置を用いた通信制御方法であって、
    前記第1情報処理装置に、
    所定データのRDMA通信を開始させ、
    前記RDMA通信による前記所定データの送信を指示するRDMA通信要求を送信させ、
    前記第2情報処理装置に、
    前記第1情報処理装置から送信された前記RDMA通信要求を受信させ、
    自装置が有する第1メモリに格納された前記所定データを前記RDMA通信で前記第3情報処理装置へ送信させ、
    前記第3情報処理装置に、
    前記第2情報処理装置から前記RDMA通信で送信された前記所定データを受信させ、
    受信した前記所定データを自装置が有する第2メモリに格納させ、
    前記所定データの受信の応答を送信させ、
    前記第1情報処理装置に、
    前記応答を受信させる
    ことを特徴とする通信制御方法。
JP2016077292A 2016-04-07 2016-04-07 並列処理装置及び通信制御方法 Active JP6740683B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2016077292A JP6740683B2 (ja) 2016-04-07 2016-04-07 並列処理装置及び通信制御方法
CN201710145981.2A CN107273318A (zh) 2016-04-07 2017-03-13 并行处理设备和通信控制方法
US15/459,290 US20170295237A1 (en) 2016-04-07 2017-03-15 Parallel processing apparatus and communication control method
EP17161704.6A EP3229145A1 (en) 2016-04-07 2017-03-17 Parallel processing apparatus and communication control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016077292A JP6740683B2 (ja) 2016-04-07 2016-04-07 並列処理装置及び通信制御方法

Publications (2)

Publication Number Publication Date
JP2017187973A true JP2017187973A (ja) 2017-10-12
JP6740683B2 JP6740683B2 (ja) 2020-08-19

Family

ID=58398037

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016077292A Active JP6740683B2 (ja) 2016-04-07 2016-04-07 並列処理装置及び通信制御方法

Country Status (4)

Country Link
US (1) US20170295237A1 (ja)
EP (1) EP3229145A1 (ja)
JP (1) JP6740683B2 (ja)
CN (1) CN107273318A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112822299B (zh) * 2021-04-19 2021-07-13 北京易捷思达科技发展有限公司 基于rdma的数据传输方法、装置及电子设备

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4192416B2 (ja) 2000-06-08 2008-12-10 株式会社日立製作所 計算機システムおよびそのデータ転送方法
US7565454B2 (en) * 2003-07-18 2009-07-21 Microsoft Corporation State migration in multiple NIC RDMA enabled devices
US7543037B2 (en) * 2003-12-02 2009-06-02 International Business Machines Corporation RDMA completion and retransmit system and method
US20060075057A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
US7478138B2 (en) * 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US20070041383A1 (en) * 2005-04-05 2007-02-22 Mohmmad Banikazemi Third party node initiated remote direct memory access
US8458280B2 (en) * 2005-04-08 2013-06-04 Intel-Ne, Inc. Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US7571259B2 (en) * 2006-05-02 2009-08-04 Broadcom Corporation Apparatus and methods for efficient insertion and removal of MPA markers and RDMA CRC digest
JP2008097273A (ja) 2006-10-11 2008-04-24 Fujitsu Ltd ネットワークインタフェース装置、ネットワークインタフェース制御方法、情報処理装置、データ転送方法
US7773618B2 (en) * 2006-11-08 2010-08-10 Sicortex, Inc. System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
US20100017513A1 (en) * 2008-07-16 2010-01-21 Cray Inc. Multiple overlapping block transfers
US9396021B2 (en) * 2008-12-16 2016-07-19 International Business Machines Corporation Techniques for dynamically assigning jobs to processors in a cluster using local job tables
US8103809B1 (en) * 2009-01-16 2012-01-24 F5 Networks, Inc. Network devices with multiple direct memory access channels and methods thereof
JP2010218364A (ja) * 2009-03-18 2010-09-30 Fujitsu Ltd 情報処理システム、通信制御装置および方法
US8688798B1 (en) * 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
KR101694977B1 (ko) * 2010-12-17 2017-01-11 한국전자통신연구원 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법
US8490113B2 (en) * 2011-06-24 2013-07-16 International Business Machines Corporation Messaging in a parallel computer using remote direct memory access (‘RDMA’)
US20120331243A1 (en) * 2011-06-24 2012-12-27 International Business Machines Corporation Remote Direct Memory Access ('RDMA') In A Parallel Computer
US8832216B2 (en) * 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
US10474625B2 (en) * 2012-01-17 2019-11-12 International Business Machines Corporation Configuring compute nodes in a parallel computer using remote direct memory access (‘RDMA’)
JP5891881B2 (ja) * 2012-03-19 2016-03-23 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
WO2013154541A1 (en) * 2012-04-10 2013-10-17 Intel Corporation Remote direct memory access with reduced latency
US9063928B2 (en) * 2012-07-12 2015-06-23 International Business Machines Corporation Processing data packets from a receive queue in a remote direct memory access device
US9378179B2 (en) * 2012-11-21 2016-06-28 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US9176911B2 (en) * 2012-12-11 2015-11-03 Intel Corporation Explicit flow control for implicit memory registration
US9313274B2 (en) * 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
US8996741B1 (en) * 2013-09-25 2015-03-31 International Business Machiness Corporation Event driven remote direct memory access snapshots
US9525734B2 (en) * 2013-10-30 2016-12-20 Annapurna Labs Ltd. Hybrid remote direct memory access
US9495325B2 (en) * 2013-12-30 2016-11-15 International Business Machines Corporation Remote direct memory access (RDMA) high performance producer-consumer message processing
US10484472B2 (en) * 2015-07-31 2019-11-19 Netapp, Inc. Methods and systems for efficiently moving data between nodes in a cluster
US9898439B2 (en) * 2015-09-28 2018-02-20 International Business Machines Corporation Optimizing remote direct memory access (RDMA) with cache aligned operations
US20170155717A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Direct memory access for endpoint devices

Also Published As

Publication number Publication date
US20170295237A1 (en) 2017-10-12
JP6740683B2 (ja) 2020-08-19
EP3229145A1 (en) 2017-10-11
CN107273318A (zh) 2017-10-20

Similar Documents

Publication Publication Date Title
US10204070B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
US7643477B2 (en) Buffering data packets according to multiple flow control schemes
JP6048505B2 (ja) 並列計算機、ノード装置、及び並列計算機の制御方法
US8204054B2 (en) System having a plurality of nodes connected in multi-dimensional matrix, method of controlling system and apparatus
JP5629954B2 (ja) 少なくとも部分的なフレーム送信に対して割り込みが可能な装置、方法、およびプログラム
US20090198956A1 (en) System and Method for Data Processing Using a Low-Cost Two-Tier Full-Graph Interconnect Architecture
US20120221669A1 (en) Communication method for parallel computing, information processing apparatus and computer readable recording medium
US20110010522A1 (en) Multiprocessor communication protocol bridge between scalar and vector compute nodes
JP2008228150A (ja) スイッチ装置及びフレーム交換方法とそのプログラム
US20230421451A1 (en) Method and system for facilitating high availability in a multi-fabric system
JP5477112B2 (ja) ネットワークシステムの試験方法
JP6740683B2 (ja) 並列処理装置及び通信制御方法
JP4415391B2 (ja) データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置
CN113179228B (zh) 一种提高交换机堆叠可靠性的方法、装置、设备及介质
US11444886B1 (en) Out of order packet buffer selection
US10735310B2 (en) Controller, method for adjusting flow rule, and network communication system
JP4122328B2 (ja) 伝送装置
US10681145B1 (en) Replication in a protocol offload network interface controller
JP5331897B2 (ja) 通信方法、情報処理装置及びプログラム
JP2010086227A (ja) 計算機間相互結合網における通信経路の冗長化と切り替え方法、この方法を実現するサーバ装置、そのサーバモジュール、および、そのプログラム
CN112073162A (zh) 用于运行冗余的自动化系统的方法
CN111698151A (zh) 路由信息管理方法、装置及计算机存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200623

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200706

R150 Certificate of patent or registration of utility model

Ref document number: 6740683

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150