JPH10143486A - Data transmission/reception method in parallel computers - Google Patents

Data transmission/reception method in parallel computers

Info

Publication number
JPH10143486A
JPH10143486A JP8304426A JP30442696A JPH10143486A JP H10143486 A JPH10143486 A JP H10143486A JP 8304426 A JP8304426 A JP 8304426A JP 30442696 A JP30442696 A JP 30442696A JP H10143486 A JPH10143486 A JP H10143486A
Authority
JP
Japan
Prior art keywords
data
transmission
buffer
area
computer
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
JP8304426A
Other languages
Japanese (ja)
Other versions
JP3644158B2 (en
Inventor
Akihiko Sakaguchi
明彦 坂口
Nobutoshi Sagawa
暢俊 佐川
Tsuneyuki Imaki
常之 今木
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP30442696A priority Critical patent/JP3644158B2/en
Publication of JPH10143486A publication Critical patent/JPH10143486A/en
Application granted granted Critical
Publication of JP3644158B2 publication Critical patent/JP3644158B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To transfer data at a high speed by selecting whether to perform transfer by using an area to which an address is allocated for respective processor units(PUs) beforehand or to perform the transfer by a pipeline processing by using the area dynamically allocated at the time of the transfer depending on the length of the data. SOLUTION: In the inside of remote memory write areas 114 and 115, static buffers 116 and 117 to which the address is allocated beforehand for the respective communicating party PUs and dynamic buffers 118 and 119 for which the address is dynamically changed are present. In the case that the data length of transmission data is shorter than a predetermined value, the transmission data are written in the static buffer area of a transmission destination. Also, in the case that the data length of the transmission data is longer than the predetermined value, the address of the dynamic buffer area of the transmission destination is received by using the static buffer area, the transmission data are written in the dynamic buffer area of the received address at the transmission destination and the data are transferred by the pipeline processing.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は複数の要素計算機
(プロセッシングユニット、以下PU)を通信網によって
結合した並列計算機におけるPU間のデータ送受信方法に
係わり、特にメッセージパッシングの高速性とデータの
安全性の確保するデータ送受信方法に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method for transmitting and receiving data between PUs in a parallel computer in which a plurality of element computers (processing units, hereinafter referred to as PUs) are connected by a communication network, and more particularly to a high-speed message passing and data security. Related to a data transmission / reception method to be secured.

【0002】[0002]

【従来の技術】並列計算機は、複数のPUを通信網によっ
て結合し、それらを同時に稼働させることによって処理
速度を向上させる。本発明では特に、各PUがそれに付随
するメモリ空間のみをアクセスすることができる分散メ
モリ型の並列計算機を対象とする。分散メモリ型並列計
算機では、他のPUのメモリ上にあるデータを直接アクセ
スすることはできない。データが必要となる度に送受信
を行ってそのデータを自PUに移動する必要がある。
2. Description of the Related Art A parallel computer improves processing speed by connecting a plurality of PUs by a communication network and operating them simultaneously. In particular, the present invention is directed to a distributed memory type parallel computer in which each PU can access only a memory space associated therewith. In a distributed memory parallel computer, data on the memory of another PU cannot be directly accessed. Each time data is required, it is necessary to perform transmission and reception and move the data to its own PU.

【0003】分散メモリ型並列計算機では、PU間のデー
タのやりとりをすべてプログラム中に記述する必要があ
る。ここでPU間で受け渡されるデータをメッセージと呼
ぶ。このメッセージをやりとりすることをメッセージパ
ッシングと呼ぶ。並列計算機用プログラムでは、他のPU
で必要となるデータが自PUのメモリ上にある場合には自
PUはあらかじめこれらデータを他のPUへ送信し、他のPU
のメモリ上にあるデータを自PUが必要とする場合には自
PUはあらかじめ他のPUからこれらデータを受信しておく
ような指示を各PUのプログラム中に明示的に記述する必
要がある。
In a distributed memory type parallel computer, all data exchange between PUs must be described in a program. Here, data passed between PUs is called a message. Exchanging this message is called message passing. In the parallel computer program, other PUs
If the data required by
The PU sends these data to other PUs in advance, and
If your PU needs data on the memory of the
It is necessary for the PU to explicitly write an instruction to receive these data from another PU in advance in the program of each PU.

【0004】多くの並列計算機システムでは、このよう
なPU間のメッセージの送受信をサポートする目的で、メ
ッセージパッシングライブラリと呼ばれる関数(あるい
はサブルーチン)群があらかじめ用意されており、通信
はCやFORTRANなどのプログラムからの関数コールとして
記述できるようになっている。メッセージパッシングラ
イブラリの中には、異なる並列計算機ハードウェア上に
インプリメントされ、事実上の標準としての通信環境を
提供するものも現れている。米国のOak RidgeNational
Laboratoryで開発されたPVMや、近年標準化が進められ
ているMPIはその例である。これらの通信ライブラリを
コールすることにより書かれた並列プログラムは、異な
る並列計算機上でも再コンパイルのみで動作させうる可
能性(可搬性)が高い。
In many parallel computer systems, a group of functions (or subroutines) called a message passing library is prepared in advance in order to support transmission and reception of messages between such PUs, and communication is performed by C or FORTRAN. It can be described as a function call from a program. Some message passing libraries have been implemented on different parallel computer hardware to provide a de facto standard communication environment. Oak RidgeNational in the United States
Examples are the PVM developed at the Laboratory and the MPI, which is being standardized in recent years. A parallel program written by calling these communication libraries has a high possibility (portability) that it can be operated only by recompilation on a different parallel computer.

【0005】通信ライブラリでPU間のメッセージの受け
渡しを行うには、送信側PUでメッセージの送信関数をコ
ールし、受信側PUでそれに対応するメッセージの受信関
数をコールし、これらの間でメッセージを送受信する方
式が現在一般に用いられている。送信関数より受信関数
が先にコールされた場合には受信関数はデータの到着ま
でブロック(停止)し、送信関数が先にコールされた場
合には受信関数の開始までブロックするか、メッセージ
がシステム内にバッファリングされる。これはsend/rec
eive方式と呼ばれる。
In order to transfer a message between PUs in the communication library, a sending PU calls a message sending function, a receiving PU calls a corresponding message receiving function, and a message is exchanged between these. A transmission / reception method is currently generally used. If the receive function is called before the send function, the receive function blocks (stops) until data arrives; if the send function is called before, it blocks until the start of the receive function or the message Buffered within. This is send / rec
It is called eive method.

【0006】PU間のデータ移動を高速に実現する方法と
して、リモートメモリ書き込み機構を持つ分散メモリ型
の並列計算機がある。リモートメモリ書き込みでは、各
PUは相手PUの介入なしに直接相手PU内の特定メモリ領域
へのデータ転送が可能である。リモートメモリ書き込み
を行うことのできる特定メモリ領域は、リモートメモリ
書き込み領域と呼ばれる。リモートメモリ書き込み領域
は、実アドレスが連続であり、スワッピングされないた
めに各PUが随時データ転送することができる。
As a method for realizing data transfer between PUs at high speed, there is a distributed memory type parallel computer having a remote memory writing mechanism. In remote memory writing, each
The PU can directly transfer data to a specific memory area in the partner PU without intervention of the partner PU. The specific memory area in which remote memory writing can be performed is called a remote memory writing area. Since the real address is continuous in the remote memory write area and is not swapped, each PU can transfer data at any time.

【0007】図2は、リモートメモリ書き込み機構を持
つ並列計算機上でメッセージパッシングを実現するため
の従来手法を示す。各PU間の実際のデータ転送は、リモ
ートメモリ書き込み領域間で行われる。まず送信関数が
コールされると、送信側のユーザプログラム中のバッフ
ァ(201)からリモートメモリ書き込み領域内のバッフ
ァ(202)へデータがコピーされる。次にそこから受信
側のリモートメモリ書き込み領域内のバッファ(203)
にリモートメモリ書き込みを用いてデータが転送され
る。最後に受信関数がコールされて、リモートメモリ書
き込み領域(203)からユーザプログラム中のバッファ
(204)にメッセージがコピーされて、メッセージの受
け渡しが完了する。
FIG. 2 shows a conventional method for implementing message passing on a parallel computer having a remote memory writing mechanism. The actual data transfer between each PU is performed between the remote memory write areas. First, when the transmission function is called, data is copied from the buffer (201) in the user program on the transmission side to the buffer (202) in the remote memory write area. Next, from there, a buffer (203) in the remote memory write area of the receiving side
Is transferred using remote memory writing. Finally, the reception function is called and the buffer in the user program is written from the remote memory write area (203).
The message is copied to (204), and the delivery of the message is completed.

【0008】[0008]

【発明が解決しようとする課題】上述のように、リモー
トメモリ書き込みでは相手PUの介入なしにデータの転送
を行う際は、受信側のリモートメモリ書き込み領域の使
用を確認しないと、受信側で必要なメモリ領域を書き込
みデータで上書きしてしまい、受信側のデータを壊して
しまう恐れがあった。そこで受信側のリモートメモリ書
き込み領域を確認しないと、続けてデータ転送を行うこ
とができなかった。また、送信側でのユーザプログラム
のバッファからリモートメモリ書き込み領域へのデータ
転送、送信側のリモートメモリ領域から受信側のリモー
トメモリ領域へのデータ転送、受信側でのリモートメモ
リ書き込み領域からユーザプログラム内のバッファへの
データ転送と、計3回のデータ転送が必要であった。ま
た、リモートメモリ書き込み領域に別々に送られてきた
データ間の順序を保証する事も出来なかった。
As described above, when data is transferred without the intervention of the partner PU in remote memory writing, the receiving side needs to confirm the use of the remote memory writing area on the receiving side. There is a risk of overwriting a large memory area with write data and destroying data on the receiving side. Therefore, the data transfer cannot be performed continuously without checking the remote memory writing area on the receiving side. Also, data transfer from the user program buffer to the remote memory writing area on the sending side, data transfer from the remote memory area on the sending side to the remote memory area on the receiving side, and data transfer from the remote memory writing area on the receiving side to the And a total of three data transfers were required. Also, the order between data separately sent to the remote memory write area cannot be guaranteed.

【0009】本発明の目的は、リモートメモリ転送を限
られた量の転送用メモリで高速に行うことと、相手PUが
独自に送ってきたデータの順序を保証することにある。
It is an object of the present invention to perform remote memory transfer at high speed with a limited amount of transfer memory and to guarantee the order of data sent independently by a partner PU.

【0010】[0010]

【課題を解決するための手段】本発明は、複数台の計算
機とこれらを相互接続する通信路からなる並列計算機に
おいて、各計算機内に、通信相手となる計算機毎に固定
された領域である静的受信バッファ領域と、通信の発生
時に動的に割り当てられる動的受信バッファ領域を確保
するステップと、送信データのデータ長が予め定められ
た値より短い場合には、送信先の該静的バッファ領域に
送信データを書き込むステップと、送信データのデータ
長が予め定められた値より長い場合には、送信先の該動
的バッファ領域のアドレスを該静的バッファ領域を用い
て受信するステップと、送信先での該受信したアドレス
の該動的バッファ領域に当該送信データを書き込むステ
ップを設けることによって、達成される。
According to the present invention, there is provided a parallel computer comprising a plurality of computers and a communication path interconnecting them, wherein each computer has a static area which is fixed for each computer as a communication partner. Securing a dynamic reception buffer area and a dynamic reception buffer area dynamically allocated when a communication occurs; and, when the data length of the transmission data is shorter than a predetermined value, the static buffer of the transmission destination. Writing the transmission data in the area, and if the data length of the transmission data is longer than a predetermined value, receiving the address of the dynamic buffer area of the transmission destination using the static buffer area, This is achieved by providing a step of writing the transmission data to the dynamic buffer area of the received address at the destination.

【0011】また予め定められた値より長いデータを転
送する場合には、パイプライン処理でデータを転送する
ことで、限られたメモリ量において高速にデータ転送を
行うことができる。
When transferring data longer than a predetermined value, data can be transferred at a high speed with a limited amount of memory by transferring the data by pipeline processing.

【0012】また、送られたデータの順序性を、使用し
た転送用メモリ(バッファ)を順につなぐことで保証す
ることができる。
Further, the order of the transmitted data can be guaranteed by sequentially connecting the used transfer memories (buffers).

【0013】[0013]

【発明の実施の形態】以下、図を参照して本発明の詳細
を説明する。
DESCRIPTION OF THE PREFERRED EMBODIMENTS The details of the present invention will be described below with reference to the drawings.

【0014】まず、本発明の実装方法の具体例を図を参
照して説明する。図1に本発明の全体構成図を示す。1
01,102はPU(プロセッサユニット)を示し、10
3,104はそれらのCPU、105,106はメモリであ
る。107はそれらを結ぶ通信路(PUを相互接続でき
るネットワークであればよい)である。PUの数は任意で
あるが、説明のために2つのPUからなる並列計算機を示
している。108,109はOS(オペレーティングシステ
ム)である。ユーザプログラムを実行する際には、まず
メモリ上にユーザプログラムが図1に示されない補助記
憶装置等からローディングされる(110,111)。な
お、ユーザプログラムはあらかじめ本発明のメッセージ
パッシングライブラリ(112,113)とリンクされて
いるものとする。メッセージパッシングライブラリ中に
は他PUからリモートメモリ書き込み可能なリモートメモ
リ書き込み領域(114,115)が設けられている。さ
らに、リモートメモリ書き込み領域内部は通信相手PUご
とにあらかじめアドレスが割り当てられている静的バッ
ファ(116,117)とアドレスが動的に変化する動的
バッファ(118,119)が存在する。
First, a specific example of the mounting method of the present invention will be described with reference to the drawings. FIG. 1 shows an overall configuration diagram of the present invention. 1
Reference numerals 01 and 102 denote PUs (processor units).
Reference numerals 3 and 104 denote CPUs and 105 and 106 are memories. Reference numeral 107 denotes a communication path (a network that can interconnect the PUs) connecting them. Although the number of PUs is arbitrary, a parallel computer including two PUs is shown for the sake of explanation. Reference numerals 108 and 109 are OSs (operating systems). When executing the user program, the user program is first loaded into the memory from an auxiliary storage device or the like (not shown in FIG. 1) (110, 111). It is assumed that the user program is linked in advance to the message passing library (112, 113) of the present invention. The message passing library is provided with remote memory write areas (114, 115) to which remote memory can be written from other PUs. Further, in the remote memory writing area, there are a static buffer (116, 117) to which an address is assigned in advance for each communication partner PU and a dynamic buffer (118, 119) whose address dynamically changes.

【0015】以上の構成要素のうち、メッセージパッシ
ングライブラリが本発明の特徴をなす構成要素である。
以下、詳細に説明する。
[0015] Of the above components, the message passing library is a component that characterizes the present invention.
The details will be described below.

【0016】(A)バッファの構成 図3、図4を用いて、本発明におけるメッセージパッシ
ング用のバッファ構成について説明する。上述したよう
に本発明では、静的バッファ(301)と動的バッファ
(401)の二種類のバッファを用いる。なお、静的バッ
ファ301は図1の静的バッファ116、117に相当
し、動的バッファ401は図1の動的バッファ118、
119に相当する。
(A) Configuration of Buffer A buffer configuration for message passing in the present invention will be described with reference to FIGS. As described above, in the present invention, the static buffer (301) and the dynamic buffer (301)
Two types of buffers (401) are used. The static buffer 301 corresponds to the static buffers 116 and 117 in FIG. 1, and the dynamic buffer 401 is the dynamic buffer 118 and the dynamic buffer 118 in FIG.
119.

【0017】まず、静的バッファは通信相手PU(#0、
#1、#2、・・・#n)ごとに複数のブロック(図3
ではPU#1に対して6個のブロックが示される)が用意
されている。静的バッファの各ブロックは、大きく分け
てヘッダ(302)とメッセージ本体(303)の二つに分
かれており、さらにヘッダ内にはtag(304)、length
(305)、first address(306)、last address(30
7)の情報が含まれている。tagは対応する送受信の組を
選択するための識別子、lengthは通信するメッセージの
長さ、first addressは動的バッファを割り当てた時の
先頭アドレス、last addressは動的バッファを割り当て
た時の最終アドレスを格納するための領域である。な
お、通信路(ネットワーク)内での送信先PUおよび送
信元PUの識別情報は別途管理され、メッセージはネッ
トワーク内を転送されるものとする。静的バッファは各
PUごとに送信用(301)と受信用(309)の同一形状の
バッファが用意されており、バッファの使用状況などの
情報が通信相手PUと共有化されている。静的バッファは
通信相手PUごとにあらかじめ設定されており初期化の時
点でお互いのPUがアドレスを知ることが出来る。送信側
は送信用バッファに空きがある限りは常に受信側の受信
用バッファにデータの転送を行う事が出来る。
First, the static buffer stores the communication partner PU (# 0,
A plurality of blocks (FIG. 3)
In FIG. 6, six blocks are shown for PU # 1). Each block of the static buffer is roughly divided into a header (302) and a message body (303).
(305), first address (306), last address (30
7) is included. tag is an identifier for selecting the corresponding send / receive pair, length is the length of the message to be communicated, first address is the first address when a dynamic buffer is allocated, and last address is the last address when a dynamic buffer is allocated. Is an area for storing. The identification information of the destination PU and the source PU in the communication path (network) is separately managed, and the message is transferred in the network. Each static buffer is
Buffers of the same shape for transmission (301) and reception (309) are prepared for each PU, and information such as the use status of the buffer is shared with the communication partner PU. The static buffer is set in advance for each communication partner PU, so that each PU can know the address at the time of initialization. The transmitting side can always transfer data to the receiving buffer on the receiving side as long as the transmitting buffer has a free space.

【0018】動的バッファは、通信相手PUごとに区別さ
れていない複数のブロック(401)からなる。各ブロッ
クは、ヘッダ(402)とメッセージの本体(403)とに
分けられ、ヘッダは受信側がデータが到着したかどうか
の確認を行うために使用される。なお、ヘッダ部分の領
域の構成は静的バッファの構成と同じであり、送信先P
Uおよび送信元PUのネットワーク内での識別情報(ア
ドレス)は別途管理されるものとする。さらにメッセー
ジ長に合わせたバッファ量を選択するために、各ブロッ
クは幾つかで束になって管理されている(図4の複数ブ
ロック401ではでは、この束を太線の枠で示してい
る)。その束ごとに管理ヘッダ(404)に登録されてお
り、受信側PUはメッセージ長に合わせて最適なサイズの
バッファ束を取得する(図4の例では1ブロックの束と
4ブロックの束がそれぞれ複数面用意されており、メッ
セージが1ブロックのサイズより小さい時は1ブロック
の束が、それより大きい時には4ブロックの束が取得す
る)。受信側PUは取得したバッファ束の先頭アドレスと
最終アドレスを静的バッファのヘッダ内のfirst addres
s、last addressに格納し送信側PUへと送信することに
なる。また、送信側は動的バッファを2面用意しており
(405)、これを交互に使用することでパイプライン処
理が可能となる。パイプライン処理の詳細については後
述する。
The dynamic buffer is composed of a plurality of blocks (401) that are not distinguished for each communication partner PU. Each block is divided into a header (402) and a message body (403), and the header is used by the receiving side to confirm whether data has arrived. The configuration of the area of the header portion is the same as the configuration of the static buffer, and the destination P
It is assumed that identification information (address) of the U and the transmission source PU in the network is separately managed. In order to further select a buffer amount according to the message length, each block is managed as a bundle of several blocks (this bundle is indicated by a thick line frame in the plurality of blocks 401 in FIG. 4). Each bundle is registered in the management header (404), and the receiving PU acquires a buffer bundle having an optimal size according to the message length (in the example of FIG. 4, the bundle of one block and the bundle of four blocks are respectively When a message is smaller than the size of one block, a bundle of one block is obtained, and when the message is larger, a bundle of four blocks is obtained.) The receiving PU writes the first address and the last address of the acquired buffer bundle in the first addres
It is stored in s, last address and transmitted to the transmitting PU. Also, the sending side has prepared two dynamic buffers
(405) By using these alternately, pipeline processing becomes possible. Details of the pipeline processing will be described later.

【0019】(B)通信プロトコル 一般にメッセージ長が短い時には、より高速にメッセー
ジの転送が行われる(レイテンシが低い)ことが求めら
れ、一方メッセージ長が長い時には、単位時間当りによ
り大量のメッセージの転送が行われる(スループットが
大きい)ことが求められる。この2つの必ずしも両立し
ない要求を満たすため、本発明ではメッセージ長が短い
メッセージを送信する場合に使用するショートプロトコ
ルとメッセージ長が長いメッセージを送信する場合に使
用するロングプロトコルの2つの通信プロトコルを用意
し、これを切り替えて用いることで遅延の少ないデータ
転送を実現する。
(B) Communication Protocol In general, when the message length is short, it is required that the message be transferred at a higher speed (low latency). On the other hand, when the message length is long, a larger amount of messages are transferred per unit time. (High throughput) is required. In order to satisfy these two incompatible requirements, the present invention provides two communication protocols, a short protocol used for transmitting a message with a short message length and a long protocol used for transmitting a message with a long message length. However, by switching between them, data transfer with less delay is realized.

【0020】図5は、ショートプロトコルのタイミング
チャートを表している。ショートプロトコルは、メッセ
ージの転送に静的バッファを用いる。ユーザプログラム
により送信関数がコールされると(501)、送信側PUは
静的バッファのヘッダとメッセージ本体を受信側に送信
する(503)。一方、受信関数がコールされると(50
2)、受信側PUは静的バッファでメッセージを受け取
り、送信側に受信完了通知を送信し(504)する。1往
復のデータ通信でメッセージの通信を完了することがで
きる。
FIG. 5 shows a timing chart of the short protocol. The short protocol uses a static buffer for message transfer. When the transmission function is called by the user program (501), the transmission side PU transmits the header of the static buffer and the message body to the reception side (503). On the other hand, when the receiving function is called (50
2), the receiving PU receives the message in the static buffer, and transmits a reception completion notification to the transmitting side (504). Message communication can be completed by one round trip data communication.

【0021】しかし、リモートメモリ書き込み領域には
限りがあるため、静的バッファの長さ、数量には制限が
生じる。そのため全てのメッセージを静的バッファで送
信すると大量のメッセージを通信する時には、静的バッ
ファが空くのを待つ必要があり、逆に通信速度が落ちて
しまう。そのためメッセージ長が長い時には、PUごとに
区別されていない、それがゆえに大量に用意の出来る動
的バッファを用いてメッセージ転送を行う。これが、ロ
ングプロトコルである。静的バッファのメッセージ本体
部分の長さを境界として、静的バッファの容量より少な
いメッセージ長のメッセージを送信する場合にショート
プロトコルを用い、静的バッファの容量より大きいメッ
セージ長のメッセージを送信する場合にロングプロトコ
ルを用いるように、制御される。
However, since the remote memory write area is limited, the length and quantity of the static buffer are limited. Therefore, if all messages are transmitted in a static buffer and a large number of messages are to be communicated, it is necessary to wait for the static buffer to become empty, and conversely the communication speed decreases. Therefore, when the message length is long, message transfer is performed using a dynamic buffer that is not distinguished for each PU and therefore can be prepared in large quantities. This is a long protocol. Using a short protocol to send a message with a message length smaller than the static buffer capacity, and sending a message with a message length larger than the static buffer capacity, using the length of the message body part of the static buffer as a boundary Is controlled to use the long protocol.

【0022】図6は、ロングプロトコルのタイミングチ
ャートを表している。ユーザプログラムにより送信関数
がコールされると(601)、送信側PUはまず、送信する
データ長の長さ(送信するデータのデータ量)を検出
し、このデータ量が静的バッファの容量より大きいと、
ロングプロトコルを用いると判定する。静的バッファの
容量より送信するデータ量が小さい場合は、前述のショ
ートプロトコルを用いる。ロングプロトコルの場合、静
的バッファのヘッダを受信側に送信する(603)。一
方、受信関数がコールされると(602)受信側PUは静的
バッファでメッセージの情報を受け取り、それに合わせ
た動的バッファのアドレス情報を静的バッファを用いて
送り返し(604)、以後送信側PUが受け取ったバッファ
情報に基づきメッセージを送信し(605)、最後に受信
側PUが送信側に受信完了通知を送信する(606)。2往
復のデータ転送が必要でありショートプロトコルに比較
してレイテンシは高くなるが、動的バッファは静的バッ
ファに比べ大量のデータ転送を可能とするためスループ
ットを大きくすることが可能である。
FIG. 6 shows a timing chart of the long protocol. When the transmission function is called by the user program (601), the transmitting PU first detects the length of the data length to be transmitted (the data amount of the data to be transmitted), and this data amount is larger than the capacity of the static buffer. When,
It is determined that the long protocol is used. If the amount of data to be transmitted is smaller than the capacity of the static buffer, the short protocol described above is used. In the case of the long protocol, the header of the static buffer is transmitted to the receiving side (603). On the other hand, when the receiving function is called (602), the receiving PU receives the information of the message in the static buffer, and sends back the address information of the dynamic buffer according to the information using the static buffer (604). The PU transmits a message based on the buffer information received (605), and finally, the receiving PU transmits a reception completion notification to the transmitting side (606). Although two round trips of data transfer are required and the latency is higher than that of the short protocol, a dynamic buffer can transfer a larger amount of data than a static buffer, so that the throughput can be increased.

【0023】以下、各プロトコルの動作を詳細に説明す
る。まず、ショートプロトコルの動作を図7を用いて説
明する。送信側PUは、静的バッファのヘッダにメッセー
ジ長と識別子を格納する(701)。さらにメッセージを
ユーザ領域からメッセージ本体部にコピーする(70
2)。次いで、送信側から受信側へ静的バッファのリモ
ートメモリ書き込みを行う(703)。一方、受信側PU
は、メッセージを静的バッファで受け取り(705)、そ
こからユーザ領域へとコピーし、受信が完了する(70
6)。最後に受信側は受信完了通知を静的バッファを使
い送り出し(707)、それを受けて送信側も処理を終了
する(704)。
Hereinafter, the operation of each protocol will be described in detail. First, the operation of the short protocol will be described with reference to FIG. The transmitting PU stores the message length and the identifier in the header of the static buffer (701). Furthermore, the message is copied from the user area to the message body (70
2). Next, the remote side writes the static buffer to the remote side from the transmitting side (703). On the other hand, the receiving PU
Receives the message in a static buffer (705), copies it from there to the user area, and completes the reception (70
6). Finally, the receiving side sends out a reception completion notification using a static buffer (707), and upon receiving the notification, the transmitting side also ends the processing (704).

【0024】次に、ロングプロトコルの動作を図8を用
いて説明する。まず送信側PUはショートプロトコルと同
様、静的バッファのヘッダにメッセージ長と識別子を格
納する(801)。ロングプロトコルの場合静的バッファ
ではメッセージを送りきれないためヘッダのみを受信側
へリモートメモリ書き込みする(802)。受信側PUは静
的バッファでメッセージの情報を受け取る(807)と、
lengthに合わせて適当な長さの動的バッファを確保しそ
の先頭アドレスと最終アドレスを取得する(808)。そ
れらのアドレスを静的バッファのfirst address、last
addressにセットして、送信側に送り返す(809)。送
信側はバッファ情報を受け取り(803)、全てのメッセ
ージを送信するまでループを繰り返し(804)、動的バ
ッファのブロックを単位として、ユーザ領域からバッフ
ァにコピーし送信する(805)。さらに受信側も全ての
メッセージを受信するまでループを繰り返し(810)、
受信したブロックからユーザ領域にメッセージをコピー
する(811)。最後に受信側は受信完了通知を静的バッ
ファを使い送り出し(812)、それを受けて送信側も処
理を終了する(806)。
Next, the operation of the long protocol will be described with reference to FIG. First, the transmitting PU stores the message length and the identifier in the header of the static buffer as in the short protocol (801). In the case of the long protocol, since the message cannot be sent with the static buffer, only the header is written in the remote memory to the receiving side (802). When the receiving PU receives the information of the message in the static buffer (807),
A dynamic buffer of an appropriate length is secured according to the length, and its start address and end address are obtained (808). Those addresses into the static buffer's first address, last
It is set in the address and sent back to the sending side (809). The transmitting side receives the buffer information (803), repeats the loop until all the messages are transmitted (804), copies the dynamic buffer block as a unit from the user area to the buffer, and transmits it (805). Further, the receiving side repeats the loop until all the messages are received (810),
The message is copied from the received block to the user area (811). Finally, the receiving side sends out the reception completion notification using the static buffer (812), and upon receiving the notification, the transmitting side also ends the processing (806).

【0025】(C)ロングプロトコルにおけるパイプラ
イン転送 リモートメモリ書き込みを用いたメッセージパッシング
では、ユーザ領域からリモートメモリ書き込み領域への
コピー、送信側から受信側へのリモートメッセージ転
送、リモートメモリ書き込み領域からユーザ領域へのコ
ピー、とメッセージの転送が3回必要となる。したがっ
て少なくともリモートメモリ書き込みの約3倍の時間が
必要となる。そこで本発明では送信側の動的バッファを
2面用意し、パイプライン処理を行う事で性能向上を図
る。
(C) Pipeline transfer in long protocol In message passing using remote memory writing, copying from the user area to the remote memory writing area, remote message transfer from the sending side to the receiving side, Copying to the area and transferring the message are required three times. Therefore, at least about three times as long as remote memory writing is required. Therefore, in the present invention, performance is improved by preparing two dynamic buffers on the transmission side and performing pipeline processing.

【0026】以下に図9を用いてパイプライン処理時の
動作を説明する。図9において送信側PUのリモートメモ
リ書き込み領域内のバッファ(204)は、図4における
2面ある送信側の動的バッファ(405)を、受信側PUの
リモートメモリ書き込み領域内のバッファ(203)は、
受信側の動的バッファ(401)を簡易化して表してい
る。受信側の動的バッファは多面用意されているが、こ
こではABCDのデータを転送するのに必要な4面のみ表記
している。ステップ1で送信側においてユーザ領域から
リモートメモリ書き込み領域へメッセージAのコピーを
行う(901)。次にステップ2で、メッセージAを送信
側から受信側へリモートメッセージ転送で送信する(9
02)と同時に、メッセージBをリモートメモリ書き込み
領域へコピーする(903)。ステップ3では、受信側で
メッセージAをリモートメモリ書き込み領域からユーザ
領域へコピーし(904)、メッセージBを送信側から受
信側へリモートメモリ転送し(905)、送信側でメッセ
ージCをユーザ領域からリモートメモリ書き込み領域へ
コピーする(906)。ステップ4では、受信側でのメッ
セージBのコピー(907)、メッセージCの送信側から受
信側へのリモートメモリ書き込み転送(908)、送信側
でのメッセージDのコピー(909)を同時に行う。
The operation during pipeline processing will be described below with reference to FIG. In FIG. 9, the buffer (204) in the remote memory writing area of the transmitting PU is different from the two dynamic buffers (405) of the transmitting side in FIG. 4 by the buffer (203) in the remote memory writing area of the receiving PU. Is
The dynamic buffer (401) on the receiving side is represented in a simplified manner. Although the dynamic buffer on the receiving side is prepared in multiple planes, only four planes necessary for transferring ABCD data are shown here. In step 1, the message A is copied from the user area to the remote memory write area on the transmitting side (901). Next, in step 2, message A is transmitted from the transmitting side to the receiving side by remote message transfer (9).
02) At the same time, the message B is copied to the remote memory write area (903). In step 3, the receiving side copies the message A from the remote memory writing area to the user area (904), transfers the message B from the transmitting side to the receiving side by remote memory (905), and transmits the message C from the user area to the transmitting side. Copy to the remote memory write area (906). In step 4, the message B is copied on the receiving side (907), the transfer of the message C from the sending side to the remote side is written to the remote memory (908), and the message D is copied on the sending side (909).

【0027】図10は、パイプライン処理の送信側PUと
受信側PUごとの動作を示す。送信側では、まずデータA
をユーザ領域からリモートメモリ書き込み領域へメモリ
コピーし(1001)、次にデータAを受信側に送信する
と同時にデータBのメモリコピーを行い(1002)、以
下順次同様の動作が続き(1003,1004)、最後に
データDの送信が行われる(1005)。一方、受信側で
は、まずデータAを送信側から受信し(1006)、次に
データBを受信すると同時にデータAのメモリコピーを行
い(1007)、以下順次同様の動作が続き(1008,1
009)、最後にデータDのメモリコピーが行われる(1
010)。
FIG. 10 shows the operation of each of the transmitting PU and the receiving PU in the pipeline processing. On the transmitting side, data A
Is copied from the user area to the remote memory writing area (1001), and then the data A is transmitted to the receiving side and the data B is copied at the same time as the memory B (1002). Finally, data D is transmitted (1005). On the other hand, on the receiving side, first, data A is received from the transmitting side (1006), and then, upon receiving data B, memory A of data A is copied at the same time (1007).
009) Finally, memory copy of data D is performed (1
010).

【0028】(D)メッセージパッシングライブラリの
インタフェース メッセージパッシングライブラリは、ユーザプログラム
の中から関数コールの形でメッセージパッシングを行う
ための関数群である。以下に、本発明におけるメッセー
ジパッシングライブラリの関数のインタフェースとその
動作を説明する。なお、関数名称、引き数名称などは任
意であり、必ずしもここで説明する仕様と同じである必
要はない。
(D) Interface of Message Passing Library The message passing library is a group of functions for performing message passing in the form of a function call from a user program. Hereinafter, the interface of the function of the message passing library and the operation thereof according to the present invention will be described. The function name, the argument name, and the like are arbitrary, and do not necessarily have to be the same as the specifications described here.

【0029】(1)Init() 本関数中で、メッセージパッシングライブラリは必要な
初期化操作を行う。メッセージパッシングライブラリの
使用時には、全てのPUが必ず最初に本関数をコールしな
ければならない。本関数がユーザプログラムからコール
されると、リモートメモリ書き込み領域に静的バッファ
(図1:116,117)と動的バッファ(図1:118,
119)を作成し、各バッファの初期化を行う。静的バ
ッファは各PUごとにアドレスが固定であり、全てのPUは
静的バッファの送信時の相手先アドレスをこの初期化時
に通信しあうことが出来る。以下に挙げる関数は、初期
化関数をコールした後にのみ使用する事が出来る。
(1) Init () In this function, the message passing library performs necessary initialization operations. When using the message passing library, all PUs must call this function first. When this function is called from the user program, a static buffer is
(FIG. 1: 116, 117) and the dynamic buffer (FIG. 1: 118,
119) is created, and each buffer is initialized. The address of the static buffer is fixed for each PU, and all PUs can communicate the destination address at the time of transmission of the static buffer at the time of this initialization. The following functions can be used only after calling the initialization function.

【0030】(2)Send(buf, dest, tag, length) ここで、bufは送信するメッセージの格納されたユーザ
メモリの先頭アドレスで、destは送信先PU番号(ネット
ワーク内での送り先PUを識別する情報)、tagはメッ
セージの識別子、lengthはメッセージの長さを表す。ユ
ーザが本関数をコールすると、ライブラリはlengthによ
ってショートプロトコル(図7:701〜704)かロン
グプロトコル(図8:801〜806)を用いてメッセー
ジの送信を行う。
(2) Send (buf, dest, tag, length) Here, buf is the head address of the user memory storing the message to be transmitted, and dest is the destination PU number (identifying the destination PU in the network. Information), tag represents the identifier of the message, and length represents the length of the message. When the user calls this function, the library sends a message using the short protocol (701 to 704 in FIG. 7) or the long protocol (801 to 806 in FIG. 8) according to the length.

【0031】(3)Recv(buf, src, tag) 本関数のbufは受信したメッセージを格納するユーザメ
モリの先頭アドレスで、srcは送信元PU番号(ネットワ
ーク内でPUを識別する情報)、tagはメッセージ識別
子を表す。ユーザが本関数をコールすると、送信元PU
番号が一致した静的バッファのヘッダ部分でメッセージ
の長さを受け取り、それに合わせてショートプロトコル
(図7:705〜707)またはロングプロトコル(図
8:807〜812)でメッセージの受信を行う。
(3) Recv (buf, src, tag) buf of this function is the start address of the user memory for storing the received message, src is the source PU number (information for identifying the PU in the network), tag Represents a message identifier. When the user calls this function, the source PU
The length of the message is received in the header part of the static buffer with the matching number, and the short protocol is adjusted accordingly.
(FIG. 7: 705 to 707) or the message is received by the long protocol (FIG. 8: 807 to 812).

【0032】(E)ノンブロッキング動作における順序
性の保証 メッセージパッシングライブラリにおける送受信には、
ブロッキング関数とノンブロッキング関数がある。ブロ
ッキング関数とは、送受信関数がコールされてから送受
信が完了するまでプログラムの動作をブロック(停止)す
る関数であり、ノンブロッキング関数とは、関数のコー
ル後送受信が完了する前にリターンし、PUはその間に他
の動作を行う事が可能な関数である。前項まではブロッ
キング関数を前提としていた。本項ではノンブロッキン
グを実現するための追加機構を説明する。ノンブロッキ
ング関数では、送受信が完了する前に複数の送受信関数
が発行される事がある。この時にtagの同じ送受信関数
では、発行された順序で送信関数と受信関数が対応しな
い事がある。以下に本発明の送受信関数の順序性の保証
法について図11を用いて説明する。
(E) Guarantee of order in non-blocking operation For transmission and reception in the message passing library,
There are blocking functions and non-blocking functions. The blocking function is a function that blocks (stops) the operation of the program from the time the transmission / reception function is called until transmission / reception is completed.The non-blocking function returns after the function is called and before transmission / reception is completed. It is a function that can perform other operations in the meantime. Until the previous section, a blocking function was assumed. In this section, an additional mechanism for realizing non-blocking will be described. In a non-blocking function, a plurality of transmission / reception functions may be issued before transmission / reception is completed. At this time, in the transmission / reception functions having the same tag, the transmission function and the reception function may not correspond in the order of issuance. The method of guaranteeing the order of the transmission / reception functions of the present invention will be described below with reference to FIG.

【0033】本発明のメッセージパッシングライブラリ
は、送信時には、まず静的バッファのヘッダにメッセー
ジ情報(tag, length)をセットして受信側へと連絡する
(ショートプロトコル時にはメッセージの本体も同時に
送信する)。この時に静的バッファのヘッダにnext(11
01)というメンバを加え、このnextで次に送信する静
的バッファのブロックを指定する。使用中の静的バッフ
ァの各ブロックは、nextによりチェーンでつながれてお
り、チェーンの順に送信されることになる。受信側が受
け取る静的バッファは送信側から送られたものであり、
送信側と同様nextでつながっている。したがってチェー
ンの順で検索し、送信関数の発行順序を確定することが
出来る。
In the message passing library of the present invention, at the time of transmission, first, message information (tag, length) is set in a header of a static buffer, and the message is notified to the receiving side.
(In short protocol, the body of the message is also sent at the same time.) At this time, the next (11
01), and the next specifies the block of the static buffer to be transmitted next. Each block of the static buffer in use is chained by next, and transmitted in the order of the chain. The static buffer received by the receiver is from the sender,
Like the sender, they are connected by next. Therefore, the search can be performed in the order of the chain, and the issue order of the transmission functions can be determined.

【0034】また、送信側での送信関数発行時に静的バ
ッファが空いていない時や、受信側での受信関数発行時
に静的バッファのヘッダがまだ送られてきていない時に
は、送受信関数の順序を静的バッファのブロックの順序
で表す事が出来ない。そこで本発明では、関数発行時に
すぐに処理できない関数の順序を保持しておくために、
未処理の関数の発行順序を管理するためのリクエストオ
ブジェクトを導入する(1102,1103)。リクエス
トオブジェクトには、メッセージの情報を保持するtag
(1104,1105)、dest(src)(1106,110
7)、length(1108,1109)と順序を保持するnext
(1110,1111)の計4つの要素を持つ。終了して
いない関数は静的バッファのブロックと同様、nextによ
ってチェーンでつながれ、送信側、受信側、それぞれ
で、その順に処理される。静的バッファのブロックが順
に処理された後は、リクエストオブジェクトの順に処理
が進む。以上の方式によりノンブロッキング関数におけ
る順序性は保証される。
When the transmission side issues a transmission function when the static buffer is not empty, or when the reception side issues the reception function, the header of the static buffer has not been sent yet. It cannot be expressed in the order of the blocks in the static buffer. Therefore, in the present invention, in order to maintain the order of functions that cannot be processed immediately when the function is issued,
A request object for managing the order of issuing unprocessed functions is introduced (1102, 1103). The request object has a tag that holds the information of the message
(1104, 1105), dest (src) (1106, 110
7), length (1108, 1109) and next to retain the order
It has a total of four elements (1110, 1111). Unfinished functions are chained together by next, just like the blocks in the static buffer, and processed by the sender and the receiver in that order. After the blocks of the static buffer are processed in order, the processing proceeds in the order of the request object. With the above method, the order in the non-blocking function is guaranteed.

【0035】(F)ノンブロッキング動作の追加インタ
フェース 順序性が保証されれば、以下のインタフェースを追加す
ることによってノンブロッキング関数を実現できる。
(F) Additional Interface for Non-blocking Operation If the order is guaranteed, a non-blocking function can be realized by adding the following interface.

【0036】(1)Isend(buf, dest, tag, length) 各引き数はSendと同じ仕様である。ユーザが本関数をコ
ールすると静的バッファに空きがある場合には使用する
バッファをチェーンにつないでから転送し、静的バッフ
ァに空きがない場合にはリクエストオブジェクトを作成
して本関数をチェーンにつなぐ。リクエストオブジェク
トのチェーンは発行順に処理される。静的バッファを受
信側に転送した後は、ショートプロトコル(図7:70
1〜704)かロングプロトコル(図8:801〜80
6)で非同期にデータが転送される。
(1) Isend (buf, dest, tag, length) Each argument has the same specification as Send. When the user calls this function, if there is free space in the static buffer, connect the buffer to be used to the chain and transfer it. If there is no free space in the static buffer, create a request object and add this function to the chain. connect. The request object chains are processed in the order of issue. After transferring the static buffer to the receiving side, the short protocol (FIG. 7: 70
1 to 704) or the long protocol (FIG. 8: 801 to 80)
Data is transferred asynchronously in 6).

【0037】(2)Irecv(buf, src, tag) 各引き数はRecvと同じ仕様である。ユーザが関数をコー
ルするとリクエストオブジェクトを作成してチェーンに
つなぐ。チェーンの先頭の関数から順に処理され、静的
バッファのチェーンの先頭から順に対応するtagを持つ
送信関数が発行されているかを検索する。対応する送信
が検索された後は、ショートプロトコル(図7:704
〜707)かロングプロトコル(図8:807〜812)
で非同期にデータが転送される。
(2) Irecv (buf, src, tag) Each argument has the same specification as Recv. When a user calls a function, a request object is created and connected to the chain. Processing is performed in order from the function at the top of the chain, and a search is performed to determine whether a transmission function having a corresponding tag has been issued from the top of the chain of the static buffer. After the corresponding transmission has been retrieved, the short protocol (704: FIG. 7)
707) or the long protocol (Fig. 8: 807-812)
The data is transferred asynchronously by.

【0038】(3)Wait() 本関数は、ノンブロッキング関数の完了を待つための関
数である。ノンブロッキング関数は、関数コール後すぐ
にリターンしてしまうため、関数がいつ完了するかユー
ザには分からない。そのためノンブロッキング関数の完
了を明示するために本関数は使われる。本関数が発行さ
れると、完了確認をしていないノンブロッキング関数が
完了するまでPUはブロックされる。全ての関数が完了す
ることで本関数も完了する。本関数完了後はまた新たに
Send/Isend、Recv/Irecvが発行され通信が再開される。
(3) Wait () This function is a function for waiting for completion of the non-blocking function. Since the non-blocking function returns immediately after the function call, the user does not know when the function completes. Therefore, this function is used to indicate the completion of the non-blocking function. When this function is issued, the PU is blocked until the non-blocking function that has not been confirmed to complete is completed. This function is completed when all functions are completed. After this function is completed,
Send / Isend and Recv / Irecv are issued and communication is resumed.

【0039】[0039]

【発明の効果】本発明のリモートメモリ転送制御方式に
よれば、リモートメモリ書き込みを用いたデータ転送に
おいて、データの長さによってあらかじめPUごとにアド
レスの割り当てられた領域を用いて転送するか、転送時
に動的に割り当てられる領域を用いてパイプライン処理
で転送するかを選択することができ、それによって高速
にデータの転送が出来るようになる。図12に示す通り
パイプライン動作を導入すると、最初と最後の2回ずつ
を除き、3回のメッセージ転送が重なって生じる。した
がって、従来のリモートメモリ書き込みを用いたメッセ
ージパッシングに比べ、約3倍の性能が得られる。
According to the remote memory transfer control method of the present invention, in data transfer using remote memory writing, data is transferred using an area to which an address is previously assigned to each PU depending on the length of data. It is possible to select whether or not to perform transfer by pipeline processing using a region that is sometimes dynamically allocated, thereby enabling high-speed data transfer. As shown in FIG. 12, when the pipeline operation is introduced, three message transfers occur simultaneously except for the first and last two times. Therefore, about three times the performance can be obtained as compared with the conventional message passing using remote memory writing.

【0040】また、本発明のリモートメモリ転送制御方
式によれば、送信関数が発行された順にデータが転送さ
れ、受信関数が発行された順に転送されたデータを受け
取る事を保証することができる。これにより、ノンブロ
ッキング動作を行う送受信関数におけるデータの順序性
を保証することができるようになる。
Further, according to the remote memory transfer control method of the present invention, it is possible to guarantee that data is transferred in the order in which the transmission functions are issued, and that the transferred data is received in the order in which the reception functions are issued. As a result, the order of data in the transmission / reception function that performs the non-blocking operation can be guaranteed.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の実施例の全体構成図。FIG. 1 is an overall configuration diagram of an embodiment of the present invention.

【図2】従来のリモートメモリ書き込みを用いたデータ
転送制御方式。
FIG. 2 shows a conventional data transfer control method using remote memory writing.

【図3】静的バッファの説明図。FIG. 3 is an explanatory diagram of a static buffer.

【図4】動的バッファの説明図。FIG. 4 is an explanatory diagram of a dynamic buffer.

【図5】ショートプロトコルのタイミングチャート。FIG. 5 is a timing chart of a short protocol.

【図6】ロングプロトコルのタイミングチャート。FIG. 6 is a timing chart of a long protocol.

【図7】ショートプロトコルのフローチャート。FIG. 7 is a flowchart of a short protocol.

【図8】ロングプロトコルのフローチャート。FIG. 8 is a flowchart of a long protocol.

【図9】パイプライン動作の説明図。FIG. 9 is an explanatory diagram of a pipeline operation.

【図10】パイプライン動作のフローチャート。FIG. 10 is a flowchart of a pipeline operation.

【図11】順序性保証のための説明図。FIG. 11 is an explanatory diagram for guaranteeing order.

【図12】パイプライン動作の動作図。FIG. 12 is an operation diagram of a pipeline operation.

【符号の説明】[Explanation of symbols]

101,102...要素計算機、103,104...CPU、
105,106...メモリ、107...通信路、108,1
09...オペレーティングシステム、110,111...
ユーザプログラム、112,113...メッセージ通信ラ
イブラリ、114,115...データ転送用メモリ領域、
116,117,301,309...静的バッファ、11
8,119,401,405,910,911...動的バッフ
ァ、201,204...ユーザバッファ、202,20
3...データ転送用バッファ、302...静的バッファの
ヘッダ、303,308...静的バッファのメッセージ本
体、304...メッセージの識別子を格納する領域、3
05...メッセージの長さを格納する領域、306...確
保した動的バッファの先頭アドレスを格納する領域、3
07...確保した動的バッファの最終アドレスを格納す
る領域、402...動的バッファにメッセージが到着し
ているかを確認するためのヘッダ、403...動的バッ
ファのメッセージの本体、404...動的バッファの管
理ヘッダ、1101...静的バッファの順序を格納する
領域、1102,1103...リクエストオブジェクト、
1104,1105...メッセージの識別子を格納するリ
クエストオブジェクトの領域、1106,1107...メ
ッセージの送受信相手を格納するリクエストオブジェク
トの領域、1108,1109...メッセージの長さを格
納するリクエストオブジェクトの領域、1110,11
11...リクエストオブジェクトの順序を格納する領
域。
101,102 ... element calculator, 103,104 ... CPU,
105,106 ... memory, 107 ... communication path, 108,1
09 ... Operating system, 110,111 ...
User programs, 112, 113 ... message communication library, 114, 115 ... data transfer memory area,
116, 117, 301, 309 ... Static buffer, 11
8, 119, 401, 405, 910, 911 ... dynamic buffer, 201, 204 ... user buffer, 202, 20
3. Data transfer buffer, 302 ... Static buffer header, 303, 308 ... Static buffer message body, 304 ... Message identifier storage area, 3.
05: an area for storing the length of the message, 306 ... an area for storing the head address of the secured dynamic buffer, 3
07: an area for storing the final address of the secured dynamic buffer; 402: a header for confirming whether a message has arrived in the dynamic buffer; 403: a message body of the dynamic buffer; 404... Dynamic buffer management header, 1101... Area storing static buffer order, 1102, 1103.
1104, 1105... Request object area for storing message identifiers, 1106, 1107... Request object areas for storing message transmission / reception partners, 1108, 1109. Area of 1110,11
11 ... Area for storing the order of request objects.

Claims (4)

【特許請求の範囲】[Claims] 【請求項1】複数台の計算機とこれらを相互接続する通
信路からなる並列計算機の該計算機間のデータ転送方法
であって、 該各計算機内に、通信相手となる計算機毎に固定された
領域である静的受信バッファ領域と、通信の発生時に動
的に割り当てられる動的受信バッファ領域を確保するス
テップと、 送信データのデータ長が予め定められた値より短い場合
には、送信先の該静的バッファ領域に送信データを書き
込むステップと、 送信データのデータ長が予め定められた値より長い場合
には、送信先の該動的バッファ領域のアドレスを該静的
バッファ領域を用いて受信するステップと、送信先での
該受信したアドレスの該動的バッファ領域に当該送信デ
ータを書き込むステップを有することを特徴とする並列
計算機におけるデータ送受信方法。
1. A method of transferring data between computers, comprising a plurality of computers and a communication path interconnecting the computers, wherein each computer has an area fixed for each computer as a communication partner. Securing a dynamic reception buffer area that is dynamically allocated when a communication occurs, and a step of securing a dynamic reception buffer area when the data length of the transmission data is shorter than a predetermined value. Writing the transmission data to the static buffer area; and when the data length of the transmission data is longer than a predetermined value, receiving the address of the dynamic buffer area of the transmission destination using the static buffer area. And a step of writing the transmission data in the dynamic buffer area of the received address at the transmission destination in the parallel computer. .
【請求項2】複数台の要素計算機を通信路によって結合
しており、任意の要素計算機上のデータ転送用メモリ領
域上にあるデータを任意の他の要素計算機上のデータ転
送用メモリ領域に書き込むリモートメモリ書き込み機構
を有する並列計算機における任意の2つの要素計算機の
間のデータ送受信方法であって、 各要素計算機は、利用者プログラムからの通信初期化要
求を契機として、該データ転送用メモリ領域上に、通信
相手となる計算機毎にあらかじめアドレスの固定された
静的受信バッファ領域と、通信が発生するたびにそこか
らバッファが動的に割り当てられる動的受信バッファ領
域を確保するステップと、 利用者プログラムからの送信要求を契機として、送信側
要素計算機は、利用者メモリ上の送信データを該データ
転送用メモリ領域にコピーし、データ長に関する情報を
含むヘッダを構成し、該送信データのデータ長があらか
じめ定められた値より短い場合には、該ヘッダおよびデ
ータを受信側の要素計算機上に用意された該静的バッフ
ァ領域にリモートメモリ書き込み機構を用いて書き込
み、該送信データのデータ長があらかじめ定められた値
より長い場合には、該ヘッダを受信側の要素計算機上に
用意された該静的バッファ領域にリモートメモリ書き込
み機構を用いて書き込むステップと、 受信側の要素計算機は、該ヘッダの到着を契機として、
該ヘッダを参照してデータ長を取得し、該送信データの
データ長があらかじめ定められた値より長い場合には、
該データ長が必要なバッファを該動的バッファ領域上に
確保してそのバッファのアドレス情報を送信側の要素計
算機に通知するステップと、 送信側の要素計算機は、該送信データのデータ長があら
かじめ定められた値より長い場合には、該アドレス情報
の到着を契機として、該アドレス情報を参照してデータ
を受信側の要素計算機の該確保された動的バッファ上に
リモートメモリ書き込み機構を用いて書き込むステップ
と、 利用者プログラムからの受信要求を契機として、受信側
要素計算機は、該静的バッファ領域または該動的バッフ
ァ領域に書き込まれた該データを利用者メモリ上の受信
バッファにコピーするステップとを有するデータ送受信
方法。
2. A plurality of element computers are connected by a communication path, and data in a data transfer memory area on an arbitrary element computer is written to a data transfer memory area on an arbitrary element computer. A data transmission / reception method between any two elemental computers in a parallel computer having a remote memory writing mechanism, wherein each elemental computer has a data transfer memory area in response to a communication initialization request from a user program. Securing a static reception buffer area in which an address is fixed in advance for each computer to be communicated with and a dynamic reception buffer area from which a buffer is dynamically allocated each time a communication occurs; In response to a transmission request from the program, the transmission-side element computer stores the transmission data in the user memory in the data transfer memo. Copy to the area, configure a header including information about the data length, if the data length of the transmission data is shorter than a predetermined value, the header and the data prepared on the receiving side element computer If the data length of the transmission data is longer than a predetermined value, the header is written in the static buffer area prepared on the element computer on the receiving side. Writing the data using the remote memory writing mechanism, and the receiving-side element computer, upon the arrival of the header,
The data length is obtained by referring to the header, and when the data length of the transmission data is longer than a predetermined value,
Securing a buffer requiring the data length in the dynamic buffer area and notifying the address information of the buffer to the element computer on the transmission side; and the element computer on the transmission side determines whether the data length of the transmission data is If the length is longer than the predetermined value, the arrival of the address information triggers the data referring to the address information to the secured dynamic buffer of the receiving element computer using the remote memory writing mechanism. A writing step; and, upon a reception request from the user program, the receiving element computer copying the data written in the static buffer area or the dynamic buffer area to a reception buffer on the user memory. A data transmission / reception method comprising:
【請求項3】利用者プログラムから複数の送信要求が発
行された場合に、該ヘッダ情報中に次の送信要求に対し
て確保されるべきヘッダへのポインタ情報を格納するス
テップを有する請求項2記載のデータ送受信方法。
3. When a plurality of transmission requests are issued from a user program, a step of storing pointer information to a header to be secured for the next transmission request in the header information. Data transmission / reception method described.
【請求項4】複数台の要素計算機を通信路によって結合
しており、任意の要素計算機上のデータを他の任意の要
素計算機のメモリに書き込むリモートメモリ書き込み機
構を有する並列計算機における任意の2つの要素計算機
の間のデータ送受信方法であって、 各要素計算機は、該データ転送用メモリ領域上に、通信
が発生するたびにそこからバッファが動的に割り当てら
れる動的受信バッファ領域と、2つの送信バッファを確
保する。該動的受信バッファ領域は、あらかじめ定めら
れた固定長の複数のブロックよりなるように構成するス
テップと、 送信側要素計算機は、利用者プログラムからの送信要求
を契機として、該送信データを、該あらかじめ定められ
た複数の固定長のパケットに区切り、データの長さに関
する情報を含むヘッダを構成し、該ヘッダを受信側の要
素計算機に通知するステップと、 受信側の要素計算機は、該ヘッダ情報の到着を契機とし
て、該ヘッダ情報を参照して必要な数の該ブロックより
なる受信バッファを該動的受信バッファ領域上に確保
し、該バッファのアドレス情報を送信側の要素計算機に
通知するステップと、 送信側要素計算機は、該バッファのアドレス情報の到着
を契機として、該複数のパケットのうちn番目のパケッ
トを該データ転送用メモリ領域上の該2つの送信バッフ
ァのうち一方にコピーし、既に該データ転送用メモリ領
域上の該2つの送信バッファのうちもう一方にコピーさ
れたn−1番目のパケットを、リモートメモリ書き込み
機構を用いて、受信側の要素計算機上の該動的受信バッ
ファのn−1番目のブロックに書き込み、上記2つのス
テップをすべての該複数のパケットについて順次適用す
るステップと、 利用者プログラムからの受信要求を契機として、受信側
要素計算機は、該受信バッファの複数のブロックに書き
込まれた該データを利用者メモリ上の受信バッファに順
次コピーするステップとを有するデータ送受信方法。
4. A parallel computer in which a plurality of element computers are connected by a communication path and which has a remote memory writing mechanism for writing data on an arbitrary element computer to a memory of another arbitrary element computer. A method for transmitting and receiving data between element computers, wherein each element computer includes, on the data transfer memory area, a dynamic reception buffer area from which a buffer is dynamically allocated whenever communication occurs, and two dynamic reception buffer areas. Allocate a transmission buffer. Configuring the dynamic reception buffer area to be composed of a plurality of blocks of a predetermined fixed length, and the transmitting element computer transmits the transmission data in response to a transmission request from a user program. Dividing the packet into a plurality of packets of a predetermined fixed length, forming a header including information on the length of data, and notifying the header to an element computer on the receiving side; Arriving at a timing, referring to the header information, securing a required number of reception blocks of the blocks in the dynamic reception buffer area, and notifying the transmission side element computer of the address information of the buffers. And transmitting the n-th packet of the plurality of packets to the data transfer device when the address information of the buffer arrives. And writing the (n-1) -th packet already copied to the other of the two transmission buffers on the data transfer memory area to the remote memory. Writing to the (n-1) th block of the dynamic reception buffer on the element computer on the receiving side by using the mechanism, and sequentially applying the above two steps to all of the plurality of packets; Triggering the receiving request to cause the receiving element computer to sequentially copy the data written in the plurality of blocks of the receiving buffer to the receiving buffer on the user memory.
JP30442696A 1996-11-15 1996-11-15 Data transmission / reception method in parallel computer Expired - Fee Related JP3644158B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30442696A JP3644158B2 (en) 1996-11-15 1996-11-15 Data transmission / reception method in parallel computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30442696A JP3644158B2 (en) 1996-11-15 1996-11-15 Data transmission / reception method in parallel computer

Publications (2)

Publication Number Publication Date
JPH10143486A true JPH10143486A (en) 1998-05-29
JP3644158B2 JP3644158B2 (en) 2005-04-27

Family

ID=17932865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30442696A Expired - Fee Related JP3644158B2 (en) 1996-11-15 1996-11-15 Data transmission / reception method in parallel computer

Country Status (1)

Country Link
JP (1) JP3644158B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012208680A (en) * 2011-03-29 2012-10-25 Mitsubishi Heavy Ind Ltd Parallel processing system and method of operating parallel processing system
WO2013027247A1 (en) * 2011-08-25 2013-02-28 富士通株式会社 Information processing device and method for controlling information processing device
CN116931842A (en) * 2023-09-12 2023-10-24 合肥康芯威存储技术有限公司 Memory, data processing method, electronic equipment and medium

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012208680A (en) * 2011-03-29 2012-10-25 Mitsubishi Heavy Ind Ltd Parallel processing system and method of operating parallel processing system
US9774671B2 (en) 2011-03-29 2017-09-26 Mitsubishi Heavy Industries, Ltd. Parallel processing system and operation method of parallel processing system
WO2013027247A1 (en) * 2011-08-25 2013-02-28 富士通株式会社 Information processing device and method for controlling information processing device
CN116931842A (en) * 2023-09-12 2023-10-24 合肥康芯威存储技术有限公司 Memory, data processing method, electronic equipment and medium
CN116931842B (en) * 2023-09-12 2023-12-08 合肥康芯威存储技术有限公司 Memory, data processing method, electronic equipment and medium

Also Published As

Publication number Publication date
JP3644158B2 (en) 2005-04-27

Similar Documents

Publication Publication Date Title
US5931915A (en) Method for processing early arrival messages within a multinode asynchronous data communications system
JP4624110B2 (en) Usage of direct memory access to perform database operations between two or more machines
US5991797A (en) Method for directing I/O transactions between an I/O device and a memory
US20180375782A1 (en) Data buffering
JP3553634B2 (en) Interconnect interface
US5630059A (en) Expedited message transfer in a multi-nodal data processing system
EP0097674B1 (en) Interface processor unit
US5781741A (en) Message communications system in a parallel computer
JPH0675262B2 (en) Message transfer mechanism
JPH03130863A (en) Control-element transfer system
JP2005513596A (en) Supercharge message exchange device
CZ20032079A3 (en) Method and apparatus for transferring interrupts from a peripheral device to a host computer system
US5878226A (en) System for processing early arrival messages within a multinode asynchronous data communications system
JPH0779353B2 (en) Message exchange method between shared memory and communication adapter using efficient logical protocol
JP3644158B2 (en) Data transmission / reception method in parallel computer
JP4104939B2 (en) Multiprocessor system
KR20010095103A (en) An intelligent bus interconnect unit
JPH1115803A (en) Method for transmitting/receiving data in parallel computer
JP3940686B2 (en) Communication system and communication method
KR960006472B1 (en) Fddi firmware driving method for ticom iop environment
JPH0619855A (en) Method and device for queueing message
US7177997B2 (en) Communication bus system
JP2971119B2 (en) High-speed data transfer method in multiple processor system
JP2966051B2 (en) Processor unit
CN115858434A (en) Computing equipment and request processing method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040405

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: 20050111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050124

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080210

Year of fee payment: 3

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090210

Year of fee payment: 4

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090210

Year of fee payment: 4

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100210

Year of fee payment: 5

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100210

Year of fee payment: 5

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110210

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees