WO2022024562A1 - 並列分散計算システム - Google Patents
並列分散計算システム Download PDFInfo
- Publication number
- WO2022024562A1 WO2022024562A1 PCT/JP2021/022269 JP2021022269W WO2022024562A1 WO 2022024562 A1 WO2022024562 A1 WO 2022024562A1 JP 2021022269 W JP2021022269 W JP 2021022269W WO 2022024562 A1 WO2022024562 A1 WO 2022024562A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- receiving
- memory area
- history
- address
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
Abstract
本発明は、MBCFにより遠隔メモリ操作が行われた受信側プロセスが、メモリ操作の内容を認識して必要な処理を行うことを低コストで可能にする手段を提供するものであり、送信側プロセスが、受信側プロセスの識別子と、当該受信側プロセスのメモリ領域を規定する操作対象アドレスと、書き込まれるデータサイズと、データ列と、前記受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスとを含む操作要求パケットを送信し、前記送信先計算機が、前記操作要求パケットを受信し、前記受信側プロセス及び前記操作対象アドレスにより規定されるメモリ領域に前記データ列を格納し、前記履歴メモリ領域に操作内容として操作対象アドレスと、書き込まれたデータサイズと、前記送信側プロセスの情報とを記録する。
Description
本発明は、アドレス変換バッファ(TLB)を有するプロセッサ、物理メモリ、及び、当該物理メモリに直接アクセス可能なネットワークインターフェースコントローラ(NIC)を備えた複数の計算機を、データリンクを介して相互接続した並列分散計算システムに関するものである。
本願発明者は、非特許文献1に示すように、メモリベース通信同期方式に基づく通信同期機構のうちのメモリベース通信ファシリティ(MBCF;Memory Based Communication Facility)の開発を進めている。このMBCFは、特殊な通信同期ハードウェアを一切必要とせず、一般のネットワークインタフェースカード(NIC)を使用して、ソフトウェアのみで遠隔メモリ操作による高速高機能通信同期を実現する機構である。
Matsumoto, T.: A Study on Memory-Based Communications and Synchronization in Distributed-Memory Systems. Dissertation Thesis, Graduate School of Science, Univ. of Tokyo (February 2001).
具体的に上記のMBCFは、アドレス変換バッファ(TLB)を有するプロセッサ、物理メモリ、及び、当該物理メモリに直接アクセス可能なネットワークインターフェースコントローラ(NIC)を備えた計算機を用いて構成される。例えば、送信元計算機のプロセス(以下、送信側プロセス)が、送信先計算機のプロセスを規定する操作対象プロセス(以下、受信側プロセス)の識別子と、当該受信側プロセスのメモリ領域を規定する操作対象アドレスと、書き込まれるデータサイズと、データ列とを含む操作要求パケットを送信する。そして、送信先計算機が、送信側プロセスが送信した操作要求パケットを受信し、受信側プロセス及び操作対象アドレスにより規定されるメモリ領域にデータ列を格納する。
複数の計算機を、データリンクを介して結合した並列分散計算システムにおいて、遠隔メモリ操作を実現するための手段としてMBCFは提供される。従来のMBCFでは、送信側プロセスが受信側プロセスと同期を取ることなく受信側プロセス内のメモリを書き換えることが可能であり、このことがMBCFによる通信の自由度の高さと高性能さの大きな要因となっている。しかし、その反面、送信側プロセスによって受信側プロセスのメモリが書き換えられても、受信側プロセスは、どのメモリが変更されたのか認識できない。メモリ内容の変更が受信側プロセスにおける他のデータ変更を引き起こす場合は、変更された場所が判らないことが大きなデメリットを生じさせる。
そこで本発明は、上記問題点を解決すべくなされたものであり、アドレス変換バッファ(TLB)を有するプロセッサ、物理メモリ、及び、当該物理メモリに直接アクセス可能なネットワークインターフェースコントローラ(NIC)を備えた複数の計算機を、データリンクを介して相互接続した並列分散計算システムにおいて、遠隔メモリ操作が行われた受信側プロセスが、メモリ操作の内容を認識して必要な処理を行うことを低コストで可能にする手段を提供することをその主たる課題とするものである。
すなわち本発明に係る並列分散計算システムは、アドレス変換バッファ(TLB)を有するプロセッサ、物理メモリ、及び、当該物理メモリに直接アクセス可能なネットワークインターフェースコントローラ(NIC)を備えた複数の計算機を、データリンクを介して相互接続した並列分散計算システムであって、送信元計算機のプロセス(以下、送信側プロセス)が、送信先計算機のプロセスを規定する操作対象プロセス(以下、受信側プロセス)の識別子と、当該受信側プロセスのメモリ領域を規定する操作対象アドレスと、書き込まれるデータサイズと、データ列と、前記受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスとを含む操作要求パケットを送信し、前記送信先計算機が、前記操作要求パケットを受信し、前記受信側プロセス及び前記操作対象アドレスにより規定されるメモリ領域に前記データ列を格納し、前記履歴メモリ領域に操作内容として操作対象アドレスと、書き込まれたデータサイズと、前記送信側プロセスの情報とを記録することを特徴とする。
このような並列分散計算システムであれば、複数の計算機をデータリンクを介して相互接続し、複数の計算機が相互にMBCFで通信同期を行う並列分散計算システムにおいて、送信側プロセスが受信側プロセスに送信する操作要求パケットが、受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスを含み、送信先計算機が、操作要求パケットを受信し、履歴メモリ領域に操作内容として操作対象アドレスと、書き込まれたデータサイズと、送信側プロセスの情報とを記録するので、受信側プロセスが、履歴メモリ領域を参照することにより、メモリ操作の内容を認識して必要な処理を低コストで行うことができる手段を提供することができる。
前記受信側プロセスの存在する計算機は、前記履歴メモリ領域に操作内容履歴が溜まった時点で、非同期ユーザ関数を受信側プロセスに起動することが考えられる。
前記送信先計算機は、前記受信側プロセスのメモリ領域に上書きする前のデータを前記履歴メモリ領域に退避させることが考えられる。
前記送信側プロセスが、送信先計算機のプロセスを規定する操作対象プロセス(以下、受信側プロセス)の識別子と、当該受信側プロセスのメモリ上の表領域を規定する操作対象アドレスと、表内の行と列の情報、書き込むデータサイズと、データ列と、前記受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスとを含む操作要求パケットを送信し、前記送信先計算機が、前記操作要求パケットを受信し、前記受信側プロセス及び前記操作対象アドレスにより規定される表領域を規定する領域からデータを読み出して、前記操作要求パケット内に規定された行と列に相当するメモリアドレスを求め、そのアドレスから前記データ列を格納し、前記履歴メモリ領域に操作内容として操作対象アドレスと、行と列の情報と、書き込まれたデータサイズと、前記送信側プロセスの情報とを記録することが考えられる。
前記送信先計算機は、前記履歴メモリ領域に操作内容履歴が溜まった時点で、非同期ユーザ関数を受信側プロセスに起動することが考えられる。
前記送信先計算機は、前記受信側プロセスの表領域に上書きする前のデータを前記履歴メモリ領域に退避させることが考えられる。
このように構成した本発明によれば、MBCFによる遠隔メモリ書き込み操作において、操作内容を受信側プロセスに低コストで通知する手段を提供できる。
100・・・並列分散計算システム
2 ・・・計算機
2X ・・・送信元計算機
2Y ・・・送信先計算機
21 ・・・プロセッサ
22 ・・・物理メモリ
23 ・・・ネットワークインターフェースコントローラ(NIC)
3 ・・・データリンク
2 ・・・計算機
2X ・・・送信元計算機
2Y ・・・送信先計算機
21 ・・・プロセッサ
22 ・・・物理メモリ
23 ・・・ネットワークインターフェースコントローラ(NIC)
3 ・・・データリンク
以下、本発明の一実施形態に係る並列分散計算システム100について、図面を参照して説明する。
<1.システム構成>
本実施形態の並列分散計算システム100は、図1(a)に示すように、複数の計算機2をデータリンク3及びスイッチングハブ装置4を介して相互接続したものである。計算機2間のデータ転送バンド幅を増大させるために、図1(b)に示すように、複数の計算機2を複数のデータリンク3及びスイッチングハブ装置4を介して相互接続することにより並列分散計算システムを構成しても構わない。
本実施形態の並列分散計算システム100は、図1(a)に示すように、複数の計算機2をデータリンク3及びスイッチングハブ装置4を介して相互接続したものである。計算機2間のデータ転送バンド幅を増大させるために、図1(b)に示すように、複数の計算機2を複数のデータリンク3及びスイッチングハブ装置4を介して相互接続することにより並列分散計算システムを構成しても構わない。
各計算機2は、図2に示すように、アドレス変換バッファ(TLB;Translation Look-aside Buffer)を有するプロセッサ21、物理メモリ22、及び、当該物理メモリ22に直接アクセス可能なネットワークインターフェースコントローラ(NIC;Network Interface Card)23を備えたものである。
そして、並列分散計算システム100は、特殊な通信同期ハードウェアを一切必要とせず、一般のネットワークインタフェースカード(NIC)23を使用して、ソフトウェアのみで遠隔メモリ操作による高速高機能通信同期を実現するメモリベース通信ファシリティ(MBCF;Memory Based Communication Facility)を構築するものである。具体的に並列分散計算システム100は、各計算機2のカーネル空間内に格納されたオペレーティングシステム(OS)によって、メモリベース通信ファシリティ(MBCF)を構築する。
並列分散計算システム100は、例えば、以下に示す遠隔メモリ書き込みを行うWRITEコマンド(MBCF_WRITE)や遠隔メモリ読み出しを行うREADコマンド(MBCF_READ)などの各種の操作コマンドのバリエーションを有する。
例えば、送信元計算機2(2X)のプロセス(以下、送信側プロセス)が、送信先計算機2(2Y)のプロセスを規定する操作対象プロセス(以下、受信側プロセス)の識別子と、当該受信側プロセスのメモリ領域を規定する操作対象アドレスと、書き込まれるデータサイズと、データ列とを含む操作要求パケットを送信し、送信先計算機2が、操作要求パケットを受信し、受信側プロセス及び操作対象アドレスにより規定されるメモリ領域にデータ列を格納する(MBCF_WRITE)。
また、送信側プロセスが、送信先計算機2(2Y)のプロセスを規定する操作対象プロセス(以下、受信側プロセス)の識別子と、当該受信側プロセスのメモリ領域を規定する操作対象アドレスと、読み出すデータサイズと、送信側プロセスのデータ格納領域アドレスとを含む操作要求パケットを送信し、送信先計算機2(2Y)が、操作要求パケットを受信し、受信側プロセス及び操作対象アドレスにより規定されるメモリ領域からデータ列を読み出して、送信側プロセスのデータ格納領域に返送する(MBCF_READ)。
ここで、MBCF_WRITEの手順について、図3~図6を参照して詳述する。なお、その他のコマンドについても基本となる手順は共通している。
図3はMBCF_WRITEの使用環境を示しており、Pnode1が操作要求パケットの送信元ノード(送信元計算機)であり、Pnode2が受信側ノード(送信先計算機)である。送信元ノードのプロセッサは、自分のメモリのNIC DMA領域内に配送情報の書かれたヘッダとペイロードを含むパケットイメージを作成する。NIC DMA領域メモリには送信又は受信のためにNICが直接アクセスすることが可能である。送信用のパケットイメージの生成が終わると、プロセッサはNICにDMA読み出しによる送信動作を開始させるための指示(kick動作)を行う。受信側ノード(Pnode2)は、自分のメモリのNIC DMA領域内に到達するパケットのためのリングバッファを持っている。受信側ノードのNICは、パケットが自分のノード宛てのパケットであるか判断して(通常はMACアドレスで判断する)、自分宛てのパケットに関しては、リングバッファにそのコピーを生成する。その後、NICは、受信側ノードのプロセッサにパケットの到着を知らせるためにハードウェア割り込みを発生させる。
次に、図4を参照して、操作要求側におけるパケット生成過程を含む、操作要求パケット送信の動作手順を示す。
送信側プロセス(要求側タスク)では、受信側プロセス(要求先タスク)の識別子[Ltask1]、受信側プロセスの操作対象アドレス[Laddr1]、受信側プロセスのメモリ空間操作のためのアクセスキー[AccessKey]、MBCFのコマンド種別[MBCF_WRITE]、遠隔書き込みを行うデータサイズ[n]、書き込むデータが格納された領域の先頭へのポインタ[Laddr0]から成るパラメータを用意する。そして、これらのパラメータを伴ってMBCF要求送信用システムコールを呼び出す。システムコールを受けてOSは、送信側プロセスのタスク表を参照して、受信側プロセスを示す論理タスクIDを物理タスクID[(Pnode2, Ptask5)]に変換する。物理タスクIDは物理的なノードIDであるPnode2を含んでいるため、この情報から受信側ノードへの経路情報(配送先情報)が設定できる。使用するネットワークがEthernetであれば、MACアドレスが配送先情報として使用される。この配送先情報によってNICは操作要求パケットを受信側ノードまで配送することが可能になる。そして、OSはNICに操作要求パケットを送信させる。
次に、図5及び図6を参照して、操作要求先における操作要求パケットの受信手順を示す。
図5は、受信側ノードに操作要求パケットが到着した状況を示す。操作要求パケットは受信側ノード[Pnode2]までネットワークによって運ばれてくる。パケット到着時に、受信側ノードのNICはDMAによって操作要求パケットのデータイメージをリングバッファにコピーし、その後に受信側ノードのプロセッサにパケットが到着したことを知らせるために、割込み信号を発生させる。
図6に、受信側ノードにおけるパケット受信割込みルーチン内のMBCF関連処理を示す。NICからの受信割込み発生により、受信側ノードのプロセッサはパケット受信ルーチンに制御が切り替わり、NICによって要求される低レベルのパケット受信手順を最初に実行する。低レベルの受信手順の後に、パケット受信ルーチンでは、まず物理タスクID(図中のPtask5)から受信側プロセスを特定する。具体的には、そのプロセスのプロセス構造体へのポインタを得る。次に、操作要求パケット内のAccessKeyが受信側プロセスのものと一致しているかどうかチェックして、一致している場合のみ受信側プロセスのメモリ空間内のメモリ操作を許可する。一致した場合は、メモリ空間のコンテクストを受信側プロセスのものに切り替えて、操作要求パケットで運ばれてきたnバイトのデータを論理アドレス(Laddr1)から、特権レベルとしてではなくユーザ権限のstore命令によって書き込む。そして、メモリ空間のコンテクストを割込み発生時のものに戻しておく。ここまでで割込みルーチン内の処理が終了する。
次に、並列分散計算システム100において、FIFOキューにデータを登録するコマンド(MBCF_FIFO)の動作について説明する。
MBCF_FIFOにおいて、送信側プロセス(要求側タスク)の動作はMBCF_WRITEとほとんど同じである。コマンドのMBCF_WRITEがMBCF_FIFOに置き換わることと、宛先の操作対象アドレス[Laddr1]の受信側プロセス(受信側タスク)内で指す先が、データを格納する領域ではなく、FIFOキューを規定する複数のポインタが格納されたFIFO構造体であることぐらいが、差異である。このため、MBCF_FIFOの送信側プロセス(要求側タスク)の動作説明は省略する。
図7に、要求先ノード(受信側計算機)にMBCF_FIFO操作要求パケットが到着した時の受信側プロセス(要求先タスク)内のFIFO構造体ならびにFIFOキューの状況を示す。FIFO構造体には4つのポインタ(リングバッファ(バッファ用メモリ領域)を規定するtop, head, tail, bottomの4本)とFIFOキューの状態フラグが格納されている(図中では状態フラグは省略)。割込みルーチン内のMBCF受信ルーチンにおいて、プロセッサは操作対象のFIFO構造体内のポインタとフラグを読み、それらで規定されるバッファ領域にパケットで運んできたデータを格納する。その後、FIFO構造体内のポインタの値を更新する。図8にFIFOキューにデータを格納して、FIFO構造体内のポインタを更新した後の状況を示す。要求先ノードにおけるこれらのメモリ操作はローカルかつ不可分に行われる。つまり、ノードローカルな操作であるためオーバヘッドコストは低く、また、MBCF_FIFO操作要求パケットを処理中に他のMBCF操作要求パケットが同一アドレスの前記FIFO構造体をアクセスすることがないことが保障されている。
なお、FIFO構造体が規定するバッファが満杯に近い状態で、MBCF_FIFO操作要求パケットによって運ばれてきたデータすべてを格納することができない場合は、要求先におけるMBCF受信ルーチンの動作はすべてキャンセルされる。より具体的には、FIFO構造体の内容がまったく更新されないため、FIFOキューに何のデータも追加されていないのと同じ状態となる。
そして、本実施形態の並列分散計算システム100では、受信側プロセスが送信側プロセスの操作履歴を記録するコマンド(MBCF_WRITE_wLOG)を実装している。
具体的には、送信側プロセスが、送信先計算機2(2Y)のプロセスを規定する受信側プロセスの識別子と、当該受信側プロセスのメモリ領域を規定する操作対象アドレスと、書き込まれるデータサイズと、データ列と、受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスとを含む操作要求パケット(MBCF_WRITE_wLOG操作要求パケット)を送信する。
そして、送信先計算機2(2Y)が、MBCF_WRITE_wLOG操作要求パケットを受信し、受信側プロセス及び操作対象アドレスにより規定されるメモリ領域にデータ列を格納する。また、送信先計算機2(2Y)は、履歴メモリ領域に操作内容として操作対象アドレスと、書き込まれたデータサイズと、送信側プロセスの情報とを記録する。
ここでは、操作履歴を一時的に記録するための履歴メモリ領域として、MBCFのFIFOキューを用いている。このFIFOキューは、上述したMBCF_FIFOやMBCF_FIFO_READによって操作が定義され実装されている。ただし、履歴メモリ領域としてのFIFOキューへの登録内容は、操作要求パケット内に搭載されたデータではなく、MBCF_WRITE_wLOG操作パケットに関する送信側プロセスの識別子、操作対象アドレス、書き込みデータサイズといった書き込み操作内容を送信先計算機2(2Y)が登録する。このように、履歴メモリ領域としてFIFOキューを流用(データの代わりに操作履歴を登録)することにより、新たな機能を開発する手間を省くことができ、また、コード量も少なくて済む。
図9に、要求先ノード(送信先計算機)にMBCF_WRITE_wLOG操作要求パケットが到着した時の受信側プロセス(要求先タスク)内のメモリの状況を示す。操作要求パケットで運搬されてきたデータ列がLaddr1のアドレスからnバイト格納され、Laddr2のアドレスにあるFIFO構造体が履歴メモリ領域としてのFIFOキューを規定し、FIFOキュー内に書き込み操作内容が登録される。ユーザのデータ登録用のFIFOキューと同様に、FIFO構造体には4つのポインタ(リングバッファ(バッファ用メモリ領域)を規定するtop, head, tail, bottomの4本)とFIFOキューの状態フラグが格納されている(図中では状態フラグは省略)。割込みルーチン内のMBCF受信ルーチンにおいて、送信先計算機2(2Y)のプロセッサは操作対象のFIFO構造体内のポインタとフラグを読み、それらで規定されるバッファ領域(履歴メモリ領域)に、操作内容(LOG DATA)として操作対象アドレスと(Laddr1)、書き込まれたデータサイズ(n)と、送信側プロセスの情報(Ltask1)とを格納する。その後、FIFO構造体内のポインタの値を更新する。なお、FIFOキューが溢れた場合には、遠隔書き込み自体が無かったことにする場合は、FIFOキューへの操作内容の登録を先に行い、登録できた場合のみLaddr1のアドレスからnバイトのデータを書き込む。
また、受信側プロセスの存在する送信先計算機2(2Y)は、履歴メモリ領域に操作内容履歴が一定量以上溜まった時点で、履歴メモリ領域の内容を確認して必要な操作を実施する非同期ユーザ関数を受信側プロセスに起動する。その他、送信先計算機2(2Y)は、受信側プロセスのメモリ領域に上書きする前のデータを履歴メモリ領域に退避させることにより、受信側プロセスが遠隔書き込みのロールバックや、総和計算を含む各種統計計算を低コストで計算できるように構成されている。
履歴メモリに書き込み操作のログを残すことの有用性について以下に具体的な説明を行う。受信側プロセスに広大なデータ領域が存在して、その統計データの計算を受信側プロセスで行っている場合を想定する。データ領域が表形式になっており、各項目には数値が格納されているとし、列の総和と平均、行の総和と平均を受信側プロセスが計算して、別の領域に統計データとして格納しているとする。書き込み操作ログが存在しない状況では、受信側プロセスはどのデータが更新されたか判らないため、全列と全行に対して、総和と平均を再計算する必要が生じる。これに対して、更新したデータのアドレスとサイズが履歴メモリから判明すれば、その情報からどの行もしくはどの列の再計算が必要であるか判定できるため、再計算を行う行と列を更新がなされた場所だけに限定することが可能となり、大幅に受信側プロセスの処理コストを削減できる。履歴メモリに更新前のデータが残されていれば、行および列の総和計算は再計算前の総和から更新前の数値を引いて新しい数値を足しこむことで求めることが可能であるため、行もしくは列全体のデータすらアクセスすることなく、行と列に関する総和を求め、平均値も算出できる。
また、本実施形態の並列分散計算システム100では、操作履歴を残さない表形式の書き込みコマンド(MBCF_TABLE)だけでなく、操作履歴を残す表形式の書き込みコマンド(MBCF_TABLE_wLOG)を実装している。これらのコマンドは遠隔書き込みアドレスを直接指定するのではなく、受信側プロセス内の表を規定する情報が格納された領域を操作対象アドレスとして指定し、表内の行と列の情報によってデータの格納場所を指定する遠隔書き込みコマンドである。なお、MBCF_TABLEは、MBCF_TABLE_wLOGに対して操作履歴を残さないという違いのみであり、以下では、MBCF_TABLE_wLOGについて説明する。
MBCF_TABLE_wLOGにおいては、送信側プロセスが、送信先計算機2(2Y)のプロセスを規定する受信側プロセスの識別子と、当該受信側プロセスのメモリ上の表領域を規定する操作対象アドレスと、表内の行と列の情報、書き込むデータサイズと、データ列と、受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスとを含むMBCF_TABLE_wLOG操作要求パケットを送信する。
そして、送信先計算機2(2Y)が、MBCF_TABLE_wLOG操作要求パケットを受信し、受信側プロセス及び操作対象アドレスにより指定される表領域を規定する領域からデータを読み出して、送信側プロセスにより指定され操作要求パケット内に格納された行と列に相当するメモリアドレスを求め、そのアドレスからデータ列を格納する。また、送信先計算機2(2Y)は、履歴メモリ領域に操作内容として操作対象アドレスと、行と列の情報と、書き込まれたデータサイズと、送信側プロセスの情報とを記録する。
ここでは、操作履歴を一時的に記録するための履歴メモリ領域として、MBCFのFIFOキューを用いている。このFIFOキューは、上述したMBCF_FIFOやMBCF_FIFO_READによって操作が定義され実装されている。ただし、履歴メモリ領域としてのFIFOキューへの登録内容は、操作要求パケット内に搭載されたデータではなく、MBCF_TABLE_wLOG操作パケットに関する送信側プロセスの識別子、操作対象アドレス、書き込みデータサイズといった書き込み操作内容を送信先計算機2(2Y)が登録する。このように、履歴メモリ領域としてFIFOキューを流用(データの代わりに操作履歴を登録)することにより、新たな機能を開発する手間を省くことができ、また、コード量も少なくて済む。
図10に、要求先ノード(送信先計算機)にMBCF_TABLE_wLOG操作要求パケットが到着した時の受信側プロセス(要求先タスク)内のメモリの状況を示す。操作要求パケットで運搬されてきたデータ列はLaddr1のアドレスにあるTABLE構造体で規定される表メモリ領域の指定された行と列のセルのデータとしてnバイト格納され、Laddr2のアドレスにあるFIFO構造体が履歴メモリ領域としてのFIFOキューを規定し、FIFOキュー内に書き込み操作内容が登録される。ユーザのデータ登録用のFIFOキューと同様に、FIFO構造体には4つのポインタ(リングバッファ(バッファ用メモリ領域)を規定するtop, head, tail, bottomの4本)とFIFOキューの状態フラグが格納されている(図中では状態フラグは省略)。割込みルーチン内のMBCF受信ルーチンにおいて、送信先計算機2(2Y)のプロセッサは操作対象のFIFO構造体内のポインタとフラグを読み、それらで規定されるバッファ領域(履歴メモリ領域)に、操作内容(LOG DATA)として操作対象アドレス(Laddr1)と、行(row1)と列(col1)の情報と、書き込まれたデータサイズ(n)と、送信側プロセスの情報(Ltask1)とを格納する。その後、FIFO構造体内のポインタの値を更新する。なお、FIFOキューが溢れた場合には、遠隔書き込み自体が無かったことにする場合は、FIFOキューへの操作内容の登録を先に行い、登録できた場合のみLaddr1のアドレスのTABLE構造体で規定された表にnバイトのデータを書き込む。MBCF_TABLE_wLOGは表内のセルへの書き込みコマンドであるため、セルの内容自体が要求パケット内のデータと置き換わる。つまり、表領域の開始番地だけでなく各セルのサイズや行全体のバイト数に関する情報がTABLE構造体に存在し、nが指定されたセルのサイズよりも小さい場合は、セル全体を削除して新しいnバイトのデータを書き込み、nがセルのサイズよりも大きい場合は、セルからはみ出す部分は格納されない。
また、受信側プロセスの存在する送信先計算機2(2Y)は、履歴メモリ領域に操作内容履歴が一定量以上溜まった時点で、履歴メモリ領域の内容を確認して必要な操作を実施する非同期ユーザ関数を受信側プロセスに起動する。その他、送信先計算機2(2Y)は、受信側プロセスのメモリ領域に上書きする前のデータを履歴メモリ領域に退避させることにより、受信側プロセスが遠隔書き込みのロールバックや、総和計算を含む各種統計計算を低コストで計算できるように構成されている。
履歴メモリに書き込み操作のログを残すことの有用性について以下に具体的な説明を行う。受信側プロセスに広大な表形式のデータ領域が存在して、その統計データの計算を受信側プロセスで行っている場合を想定する。表の各項目には数値が格納されているとし、列の総和と平均、行の総和と平均を受信側プロセスが計算して、別の領域に統計データとして格納しているとする。書き込み操作ログが存在しない状況では、受信側プロセスはどのデータが更新されたか判らないため、全列と全行に対して、総和と平均を再計算する必要が生じる。これに対して、更新したデータの行と列が履歴メモリから判明すれば、再計算を行う行と列を更新がなされた場所だけに限定することが可能となり、大幅に受信側プロセスの処理コストを削減できる。履歴メモリに更新前のデータが残されていれば、行および列の総和計算は再計算前の総和から更新前の数値を引いて新しい数値を足しこむことで求めることが可能であるため、行もしくは列全体のデータすらアクセスすることなく、行と列に関する総和を求め、平均値も算出できる。
<2.本実施形態の効果>
このように構成した本実施形態の並列分散計算システム100によれば、複数の計算機2をデータリンク3を介して相互接続し、複数の計算機2が相互にMBCFで通信同期を行う並列分散計算システム100において、送信側プロセスが受信側プロセスに送信する操作要求パケットが、受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスを含み、送信先計算機が、操作要求パケットを受信し、履歴メモリ領域に操作内容として操作対象アドレスと、書き込まれたデータサイズと、送信側プロセスの情報とを記録するので、受信側プロセスが、メモリ操作の内容を認識して必要な処理を低コストで行うことができる。
このように構成した本実施形態の並列分散計算システム100によれば、複数の計算機2をデータリンク3を介して相互接続し、複数の計算機2が相互にMBCFで通信同期を行う並列分散計算システム100において、送信側プロセスが受信側プロセスに送信する操作要求パケットが、受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスを含み、送信先計算機が、操作要求パケットを受信し、履歴メモリ領域に操作内容として操作対象アドレスと、書き込まれたデータサイズと、送信側プロセスの情報とを記録するので、受信側プロセスが、メモリ操作の内容を認識して必要な処理を低コストで行うことができる。
その他、本発明は前記実施形態に限られず、その趣旨を逸脱しない範囲で種々の変形が可能であるのは言うまでもない。
本発明によれば、MBCFにより遠隔メモリ操作が行われた受信側プロセスが、メモリ操作の内容を認識して必要な処理を行うことを低コストで可能にする手段を提供することができる。
Claims (6)
- アドレス変換バッファ(TLB)を有するプロセッサ、物理メモリ、及び、当該物理メモリに直接アクセス可能なネットワークインターフェースコントローラ(NIC)を備えた複数の計算機を、データリンクを介して相互接続した並列分散計算システムであって、
送信元計算機のプロセス(以下、送信側プロセス)が、送信先計算機のプロセスを規定する操作対象プロセス(以下、受信側プロセス)の識別子と、当該受信側プロセスのメモリ領域を規定する操作対象アドレスと、書き込まれるデータサイズと、データ列と、前記受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスとを含む操作要求パケットを送信し、
前記送信先計算機が、前記操作要求パケットを受信し、前記受信側プロセス及び前記操作対象アドレスにより規定されるメモリ領域に前記データ列を格納し、前記履歴メモリ領域に操作内容として操作対象アドレスと、書き込まれたデータサイズと、前記送信側プロセスの情報とを記録する、並列分散計算システム。 - 前記受信側プロセスの存在する計算機は、前記履歴メモリ領域に操作内容履歴が溜まった時点で、非同期ユーザ関数を受信側プロセスに起動する、請求項1記載の並列分散計算システム。
- 前記送信先計算機は、前記受信側プロセスのメモリ領域に上書きする前のデータを前記履歴メモリ領域に退避させる、請求項1又は2記載の並列分散計算システム。
- 前記送信側プロセスが、送信先計算機のプロセスを規定する操作対象プロセス(以下、受信側プロセス)の識別子と、当該受信側プロセスのメモリ上の表領域を規定する操作対象アドレスと、表内の行と列の情報、書き込むデータサイズと、データ列と、前記受信側プロセス内において操作内容履歴を一時的に記録するための履歴メモリ領域を規定する構造体アドレスとを含む操作要求パケットを送信し、
前記送信先計算機が、前記操作要求パケットを受信し、前記受信側プロセス及び前記操作対象アドレスにより規定される表領域を規定する領域からデータを読み出して、前記操作要求パケット内に規定された行と列に相当するメモリアドレスを求め、そのアドレスから前記データ列を格納し、前記履歴メモリ領域に操作内容として操作対象アドレスと、行と列の情報と、書き込まれたデータサイズと、前記送信側プロセスの情報とを記録する、請求項1記載の並列分散計算システム。 - 前記送信先計算機は、前記履歴メモリ領域に操作内容履歴が溜まった時点で、非同期ユーザ関数を受信側プロセスに起動する、請求項4記載の並列分散計算システム。
- 前記送信先計算機は、前記受信側プロセスの表領域に上書きする前のデータを前記履歴メモリ領域に退避させる、請求項4又は5記載の並列分散計算システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21848655.3A EP4170508A1 (en) | 2020-07-30 | 2021-06-11 | Parallel and distributed computing system |
JP2022540050A JPWO2022024562A1 (ja) | 2020-07-30 | 2021-06-11 | |
US18/018,760 US20230315647A1 (en) | 2020-07-30 | 2021-06-11 | Parallel and distributed computing system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-129496 | 2020-07-30 | ||
JP2020129496 | 2020-07-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022024562A1 true WO2022024562A1 (ja) | 2022-02-03 |
Family
ID=80035392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/022269 WO2022024562A1 (ja) | 2020-07-30 | 2021-06-11 | 並列分散計算システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230315647A1 (ja) |
EP (1) | EP4170508A1 (ja) |
JP (1) | JPWO2022024562A1 (ja) |
WO (1) | WO2022024562A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH064363A (ja) * | 1992-06-22 | 1994-01-14 | Nec Corp | セッション状態ログ採取装置 |
-
2021
- 2021-06-11 WO PCT/JP2021/022269 patent/WO2022024562A1/ja unknown
- 2021-06-11 US US18/018,760 patent/US20230315647A1/en active Pending
- 2021-06-11 JP JP2022540050A patent/JPWO2022024562A1/ja active Pending
- 2021-06-11 EP EP21848655.3A patent/EP4170508A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH064363A (ja) * | 1992-06-22 | 1994-01-14 | Nec Corp | セッション状態ログ採取装置 |
Non-Patent Citations (3)
Title |
---|
MATSUMOTO TAKASHI, SHIGERU UZUHARA, KEI HIRAKI: "The general-purpose scalable operating system: SSS-CORE", IPSJ SIG TECHNICAL REPORTS, INFORMATION PROCESSING SOCIETY OF JAPAN, JP, vol. 96, no. 79, 27 August 1996 (1996-08-27), JP , pages 115 - 120, XP055903849, ISSN: 0919-6072 * |
MATSUMOTO, TAKASHI: "Dissertation Thesis, Graduate School of Science", February 2001, UNIV. OF TOKYO, article "A Study on Memory-Based Communications and Synchronization in Distributed-Memory Systems" |
NIWA JUNPEI, TATSUSHI INAGAKI, TAKASHI MATSUMOTO, KEI HIRAKI: "Compiling techniques for ADSM on general-purpose massively-parallel operating system: SSS-CORE", COMPUTER SOFTWARE, JAPAN SOCIETY FOR SOFTWARE SCIENCE AND TECHNOLOGY, vol. 15, no. 3, 15 May 1998 (1998-05-15), pages 242 - 246, XP055903853, ISSN: 0289-6540 * |
Also Published As
Publication number | Publication date |
---|---|
US20230315647A1 (en) | 2023-10-05 |
JPWO2022024562A1 (ja) | 2022-02-03 |
EP4170508A1 (en) | 2023-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7870306B2 (en) | Shared memory message switch and cache | |
US7320041B2 (en) | Controlling flow of data between data processing systems via a memory | |
US6735647B2 (en) | Data reordering mechanism for high performance networks | |
US8542693B2 (en) | Managing free packet descriptors in packet-based communications | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
KR101300447B1 (ko) | 메시지 통신 기술 | |
US7461180B2 (en) | Method and apparatus for synchronizing use of buffer descriptor entries for shared data packets in memory | |
US8423689B2 (en) | Communication control device, information processing device and computer program product | |
JP4317365B2 (ja) | 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置 | |
US8223788B1 (en) | Method and system for queuing descriptors | |
US20080263171A1 (en) | Peripheral device that DMAS the same data to different locations in a computer | |
US9288163B2 (en) | Low-latency packet receive method for networking devices | |
US7822051B1 (en) | Method and system for transmitting packets | |
WO2022024562A1 (ja) | 並列分散計算システム | |
US9703739B2 (en) | Return available PPI credits command | |
US20230229500A1 (en) | Parallel and distributed computing system | |
JP2002366427A (ja) | プロセッサ間通信システム及びそれに用いるプロセッサ間通信方法 | |
US20140280716A1 (en) | Direct push operations and gather operations | |
US20020049878A1 (en) | Data communications interfaces | |
JP2022012656A (ja) | 並列分散計算システム | |
WO2024053433A1 (ja) | 並列分散計算システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21848655 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2022540050 Country of ref document: JP Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 2021848655 Country of ref document: EP Effective date: 20230123 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |