JP2009301101A - プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法 - Google Patents

プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法 Download PDF

Info

Publication number
JP2009301101A
JP2009301101A JP2008151660A JP2008151660A JP2009301101A JP 2009301101 A JP2009301101 A JP 2009301101A JP 2008151660 A JP2008151660 A JP 2008151660A JP 2008151660 A JP2008151660 A JP 2008151660A JP 2009301101 A JP2009301101 A JP 2009301101A
Authority
JP
Japan
Prior art keywords
processor
multicast packet
processors
packet
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.)
Pending
Application number
JP2008151660A
Other languages
English (en)
Inventor
Takeshi Kano
健 加納
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008151660A priority Critical patent/JP2009301101A/ja
Priority to EP20090158606 priority patent/EP2133798A1/en
Priority to US12/437,880 priority patent/US20090307463A1/en
Publication of JP2009301101A publication Critical patent/JP2009301101A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)

Abstract

【課題】プロセッサ間通信の高速化が可能なプロセッサ間通信システムを提供する。
【解決手段】プロセッサ間通信システムは、複数のプロセッサと、複数のプロセッサのいずれかからマルチキャストパケットを受信するとそのパケットを複数のプロセッサのうちそのパケットに宛先として指定された複数のプロセッサに転送する転送装置を含む。各プロセッサは、記憶手段、記憶手段内の基準書込み位置を示す位置情報を保持する保持手段、基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値とデータが記載されたマルチキャストパケットを転送装置に送信する送信手段、および、送信されたマルチキャストパケットを転送装置を介して受信すると、そのパケットに記載された調整値と保持手段内の位置情報とに基づいて記憶手段における書込み位置を決定しその書込み位置にパケットに記載されたデータを格納する受信手段を含む。
【選択図】図1

Description

本発明は、プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法に関し、特に、複数のプロセッサのそれぞれが他のプロセッサからデータを収集するギャザー処理を高速化するための、プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法に関する。
MPI(Message Passing Interface)ライブラリは、並列コンピュータ用の並列プログラムが書かれる場合に、最もよく使われる通信ライブラリの1つである。MPIライブラリには、複数のプロセッサからデータを集めて、集めたデータを複数のプロセッサすべてに配るMPI_Allgather()という関数がある。
非特許文献1には、MPIライブラリのMPI_Allgather()の通信方法として、Recursive Doublingというアルゴリズムが紹介されている。
図11は、Recursive Doublingを説明するための説明図である。
ここでは、プロセッサA0〜A7の8個のプロセッサのそれぞれが、MPI_Allgather()を用いて、データD0〜D7をギャザー(収集)する場合を説明する。
なお、プロセッサA0にはプロセッサ番号「0」が付与され、プロセッサA1にはプロセッサ番号「1」が、プロセッサA2にはプロセッサ番号「2」が、プロセッサA3にはプロセッサ番号「3」が付与されている。プロセッサA4にはプロセッサ番号「4」が付与され、プロセッサA5にはプロセッサ番号「5」が、プロセッサA6にはプロセッサ番号「6」が、プロセッサA7にはプロセッサ番号「7」が付与されている。
また、各プロセッサ番号は、3ビットの2進数で表されているとする。
ステップ1Aでは、その3ビットの2進数のうち下から1ビット目をドントケアにした場合に同じ内容となるプロセッサ番号が付与されている2つのプロセッサ間で、各プロセッサに格納されているデータが交換される。すなわち、プロセッサA0およびA1の間、プロセッサA2およびA3の間、プロセッサA4およびA5の間、プロセッサA6およびA7の間で、各プロセッサは、自己が有するデータを相手に送る。
ステップ1Aが完了した時点では、プロセッサA0およびA1がデータD0およびD1を格納し、プロセッサA2およびA3がデータD2およびD3を、プロセッサA4およびA5がデータD4およびD5を、プロセッサA6およびA7がデータD6およびD7を格納している。
ステップ2Aでは、プロセッサ番号を表す3ビットの2進数のうち下から2ビット目をドントケアにした場合に同じ内容となるプロセッサ番号が付与されている2つのプロセッサ間で、各プロセッサに格納されているデータが交換される。すなわち、プロセッサA0およびA2の間、プロセッサA1およびA3の間、プロセッサA4およびA6の間、プロセッサA5およびA7の間で、各プロセッサは、自己が有するデータを相手に送る。
ステップ2Aが完了した時点では、プロセッサA0〜A3がデータD0〜D3を格納し、プロセッサA4〜A7がデータD4〜D7を格納している。
ステップ3Aでは、プロセッサ番号を表す3ビットの2進数のうち下から3ビット目をドントケアにした場合に同じ内容となるプロセッサ番号が付与されている2つのプロセッサ間で、各プロセッサに格納されているデータが交換される。すなわち、プロセッサA0およびA4の間、プロセッサA1およびA5の間、プロセッサA2およびA6の間、プロセッサA3およびA7の間で、各プロセッサは、自己が有するデータを相手に送る。
ステップ3Aが完了した時点では、プロセッサA0〜A7がデータD0〜D7を格納して、MPI_Allgather()が完了する。
プロセッサ数をP、各プロセッサから集めるデータのサイズ(データサイズ)をNバイトとすると、Recursive Doublingでは、logP回のステップで、logP回の通信が行われ、全ステップで、各プロセッサが、N(P−1)バイトのデータを送信し、N(P−1)バイトのデータを受信することになる。
1回の通信にかかるレイテンシをα、1バイトの通信にかかる時間(スループット)をβとすると、Recursive Doublingでの通信時間は、logP×α+N(P−1)×βとなる。
特許文献1には、1つのプロセッサから送信されたパケットをコピーして他のプロセッサに送信するマルチキャスト機能を有するネットワークを含む並列コンピュータシステムにおいて、マルチキャストの宛先プロセッサごとに書き込みアドレスが異なる場合にでも、ネットワークのマルチキャスト機能を用いることを可能にする技術が開示されている。
特許文献1では、宛先プロセッサごとに書き込みアドレスを設定できるアドレスレジスタを、各プロセッサ内の受信装置が有し、受信データの書き込みに用いる書き込みアドレスを、そのアドレスレジスタに予め設定しておく技術が開示されている。
特開平9−297746号公報 インプルービング ザ パフォーマンス オブ コレクティブ オペレーション イン MPICH(Improving the Performance of Collective Operations in MPICH)、Rajeev Thakur and William Gropp、Euro PVM/MPI 2003、2003
非特許文献1に記載されているRecursive Doublingでは、プロセッサ数をPとすると、logP回のステップでlogP回の通信を行う必要がある。
並列コンピュータの規模が大きくなると、プロセッサ間の距離が大きくなり、1回の通信にかかるレイテンシが大きくなる。ネットワークのスループットは新しい技術が導入されて年々高くなるが、通信のレイテンシは、並列コンピュータの規模が大きくなるにつれて大きくなるため、その改善は困難である。
また、Recursive Doublingでは、ギャザー処理に参加するプロセッサ台数が2のべき乗でない場合、通信回数がlogPよりも多くなり、ギャザー処理にかかる時間が長くなる。そして、MPI_Allgatherv()のようにプロセッサによりギャザー(収集)するデータサイズが異なる場合には、1ステップで通信するデータ量がプロセッサによって異なる。このため、1ステップにかかる時間が長くなる。
また、特許文献1に開示されているアドレスレジスタを用いるマルチキャストの方法では、受信したパケットのデータをメモリに書き込むごとに、アドレスレジスタの値が更新される。このため、複数のプロセッサから同時に同じアドレスレジスタを使うマルチキャストパケットが送信された場合は、プロセッサによって受信するパケットの順番が異なる可能性がある。よって、プロセッサごとに、ギャザー(収集)されたデータが異なるアドレスに書き込まれる可能性がある。
従って、特許文献1に開示されているアドレスレジスタを用いるマルチキャストの方法を用いるには、送信プロセッサごとに異なるアドレスレジスタを設け、各プロセッサからのデータを書き込むアドレスを、送信元のプロセッサに対応するアドレスレジスタ内の値を用いて設定する必要がある。
しかしながら、ギャザー処理に参加するプロセッサ台数が多くなると、プロセッサ台数分のアドレスレジスタを受信装置内に実装することは困難になる。
また、使用するアドレスレジスタ数が多くなると、マルチキャストパケットのヘッダに記述される、アドレスレジスタ指定用ビット数が大きくなる。そのため、パケットヘッダが大きくなり、パケットに占めるヘッダの割合が大きくなり、パケットに占めるデータの割合が小さくなる。
また、ギャザー処理を行う前に、書き込みアドレスがアドレスレジスタに設定されるが、使用するアドレスレジスタ数が多くなると、書き込みアドレスの設定回数が多くなり、ギャザー処理を行う前に行われる処理の時間が長くなり、オーバヘッドが大きくなる。
本発明の目的は、上述した課題を解決することが可能な、プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法を提供することである。
本発明のプロセッサ間通信システムは、複数のプロセッサと、前記複数のプロセッサのいずれかからマルチキャストパケットを受信すると、当該マルチキャストパケットを、前記複数のプロセッサのうち当該マルチキャストパケットに宛先として指定された複数のプロセッサに転送する転送装置と、を含むプロセッサ間通信システムであって、前記複数のプロセッサのそれぞれは、記憶手段と、前記記憶手段内の基準書込み位置を示す位置情報を保持する保持手段と、前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信手段と、送信された前記マルチキャストパケットを、前記転送装置を介して受信すると、当該マルチキャストパケットに記載された調整値と前記保持手段内の位置情報とに基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信手段と、を含む。
本発明のプロセッサは、受信したマルチキャストパケットを複数の送信先に送信するマルチキャスト機能を有する転送装置に他のプロセッサと共に接続されるプロセッサであって、記憶手段と、前記記憶手段内の基準書込み位置を示す位置情報を保持する保持手段と、前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信手段と、送信された前記マルチキャストパケットを、前記転送装置を介して受信すると、当該マルチキャストパケットに記載された調整値と前記保持手段内の位置情報とに基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信手段と、を含む。
本発明のプロセッサ間通信方法は、自プロセッサ内の記憶手段内の基準書込み位置を示す位置情報を保持する保持手段を個別に有する複数のプロセッサと、前記複数のプロセッサと接続する転送装置と、を含むプロセッサ間通信システムが行うプロセッサ間通信方法であって、前記複数のプロセッサのうちの任意の1つのプロセッサが、前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信ステップと、前記転送装置が、前記マルチキャストパケットを受信すると、当該マルチキャストパケットを、前記複数のプロセッサのうち当該マルチキャストパケットに宛先として指定された複数のプロセッサに転送する転送ステップと、前記マルチキャストパケットに宛先として指定された複数のプロセッサが、前記マルチキャストパケットを受信すると、当該マルチキャストパケットに記載された調整値と、自プロセッサ内の保持手段内の位置情報と、に基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信ステップと、を含む。
本発明の通信方法は、受信したマルチキャストパケットを複数の送信先に送信するマルチキャスト機能を有する転送装置に他のプロセッサと共に接続されるプロセッサが行う通信方法であって、記憶手段内の基準書込み位置を示す位置情報を保持手段に保持する保持ステップと、前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信ステップと、前記送信されたマルチキャストパケットを、前記転送装置を介して受信すると、当該マルチキャストパケットに記載された調整値と、前記保持手段内の位置情報と、に基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信ステップと、を含む。
本発明によれば、他のプロセッサからデータを収集する処理時間に占めるネットワークのレイテンシ分を少なくできる。また、データ収集に参加するプロセッサ数が2のべき乗でない場合や、データサイズがプロセッサごとに異なる場合でも、他のプロセッサからデータを収集する通信時間が長くなることを防止可能になる。また、他のプロセッサからデータを収集するために使用するアドレスレジスタに数を、参加するプロセッサ数によらず少なくすることが可能になる。
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態のプロセッサ間通信システムを示したブロック図である。
図1において、プロセッサ間通信システムは、プロセッサ101と、複数のプロセッサ101a〜101aと、プロセッサ間ネットワーク102と、を含む。
プロセッサ101と複数のプロセッサ101a〜101aは、マルチキャスト機能を持つプロセッサ間ネットワーク102を介して接続されている。プロセッサ101と複数のプロセッサ101a〜101aは、ギャザー処理に参加しているとする。なお、プロセッサ101とプロセッサ101aは、同じ構成である。
プロセッサ間ネットワーク102は、一般的に転送装置と呼ぶことができる。
プロセッサ間ネットワーク102は、プロセッサ101および101a〜101aのいずれかからマルチキャストパケットを受信すると、そのマルチキャストパケットを、プロセッサ101および101a〜101aのうち、マルチキャストパケットの宛先として指定されたプロセッサに送信する。
なお、プロセッサ間ネットワーク102は、プロセッサ101および101a〜101aのいずれかからマルチキャストパケットを受信すると、そのマルチキャストパケットを、プロセッサ101および101a〜101aのすべてに送信してもよい。
プロセッサ101は、CPU(Central Processing Unit)111と、メモリ112と、送信装置113と、受信装置114と、アドレスレジスタ140〜143と、を含む。なお、アドレスレジスタ140〜143は、受信装置114に含まれてもよい。CPU111と、メモリ112と、送信装置113と、受信装置114と、アドレスレジスタ140〜143とは、バス110を介して、互いに接続されている。受信装置114と、アドレスレジスタ140〜143とは、直接、接続されている。
受信装置114は、FIFO(First-In First-Out)メモリ120と、パケットタイプレジスタ121と、パケット長レジスタ122と、デスティネーションアドレスレジスタ123と、書き込みワード数レジスタ124と、書き込みアドレスレジスタ144と、ALU(Arithmetic and Logic Unit)125および126と、ページ変換テーブル127と、書き込みワード数決定回路128と、制御回路129と、MUX(マルチプレクサ)130〜134と、を含む。
CPU111は、一般的に制御手段と呼ぶことができる。
CPU111は、例えば、プロセッサ101の動作を規定するプログラムをディスク(コンピュータにて読み取り可能な記録媒体)から読み取り実行することによって、プロセッサ101を制御する。
メモリ112は、一般的に記憶手段と呼ぶことができる。
メモリ112には、ギャザー処理に参加している各プロセッサから収集されたデータが格納される。
アドレスレジスタ140〜143のいずれかは、一般的に保持手段と呼ぶことができる。本実施形態ではアドレスレジスタ4個の場合の例を示しているが、アドレスレジスタの個数はいくつでもよい。
アドレスレジスタ140〜143の各々は、メモリ112内の基準書込み位置を示す基準アドレスを保持する。なお、基準アドレスは、一般的に、メモリ112内の基準書込み位置を示す位置情報と呼ぶことができる。
アドレスレジスタ140〜143には、CPU111で実行される受信側のプロセスにより設定された基準アドレスが格納される。つまり、CPU111は、予め、アドレスレジスタ140〜143に、基準アドレスを設定する。
なお、本実施形態では、各プロセッサにおいて、アドレスレジスタ142が、予めマルチキャストパケットと対応づけられた保持手段(マルチキャスト用保持部)として用いられる。なお、マルチキャスト用保持部は、アドレスレジスタ142に限らず、アドレスレジスタ140、141または143でもよい。
アドレスレジスタ140にはアドレスレジスタ番号「0」が付与され、アドレスレジスタ141にはアドレスレジスタ番号「1」が、アドレスレジスタ142にはアドレスレジスタ番号「2」が、アドレスレジスタ143にはアドレスレジスタ番号「3」が付与されている。
送信装置113は、一般的に送信手段と呼ぶことができる。
送信装置113は、基準アドレスを基準にして自プロセッサ用に予め設定されたメモリ112内の書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、プロセッサ間ネットワーク102に送信する。以下、調整値を「オフセット」と称する。
なお、マルチキャストパケットに記載されたデータは、ギャザー処理に参加しているプロセッサのすべてに格納されるためのデータである。
例えば、送信装置113は、マルチキャスト用保持部として用いられるアドレスレジスタを指定する指定情報とデータとオフセットとが記載されたマルチキャストパケットを、プロセッサ間ネットワーク102に送信する。
図2は、送信装置113が送信するパケットの形式の一例を示した説明図である。
図2に示したパケット200は、マルチキャストパケットとしても使用可能であり、また、シングルキャストパケットとしても使用可能である。なお、パケット200の1ワード目と2ワード目が、パケットヘッダとして用いられる。
図2において、パケット200の1ワード目には、パケットタイプ201と、パケット長202と、ルーティング情報203とが記載される。パケット200の2ワード目には、パケット200がシングルキャストパケットの場合には、シングルキャストパケットのデスティネーションアドレスが記載され、パケット200がマルチキャストパケットの場合には、オフセットが記載される。パケット200の3ワード目以降には、データが記載される。
パケットタイプ201は、1ビットのタイプ情報と、3ビットの書き込みアドレス指定情報と、4ビットのその他情報と、を示す。なお、書き込みアドレス指定情報は、一般的に指定情報と呼ぶことができる。
1ビットのタイプ情報は、パケット200が、シングルキャストパケットか、または、マルチキャストパケットかを示す。これによりルーティング情報203の解釈が異なる。
3ビットの書き込みアドレス指定情報は、パケット200の2ワード目の情報がシングルキャストパケットのデスティネーションアドレスであることを示すか、または、アドレスレジスタ140〜143の中からマルチキャスト用保持部であるアドレスレジスタを指定すると共にパケット200の2ワード目の情報がオフセットであることを示す。
パケット長202は、パケット200の3ワード目からのデータのバイト数を示す。
ルーティング情報203は、パケット200がシングルキャストパケットの場合には、宛先プロセッサ番号を示し、パケット200がマルチキャストパケットの場合には、マルチキャストのためのルーティング情報(例えば、複数の宛先プロセッサ番号)を示す。
図1に戻って、プロセッサ間ネットワーク102は、送信装置113からパケット200を受信すると、パケット200のルーティング情報203を参照する。
パケット200がシングルキャストパケットの場合には、プロセッサ間ネットワーク102は、ルーティング情報203に従って、1つのプロセッサに、パケット200を送信する。
一方、パケット200がマルチキャストパケットの場合には、プロセッサ間ネットワーク102は、パケット200をコピーし、ルーティング情報203に従って、複数のプロセッサに、パケット200を送信する。
受信装置114は、一般的に受信手段と呼ぶことができる。
受信装置114は、自プロセッサ以外のプロセッサから送信されたマルチキャストパケットであるパケット200、または、自プロセッサから送信されたマルチキャストパケットであるパケット200を、プロセッサ間ネットワーク102を介して受信すると、パケット200に記載されたオフセットと、マルチキャスト用保持部であるアドレスレジスタ142内の基準アドレスと、に基づいて、メモリ112における書込み位置を示す書き込みアドレスを決定する。
例えば、受信装置114は、マルチキャストパケットであるパケット200を受信すると、パケット200に記載されたオフセットと、パケットタイプ201に示されたアドレスレジスタに保持されている基準アドレスと、に基づいて、書き込みアドレスを決定する。
本実施の形態では、受信装置114は、パケット200に記載されたオフセットと、パケットタイプ201に示されたアドレスレジスタ(アドレスレジスタ142)に保持されている基準アドレスとを、加算することによって、書き込みアドレスを決定する。
受信装置114は、その書き込みアドレスに、パケット200に記載されたデータを格納する。
FIFOメモリ120は、プロセッサ間ネットワーク102からのパケット200を受信し格納する。
パケットタイプレジスタ121は、パケット200に記載されたパケットタイプ201を格納する。
パケット長レジスタ122は、パケット200に記載されたパケット長202を格納する。
デスティネーションアドレスレジスタ123は、パケット200の2ワード目に記載されたデスティネーションアドレスまたはオフセットを格納する。
書き込みアドレスレジスタ144は、メモリ112における書き込みアドレスを格納する。
書き込みアドレスは、パケットタイプレジスタ121内のパケットタイプ201に基づいて決定される。本実施の形態では、制御回路129は、まず、パケットタイプ201に基づいてアドレス選択信号aを設定する。続いて、制御回路129は、アドレス選択信号a等を用いて、MUX130および134と、ALU126と、を制御して、書き込みアドレスを決定する。この書き込みアドレスが、書き込みアドレスレジスタ144に設定される。
書き込みワード数決定回路128は、書き込みアドレスレジスタ144の値(書き込みアドレス)とパケット長レジスタ122の値(パケット長202)などに基づいて、メモリ112に対して書き込むデータのワード数を決定する。
書き込みワード数レジスタ124は、書き込みワード数決定回路128にて決定された書き込みワード数を格納する。
ALU125は、書き込みワード数レジスタ124の値(書き込みワード数)とパケット長レジスタ122の値(パケット長202)に基づいて、残りパケット長を計算する。
ALU126は、制御回路129に制御され、デスティネーションアドレスレジスタ123の値(デスティネーションアドレス)、または、デスティネーションアドレスレジスタ123の値(オフセット)とアドレスレジスタ140〜143のいずれかの値(基準アドレス)、または、書き込みアドレスレジスタ144の値(書き込みアドレス)と書き込みワード数レジスタ124の値(書き込みワード数)に基づいて、次回の書き込みアドレスを計算する。
ページ変換テーブル127は、制御回路129に制御され、論理アドレスである書き込みアドレスを、物理アドレスbに変換して、MUX133を介してバス110に出力する。
制御回路129は、受信装置114を制御する。例えば、制御回路129は、パケットタイプレジスタ121の値(パケットタイプ201)と書き込みワード数決定回路128からの情報(書き込みワード数)を元に、到着したパケット200内のデータ(本体)をFIFOメモリ120から読み出し、メモリ112に書き込む処理を制御する。
MUX130〜134は、制御回路129からの制御信号によって制御される。
次に、動作の概要を説明する。
本実施の形態では、ギャザー処理に参加する複数のプロセッサを宛先とするマルチキャストにより、ギャザー処理が行われる。
各プロセッサには、受信したマルチキャストパケット内のデータを書き込む領域の先頭アドレスを格納するためのアドレスレジスタ140〜143が、複数装備されている。なお、データを書き込む領域の先頭アドレスは、一般的に基準アドレスと呼ぶことができる。
ギャザー処理に参加する各プロセッサは、まず、ギャザー処理に使用するアドレスレジスタ(マルチキャスト用保持部)142に、ギャザー結果を格納する領域の先頭アドレスを設定する。なお、ギャザー結果を格納する領域、つまり、自プロセッサ用に予め設定されたメモリ112内の書込み領域は、各プロセッサ間で異なるように、予め設定されている。
そして、各送信装置113は、マルチキャストパケットに、ギャザー処理に使用するアドレスレジスタを特定するためのアドレスレジスタ番号と、自プロセッサから送るデータの格納位置(書込み位置)と先頭アドレスとの距離を示すオフセットと、を記載し、ギャザー処理に参加するすべてのプロセッサを宛先として、そのマルチキャストパケットを用いて、自プロセッサから送るデータを送信する。
マルチキャストパケットは、プロセッサ間ネットワーク102内でコピーされ、ギャザー処理に参加するすべてのプロセッサに送信される。
各プロセッサには、ギャザー処理に参加したすべてのプロセッサからのマルチキャストパケットが到着する。
各プロセッサの受信装置114は、マルチキャストパケットにて指定されたアドレスレジスタ142から、マルチキャストパケット内のデータを格納するメモリ112内の領域の先頭アドレスを読み出し、その先頭アドレスに、マルチキャストパケットに記載されたオフセットを加算して、マルチキャッストパケット内のデータを書き込む書き込みアドレスを計算する。
そして、受信装置114は、その書き込みアドレスに、マルチキャッストパケット内のデータを書き込む。
受信装置114は、すべてのマルチキャストパケットに対して、同じ処理を行う。ギャザー処理に参加するすべてのプロセッサで、すべてのマルチキャストパケットが受信された時点で、ギャザー処理が完了する。
次に、第1の実施の形態のパケット受信処理について、図1を参照しながら詳細に説明する。
プロセッサ101aからプロセッサ間ネットワーク102を経由してプロセッサ101に到着したパケット200は、受信装置114のFIFOメモリ120に格納される。
パケット200の到着は、FIFOメモリ120からの読み出し可能ワード数cによって、制御回路129に伝えられる。
制御回路129は、読み出し可能ワード数cを受け付けると、まず、読み出し信号dを用いて、FIFOメモリ120から、パケット200のヘッダ部分を読み出し、パケットタイプ201をパケットタイプレジスタ121に、パケット長202をパケット長レジスタ122に、デスティネーションアドレスまたはオフセット205をデスティネーションアドレスレジスタ123に書き込む。
続いて、制御回路129は、パケットタイプレジスタ121から、パケットタイプ201を読み出す。
パケットタイプ201内のタイプ情報がシングルキャストパケットを示す場合、制御回路129は、信号aを用いて、MUX130から、デスティネーションアドレスレジスタ123の値(デスティネーションアドレス)を出力させ、ALU126に、MUX130からの出力をそのまま書き込みアドレスレジスタ144に書き込む処理を実行させる。
よって、パケットタイプ201内のタイプ情報がシングルキャストパケットを示す場合、デスティネーションアドレスレジスタ123の値(デスティネーションアドレス)が、書き込みアドレスとして、書き込みアドレスレジスタ144に書き込まれる。
一方、パケットタイプ201内のタイプ情報がマルチキャストパケットを示す場合、制御回路129は、まず、信号aを用いて、MUX130から、パケットタイプ201内の書き込みアドレス指定情報で指定されたアドレスレジスタ142の値(先頭アドレス)を出力させ、また、MUX134を制御してMUX134からデスティネーションアドレスレジスタ123の値(オフセット)を出力させる。
続いて、制御回路129は、ALU126に、MUX130からの先頭アドレスとMUX134からのオフセットとを加算させ、その加算結果を、書き込みアドレスとして、書き込みアドレスレジスタ144に書き込む処理を実行させる。
よって、パケットタイプ201内のタイプ情報がマルチキャストパケットを示す場合、アドレスレジスタ142の値(先頭アドレス)とデスティネーションアドレスレジスタ123の値(オフセット)とを加算した値が、書き込みアドレスとして、書き込みアドレスレジスタ144に書き込まれる。
書き込みワード数決定回路128は、書き込みアドレスレジスタ144に設定された書き込みアドレスと、パケット長レジスタ122内のデータ長と、に基づいて、メモリ112への書き込み要求にしたがって、書き込むワード数を決定する。
例えば、CPU111にキャッシュメモリがある場合は、キャッシュラインの一部へのデータ書き込みに比べ、キャッシュライン全体へのデータ書き込みの方が高速に処理できる。そのため、書き込みワード数決定回路128は、書き込みアドレスレジスタ144に設定された書き込みアドレスがキャッシュライン境界でない場合には、まず、キャッシュライン境界までの書き込みを行い、その後、キャッシュライン全体への書き込みになるように書き込みワード数を決定する。
書き込みワード数決定回路128は、その決定された書き込みワード数を、制御回路129に伝える。また、決定された書き込みワード数は、書き込みワード数レジスタ124に設定される。
制御回路129は、書き込みワード数を受け付けると、書き込みアドレスレジスタ144に設定された書き込みアドレスを、ページ変換テーブル127を用いて、論理アドレスから物理アドレスbに変換し、続いて、書き込むワード数分のデータを、FIFOメモリ120から読み出し、物理アドレスbとデータとを、メモリ書き込み要求として、MUX133を介してバス110に送る。
このメモリ書き込み要求によって、データが、メモリ112における書き込みアドレスに格納される。
制御回路129は、メモリ書き込み要求の送信の終了に応じて、書き込みワード数レジスタ124内の書き込みワード数と、ALU125と、を用いて、パケット長レジスタ122の値(パケット長)を更新する(書き込みワード数分減算する)。
本実施の形態では、メモリ書き込み要求の送信が終了すると、制御回路129は、MUX131に、パケット長レジスタ122の値(パケット長)を出力させ、ALU125に、MUX131からの出力(パケット長)から書き込みワード数レジスタ124内の値(書き込みワード数)を減算する処理を実行させる。
続いて、制御回路129は、MUX132に、ALU125の出力(減算結果)をパケット長レジスタ122に書き込ませる。
よって、パケット長レジスタ122には、残りのデータ長が格納される。
また、制御回路129は、メモリ書き込み要求の送信の終了に応じて、書き込みワード数レジスタ124内の書き込みワード数と、ALU126と、を用いて、書き込みアドレスレジスタ144の値を更新する(書き込みワード数分加算する)。
本実施の形態では、メモリ書き込み要求の送信が終了すると、制御回路129は、MUX130に、書き込みアドレスレジスタ144の値(書き込みアドレス)を出力させ、MUX134に、書き込みワード数レジスタ124の値(書き込みワード数)を出力させる。
続いて、制御回路129は、ALU126に、MUX130からの出力(書き込みアドレス)とMUX134からの出力(書き込みワード数)とを加算する処理を実行させ、その加算結果を書き込みアドレスレジスタ144に書き込む処理を実行させる。
続いて、制御回路129は、書き込みワード数決定回路128に、更新されたパケット長レジスタ122内の値と書き込みアドレスレジスタ144の値を使って次にメモリ112に書き込むワード数を決定する処理を実行させる。
制御回路129は、パケット長レジスタ122の値がゼロになるまで、上記処理を繰り返し、FIFOメモリ120内にあるパケットで送られてきたデータすべてを、メモリ112に書き込む。これで1つのパケットの処理が終わる。
次に、第1の実施の形態を使用したギャザー処理について図3A〜図3Eを参照しながら説明する。
ここでは、説明のために、プロセッサ0、プロセッサ1、プロセッサi、プロセッサi+1の4つのプロセッサから送信されたマルチキャストパケットだけを示す。また、プロセッサj、プロセッサj+1の2つのプロセッサに、それらのパケットが受信された場合だけを示す。
しかし、本実施の形態のマルチキャストを用いたギャザー処理では、実際には、ギャザー処理に参加するすべてのプロセッサからマルチキャストパケットが送信され、参加するすべてのプロセッサにマルチキャストパケットが到着する。
なお、プロセッサ0、プロセッサ1、プロセッサi、プロセッサi+1、プロセッサj、および、プロセッサj+1は、プロセッサ101と同一構成である。
図3Aは、ギャザー処理を行う前の状態を示した説明図である。
図3A〜3Eに示すギャザー処理の例では、マルチキャスト用保持部としてアドレスレジスタ142が使用されるので、各プロセッサ上のプロセスでは、アドレスレジスタ142に、書き込みアドレスの先頭アドレスが設定される。
プロセッサjでは、アドレスレジスタ142に、0x00001000が設定されている。また、プロセッサj+1では、アドレスレジスタ142に、0x00100008が設定されている。
プロセッサjとプロセッサj+1のメモリ112のイメージが書かれているが、ここでは、論理アドレスのメモリ空間が図示されている。
また、プロセッサ0、プロセッサ1、プロセッサi、プロセッサi+1が送るデータサイズとギャザーする領域の先頭アドレスから、それぞれが書き込むアドレスまでのオフセットが設定されている。
この例では、各プロセッサが送信するデータサイズが異なるMPI_Allgatherv()の処理を示すが、MPI_Allgather()は、MPI_Allgatherv()の送信データサイズがすべて同じ場合である。
MPI_Allgatherv()の場合、引数として、各プロセッサからのデータサイズのリストが渡されるので、各プロセッサは、送信するデータのオフセットとデータ長を決定することが可能である。
また、MPI_Allgather()の場合は、各プロセッサから集めるデータサイズと、自分が何番目のプロセッサであるかがわかるので、各プロセッサは、送信データのオフセットを決定することが可能である。
図3Bは、プロセッサ1からのマルチキャストパケットが、プロセッサjとプロセッサj+1に到着して、各メモリ112に書き込まれたところを示した説明図である。
プロセッサ1のオフセットは0x00000048であり、データ長が272バイトなので、まず、オフセットが0x00000048でデータ長が256バイトのマルチキャストパケットが、プロセッサ1から送信される。
次に、オフセットが0x00000148でデータ長が16バイトのマルチキャストパケットが、プロセッサ1から送信される。
いずれのパケットでも、アドレスレジスタ142を使用することが指定されている。
プロセッサjでは、アドレスレジスタ142の値である0x00001000と最初のパケットに付加されたオフセット0x00000048を加算した0x00001048から、256バイトのデータが書き込まれ、続いて、0x00001000と2番目のパケットに付加されたオフセット0x00000148を加算した0x00001148から、16バイトのデータが書き込まれる。
プロセッサj+1では、アドレスレジスタ142の値である0x00100008と最初のパケットに付加されたオフセット0x00000048を加算した0x00100050から、256バイトのデータが書き込まれ、続いて、0x00100008と2番目のパケットに付加されたオフセット0x00000148を加算した0x00100150から、16バイトのデータが書き込まれる。
図3Cは、プロセッサiからのマルチキャストパケットが、プロセッサjとプロセッサj+1に到着して、各メモリ112に書き込まれたところを示した説明図である。
プロセッサiのオフセットは0x00001010であり、データ長が520バイトなので、まず、オフセットが0x00001010でデータ長が256バイトのマルチキャストパケットが、プロセッサiから送信される。
次に、オフセットが0x00001110でデータ長が256バイトのマルチキャストパケットが、プロセッサiから送信される。
さらに、オフセットが0x00001210でデータ長が8バイトのマルチキャストパケットが、プロセッサiから送信される。
いずれのパケットでも、アドレスレジスタ142を使用することが指定されている。
プロセッサjでは、アドレスレジスタ142の値である0x00001000と最初のパケットに付加されたオフセット0x00001010を加算した0x00002010から、256バイトのデータが書き込まれ、続いて、0x00001000と2番目のパケットに付加されたオフセット0x00001110を加算した0x00002110から、256バイトのデータが書き込まれ、続いて、0x00001000と3番目のパケットに付加されたオフセット0x00001210を加算した0x00002210から、8バイトのデータが書き込まれる。
プロセッサj+1では、アドレスレジスタ142の値である0x00100008と最初のパケットに付加されたオフセット0x00001010を加算した0x00101018から、256バイトのデータが書き込まれ、続いて、0x00100008と2番目のパケットに付加されたオフセット0x00001110を加算した0x00101118から、256バイトのデータが書き込まれ、続いて、0x00100008と3番目のパケットに付加されたオフセット0x00001210を加算した0x00101218から、8バイトのデータが書き込まれる。
図3Dは、プロセッサ0からのマルチキャストパケットが、プロセッサjとプロセッサj+1に到着して、各メモリ112に書き込まれたところを示した説明図である。
プロセッサ0のオフセットは0x00000000であり、データ長が72バイトなので、オフセットが0x00000000でデータ長が72バイトのマルチキャストパケットが、プロセッサ0から送信される。
この場合も、パケットには、アドレスレジスタ142を使用することが指定されている。
プロセッサjでは、アドレスレジスタ142の値である0x00001000とパケットに付加されたオフセット0x00000000を加算した0x00001000から、72バイトのデータが書き込まれる。
プロセッサj+1では、アドレスレジスタ142の値である0x00100008とパケットに付加されたオフセット0x00000000を加算した0x00100008から、72バイトのデータが書き込まれる。
図3Eは、プロセッサi+1からのマルチキャストパケットが、プロセッサjとプロセッサj+1に到着して、各メモリ112に書き込まれたところを示した説明図である。
プロセッサi+1のオフセットは0x00001218であり、データ長が16バイトなので、オフセットが0x00001218でデータ長が16バイトのマルチキャストパケットが、プロセッサi+1から送信される。
この場合も、パケットには、アドレスレジスタ142を使用することが指定されている。
プロセッサjでは、アドレスレジスタ142の値である0x00001000とパケットに付加されたオフセット0x00001218を加算した0x00002218から、16バイトのデータが書き込まれる。
プロセッサj+1では、アドレスレジスタ142の値である0x00100008とパケットに付加されたオフセット0x00001218を加算した0x00101220から、16バイトのデータが書き込まれる。
図3A〜図3Eの説明では、それぞれ1つのプロセッサから送信されたマルチキャストパケットが、プロセッサjとプロセッサj+1の両方に到着した場合を図示しているが、実際は、ネットワークの構成等により、受信するプロセッサによって、到着するマルチキャストパケットの順番が異なる場合がある。到着するマルチキャストパケットの順序が異なっても本実施の形態の効果は変わらない。
本実施の形態によれば、受信装置114は、マルチキャストパケットを、プロセッサ間ネットワーク102を介して受信すると、そのマルチキャストパケットに記載されたオフセットとアドレスレジスタ142内の先頭アドレスとに基づいて、メモリ112における書込み位置を決定し、その書込み位置に、マルチキャストパケットに記載されたデータを格納する。
このため、以下の効果を奏する。
第1の効果は、各プロセッサが行うギャザー処理の送信回数を1回にでき、ギャザーの処理時間に占めるネットワークのレイテンシ分を少なくできることである。例えば、ギャザー処理における並列コンピュータの大規模化による通信のレイテンシの増加の影響を小さくできる。
第2の効果は、ギャザー処理に参加するプロセッサ数が2のべき乗でない場合や、ギャザーするデータサイズがプロセッサごとに異なる場合でも、ギャザーの通信時間が長くならないことである。
第3の効果は、アドレスレジスタを用いたマルチキャストによりギャザー処理を行う場合に、ギャザーに使用するアドレスレジスタの個数を少なくできる。例えば、ギャザーに使用するアドレスレジスタを、参加するプロセッサ数によらず1個にすることが可能になる。
これにより、受信装置内に実装するアドレスレジスタの個数を少なくできる。また、マルチキャストパケットでアドレスレジスタを指定するビットが少なくてすむため、パケットヘッダを小さくできる。さらに、受信側プロセッサで予め設定するアドレスレジスタ数が1個なので、設定時間を短くでき、ギャザー処理のオーバヘッドを小さく抑えられる。
本実施の形態では、マルチキャストパケットに記載されるデータは、複数のプロセッサのすべてに格納されるためのデータである。
この場合、このデータとして、ギャザー処理で用いるデータが用いられると、ギャザー処理を短時間で行うことが可能になる。
本実施の形態では、受信装置114は、マルチキャストパケットをプロセッサ間ネットワーク102を介して受信すると、そのマルチキャストパケットに記載されたオフセットと、そのマルチキャストパケットに記載の指定情報にて指定されたアドレスレジスタ内の先頭アドレスとに基づいて、メモリ112における書込み位置を決定し、その書込み位置に、そのマルチキャストパケットに記載されたデータを格納する。
この場合、マルチキャストを用いたデータ収集に用いるアドレスレジスタを指定することによって、データを収集することが可能になる。
本実施の形態では、CPU111が、予め、データ収集に用いるアドレスレジスタに先頭アドレスを設定する。このため、先頭アドレスの設定を、自動的に行うことが可能になる。
(第2の実施の形態)
図4は、本発明の第2の実施の形態の並列コンピュータのプロセッサを示したブロック図である。図4の中で図1と同じ構成の部分については、図1と同じ番号を振り、その説明は省略する。
第2の実施の形態が第1の実施の形態と異なるのは、1つのプロセッサ101で同時に実行されるユーザタスクが複数あり、タスクごとに複数アドレスレジスタを有するアドレスレジスタテーブル160が、メモリ112上に実現されている点である。
図5は、図4に示したメモリ112上のアドレスレジスタテーブル160の一例を示した説明図である。
この例では、タスクごとに、アドレスレジスタが4個ある場合を示している。また、タスクidが4ビットであり、タスクidが0〜15のいずれかを示す場合を示している。なお、タスク数とタスクごとのアドレスレジスタ数は、他の値をとることができる。
図5に示したアドレスレジスタテーブル160は、図4に示したアドレスレジスタテーブルベースレジスタ145に0x002200000が設定されていて、タスクidレジスタ146に7が設定され、アドレスレジスタ番号レジスタ147に2が設定されている場合の例である。
この場合、アドレスレジスタ番号レジスタ147に設定された番号が付与されているアドレスレジスタが、タスクidレジスタ146に設定されたタスクに対応するマルチキャスト用保持部として用いられる。なお、マルチキャスト用保持部は、一般的に保持手段と呼ぶことができる。
各アドレスレジスタの最下位ビットは、そのアドレスレジスタに有効な値が入っているかどうかを示すバリッドビット(v)である。
もし、読み出したアドレスレジスタのバリッドビットが0の場合は、無効なので、エラーとして処理される。
図6は、第2の実施の形態で使用するパケットの形式の一例を示した説明図である。図6において、図2に示したものと同一のものには同一符号を付してある。
図6に示したパケット600は、マルチキャストパケットとしても使用可能であり、また、シングルキャストパケットとしても使用可能である。なお、パケット600の1ワード目と2ワード目が、パケットヘッダとして用いられる。
パケットタイプ601は、1ビットのタイプ情報と、1ビットのアドレス識別情報と、2ビットのアドレスレジスタ指定情報と、4ビットのタスク指定情報と、を示す。なお、アドレスレジスタ指定情報とタスク指定情報とで、指定情報が構成される。
1ビットのタイプ情報は、パケット600が、シングルキャストパケットか、または、マルチキャストパケットかを示す。
1ビットのアドレス識別情報は、パケットの2ワード目の情報がデスティネーションアドレスであるか、オフセットであるかを示す。
2ビットのアドレスレジスタ指定情報は、アドレスレジスタテーブル160内のアドレスレジスタの番号を示す。
4ビットのタスク指定情報は、タスクidを示す。
その他は、第1の実施の形態の図2のパケット形式と同じである。
図4に戻って、受信装置114には、メモリ112上のアドレスレジスタをキャッシュするためのアドレスレジスタ140〜143がある。
必要に応じて、メモリ112上のアドレスレジスタテーブル160からアドレスレジスタ内の先頭アドレスが読み出されて、アドレスレジスタ140〜143に格納される。
また、受信装置114には、タスクidレジスタ146と、アドレスレジスタ番号レジスタ147が、新たに設けられている。
タスクidレジスタ146は、パケットヘッダに付加されたタスクidを格納する。
アドレスレジスタ番号レジスタ147は、パケットヘッダに付加されたアドレスレジスタ番号を格納する。
また、受信装置114には、アドレスレジスタテーブルベースレジスタ145が、新たに設けられている。
アドレスレジスタテーブルベースレジスタ145は、メモリ112上のアドレスレジスタテーブル160の先頭アドレスを格納する。
アドレスレジスタテーブルベースレジスタ145、タスクidレジスタ146、アドレスレジスタ番号レジスタ147の値を使って、メモリ112上のアドレスレジスタテーブル160からアドレスレジスタの値を読み出すための、メモリアドレスfが生成される。
また、パケットで指定されたタスクidと、アドレスレジスタ番号で指定されるアドレスレジスタとが、アドレスレジスタ140〜143にキャッシュされているかどうかを判断するために、アドレスレジスタ140〜143に対応する、タスクidレジスタ154〜157と、アドレスレジスタ番号レジスタ150〜153とが、設けられている。
そして、タスクidレジスタ154〜157とアドレスレジスタ番号レジスタ150〜153との値と、タスクidレジスタ146とアドレスレジスタ番号レジスタ147との値を、タスクidレジスタ番号比較器158が比較して、比較結果eを、制御回路129に送る。
制御回路129は、比較結果eに基づいて、一致したものがあれば、MUX130を用いて、アドレスレジスタ140〜143の中から、一致したものを選択する。
一致したものがなければ、制御回路129は、メモリ112上のアドレスレジスタテーブル160から、メモリアドレスfを用いて、アドレスレジスタの値を読み出し、その値を、アドレスレジスタ140〜143のうちの1つに格納する。そして、制御回路129は、対応するタスクidレジスタ154〜157とアドレスレジスタ番号150〜153のうちの1つに、タスクidレジスタ146とアドレスレジスタ番号レジスタ147の値を設定する。
本実施の形態によれば、複数のプロセッサのそれぞれは、複数のタスクを並列に実行する。マルチキャスト用保持部として使用されるアドレスレジスタは、タスクごとに設けられている。そして、マルチキャストパケットには、複数のタスクのうちの特定のタスクに対応するアドレスレジスタを指定する情報が記載される。
このため、タスクごとに、ギャザー処理に用いるアドレスレジスタを選択することが可能になる。
(第3の実施の形態)
図7は、本発明の第3の実施の形態の並列コンピュータのプロセッサを示したブロック図である。図7の中で図4と同じ構成の部分については、図4と同じ番号を振り、その説明は省略する。
第3の実施の形態が第2の実施の形態と異なるのは、アドレスレジスタを用いる場合に、パケット中でタスクidが指定されずに、メモリ112上のアドレスレジスタテーブル中のアドレスレジスタを用いることが指定される点である。
これにより、マルチキャストパケットにおいてタスクidが指定されないため、同じマルチキャストパケットを受け取るのは同じタスクidでなければならないという第2の実施の形態の制限がなくなる。
図8は、図7に示したメモリ112上のアドレスレジスタテーブル160の一例を示した説明図である。
この例では、アドレスレジスタが64個ある場合を示している。アドレスレジスタ数は他の値をとることができる。また、各アドレスレジスタは、タスクidと関連づけられている。また、図7に示したアドレスレジスタテーブルベースレジスタ145に0x002200000が設定されていて、アドレスレジスタ番号レジスタ147に34が設定されている場合を示してある。
各アドレスレジスタの最下位ビットは、そのアドレスレジスタに有効な値が入っているかどうかを示すバリッドビット(v)である。もし、読み出したアドレスレジスタのバリッドビットが0の場合は、無効なので、エラーとして処理される。
図9は、第3の実施の形態で使用するパケットの形式の一例を示した説明図である。図9において、図2に示したものと同一のものには同一符号を付してある。
図9に示したパケット900は、マルチキャストパケットとしても使用可能であり、また、シングルキャストパケットとしても使用可能である。なお、パケット900の1ワード目と2ワード目が、パケットヘッダとして用いられる。
パケットタイプ901は、1ビットのタイプ情報と、1ビットのアドレス識別情報と、を示す。
1ビットのタイプ情報は、パケット900が、シングルキャストパケットか、または、マルチキャストパケットかを示す。
1ビットのアドレス識別情報は、パケットの2ワード目の情報がデスティネーションアドレスであるか、オフセットであるかを示す。
パケットタイプ901内の残りの6ビットは、2ワード目をデスティネーションアドレスとして用いる場合は、タスクidを示す、受信装置内のアドレスレジスタを用いる場合は、アドレスレジスタ番号を示す。なお、パケットタイプ901内の残りの6ビットは、指定情報の一例である。
その他は、第2の実施の形態の図6のパケット形式と同じである。
図7に戻って、受信装置114には、メモリ112上のアドレスレジスタをキャッシュするためのアドレスレジスタ140〜143と、タスクidレジスタ154〜157がある。
必要に応じて、メモリ112上のアドレスレジスタテーブル160からアドレスレジスタとタスクidが読み出されて、アドレスレジスタ140〜143とタスクidレジスタ154〜157に格納される。
また、受信装置114には、タスクidレジスタ146が設けられる。
タスクidレジスタ146は、パケットの2ワード目をデスティネーションアドレスとする場合に、パケットヘッダに付加されたタスクidを格納する。
また、受信装置114には、アドレスレジスタ番号レジスタ147が設けられている。
アドレスレジスタ番号レジスタ147は、アドレスレジスタを用いるパケットの場合にパケットヘッダに付加されるアドレスレジスタ番号を格納する。
また、受信装置114には、アドレスレジスタテーブルベースレジスタ145が設けられている。
アドレスレジスタテーブルベースレジスタ145は、メモリ112上のアドレスレジスタテーブル160の先頭アドレスを格納する。
アドレスレジスタテーブルベースレジスタ145、アドレスレジスタ番号レジスタ147の値を使って、メモリ112上のアドレスレジスタテーブル160から、アドレスレジスタ内の先頭アドレスとタスクidの値を読み出すための、メモリアドレスfが生成される。
また、受信装置114には、アドレスレジスタ140〜143に対応するアドレスレジスタ番号レジスタ150〜153が設けられている。
アドレスレジスタ番号レジスタ150〜153は、パケットで指定されたアドレスレジスタ番号で指定されるアドレスレジスタが、アドレスレジスタ140〜143にキャッシュされているかどうかを判断するために使用される。
そして、アドレスレジスタ番号レジスタ150〜153の値とアドレスレジスタ番号レジスタ147との値を、レジスタ番号比較器170が比較して、比較結果eを、制御回路129に送る。
制御回路129は、比較結果eに基づいて、一致したものがあれば、MUX130とMUX171を用いて、アドレスレジスタ140〜143とタスクidレジスタ154〜157の中から、一致したものを選択する。
一致したものがなければ、制御回路129は、メモリ112上のアドレスレジスタテーブル160のメモリアドレスfから、アドレスレジスタの値とタスクidを読み出し、アドレスレジスタ140〜143とタスクidレジスタ154〜157の1つに、それらを格納する。
そして、制御回路129は、対応するアドレスレジスタ番号150〜153の1つに、アドレスレジスタ番号レジスタ147の値を設定する。
図10は、上記各実施の形態のプロセッサを用いて、プロセッサ0〜プロセッサ7の8個のプロセッサがMPI_Allgather()で、それぞれデータD0〜D7をギャザーする場合の動作を説明するための説明図である。
各プロセッサは、プロセッサ0〜7へのマルチキャストパケットで、データを送る。
プロセッサ数をP、各プロセッサから集めるデータサイズをNバイトとすると、上記各実施の形態のプロセッサでは、1回のステップで、1回の通信を行い、各プロセッサがNバイトのデータを送信し、N×Pバイトのデータを受信することになる。
1回の通信にかかるレイテンシをα、1バイトの通信にかかる時間(スループット)をβとすると、通信時間は、α+N×P×βとなる。
図11のRecursive Doublingと比べると、転送するバイト数は少し多いが、通信回数が1回であるため、大規模システムでネットワークのレイテンシが大きい場合には、上記各実施の形態のギャザー方法の方が図11に示したRecursive Doublingよりも有効である。
また、プロセッサ数が2のべき乗でない場合やMPI_Allgatherv()のように各プロセッサが送信するデータ長にばらつきがある場合には、Recursive Doublingの効率が悪くなる。上記各実施の形態は、これらの場合でも効率が悪くならない。
以上説明した各実施形態において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
(産業上の利用可能性)
上記各実施形態は、大規模な並列コンピュータでのギャザー処理を高速に行うプロセッサといった用途に適用できる。
本発明の第1の実施の形態のプロセッサ間通信システムを示したブロック図である。 第1の実施の形態で使用するパケットの形式の一例を示した説明図である。 本発明の第1の実施の形態の並列コンピュータを使ったギャザー処理を示す図である。 本発明の第1の実施の形態の並列コンピュータを使ったギャザー処理を示す図である。 本発明の第1の実施の形態の並列コンピュータを使ったギャザー処理を示す図である。 本発明の第1の実施の形態の並列コンピュータを使ったギャザー処理を示す図である。 本発明の第1の実施の形態の並列コンピュータを使ったギャザー処理を示す図である。 本発明の第2の実施の形態の並列コンピュータのプロセッサを示したブロック図である。 アドレスレジスタテーブル160の一例を示した説明図である。 第2の実施の形態で使用するパケットの形式の一例を示した説明図である。 本発明の第3の実施の形態の並列コンピュータのプロセッサを示したブロック図である。 アドレスレジスタテーブル160の一例を示した説明図である。 第2の実施の形態で使用するパケットの形式の一例を示した説明図である。 各実施の形態でのギャザー処理を説明するための説明図である。 Recursive Doublingを使ったギャザー処理を説明している図である。
符号の説明
101 プロセッサ
101a プロセッサ
102 プロセッサ間ネットワーク
110 バス
111 CPU
112 メモリ
113 送信装置
114 受信装置
120 FIFOメモリ
121 パケットタイプレジスタ
122 パケット長レジスタ
123 デスティネーションアドレスレジスタ
124 書き込みワード数レジスタ
125 ALU
126 ALU
127 ページ変換テーブル
128 書き込みワード数決定回路
129 制御回路
130〜133 MUX
140〜143 アドレスレジスタ
144 書き込みアドレスレジスタ
145 アドレスレジスタテーブルベースレジスタ
146 タスクidレジスタ
147 アドレスレジスタ番号レジスタ
150〜153 アドレスレジスタ番号レジスタ
154〜157 タスクidレジスタ
160 アドレスレジスタテーブル
161 タスクid=iのアドレスレジスタ群
162 タスクid=i+1のアドレスレジスタ群
170 レジスタ番号比較器
171〜172 MUX

Claims (14)

  1. 複数のプロセッサと、前記複数のプロセッサのいずれかからマルチキャストパケットを受信すると、当該マルチキャストパケットを、前記複数のプロセッサのうち当該マルチキャストパケットに宛先として指定された複数のプロセッサに転送する転送装置と、を含むプロセッサ間通信システムであって、
    前記複数のプロセッサのそれぞれは、
    記憶手段と、
    前記記憶手段内の基準書込み位置を示す位置情報を保持する保持手段と、
    前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信手段と、
    送信された前記マルチキャストパケットを、前記転送装置を介して受信すると、当該マルチキャストパケットに記載された調整値と前記保持手段内の位置情報とに基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信手段と、を含む、プロセッサ間通信システム。
  2. 請求項1に記載のプロセッサ間通信システムにおいて、
    前記データは、前記複数のプロセッサのすべてに格納されるデータである、プロセッサ間通信システム。
  3. 請求項1または2に記載のプロセッサ間通信システムにおいて、
    前記複数のプロセッサのそれぞれは、予め、前記保持手段に前記位置情報を設定する制御手段をさらに含む、プロセッサ間通信システム。
  4. 請求項1から3のいずれか1項に記載のプロセッサ間通信システムにおいて、
    前記送信手段は、前記保持手段を指定する指定情報と、前記データと、前記調整値と、が記載されたマルチキャストパケットを、前記転送装置に送信し、
    前記受信手段は、前記送信されたマルチキャストパケットを、前記転送装置を介して受信すると、当該マルチキャストパケットに記載された調整値と、当該マルチキャストパケットに記載の指定情報にて指定された保持手段内の位置情報と、に基づいて、前記書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する、プロセッサ間通信システム。
  5. 請求項4に記載のプロセッサ間通信システムにおいて、
    前記複数のプロセッサのそれぞれは、複数のタスクを並列に実行し、
    前記保持手段は、前記タスクごとに設けられており、
    前記指定情報は、前記複数のタスクのうちの特定のタスクに対応する前記保持手段を指定するものである、プロセッサ間通信システム。
  6. 受信したマルチキャストパケットを複数の送信先に送信するマルチキャスト機能を有する転送装置に他のプロセッサと共に接続されるプロセッサであって、
    記憶手段と、
    前記記憶手段内の基準書込み位置を示す位置情報を保持する保持手段と、
    前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信手段と、
    送信された前記マルチキャストパケットを、前記転送装置を介して受信すると、当該マルチキャストパケットに記載された調整値と前記保持手段内の位置情報とに基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信手段と、を含むプロセッサ。
  7. 請求項6に記載のプロセッサにおいて、
    前記データは、前記複数のプロセッサのすべてに格納されるデータである、プロセッサ。
  8. 自プロセッサ内の記憶手段内の基準書込み位置を示す位置情報を保持する保持手段を個別に有する複数のプロセッサと、前記複数のプロセッサと接続する転送装置と、を含むプロセッサ間通信システムが行うプロセッサ間通信方法であって、
    前記複数のプロセッサのうちの任意の1つのプロセッサが、前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信ステップと、
    前記転送装置が、前記マルチキャストパケットを受信すると、当該マルチキャストパケットを、前記複数のプロセッサのうち当該マルチキャストパケットに宛先として指定された複数のプロセッサに転送する転送ステップと、
    前記マルチキャストパケットに宛先として指定された複数のプロセッサが、前記マルチキャストパケットを受信すると、当該マルチキャストパケットに記載された調整値と、自プロセッサ内の保持手段内の位置情報と、に基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信ステップと、を含むプロセッサ間通信方法。
  9. 請求項8に記載のプロセッサ間通信方法において、
    前記データは、前記複数のプロセッサのすべてに格納されるデータである、プロセッサ間通信方法。
  10. 請求項8または9に記載のプロセッサ間通信方法において、
    前記複数のプロセッサのそれぞれが、予め、前記保持手段に前記位置情報を設定する制御ステップをさらに含む、プロセッサ間通信方法。
  11. 請求項8から10のいずれか1項に記載のプロセッサ間通信方法において、
    前記送信ステップでは、前記保持手段を指定する指定情報と、前記データと、前記調整値と、が記載されたマルチキャストパケットを、前記転送装置に送信し、
    前記受信ステップでは、前記転送装置から前記マルチキャストパケットが受信されると、当該マルチキャストパケットに記載された調整値と、当該マルチキャストパケットに記載の指定情報にて指定された保持手段内の位置情報と、に基づいて、前記書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する、プロセッサ間通信方法。
  12. 請求項11に記載のプロセッサ間通信方法において、
    前記複数のプロセッサのそれぞれは、複数のタスクを並列に実行し、
    前記保持手段は、前記タスクごとに設けられており、
    前記指定情報は、前記複数のタスクのうちの特定のタスクに対応する前記保持手段を指定するものである、プロセッサ間通信方法。
  13. 受信したマルチキャストパケットを複数の送信先に送信するマルチキャスト機能を有する転送装置に他のプロセッサと共に接続されるプロセッサが行う通信方法であって、
    記憶手段内の基準書込み位置を示す位置情報を保持手段に保持する保持ステップと、
    前記基準書込み位置を基準にして自プロセッサ用に予め設定された書込み領域を表した調整値と、データと、が記載されたマルチキャストパケットを、前記転送装置に送信する送信ステップと、
    前記送信されたマルチキャストパケットを、前記転送装置を介して受信すると、当該マルチキャストパケットに記載された調整値と、前記保持手段内の位置情報と、に基づいて、前記記憶手段における書込み位置を決定し、当該書込み位置に、当該マルチキャストパケットに記載されたデータを格納する受信ステップと、を含む通信方法。
  14. 請求項13に記載の通信方法において、
    前記データは、前記複数のプロセッサのすべてに格納されるデータである、通信方法。
JP2008151660A 2008-06-10 2008-06-10 プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法 Pending JP2009301101A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008151660A JP2009301101A (ja) 2008-06-10 2008-06-10 プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法
EP20090158606 EP2133798A1 (en) 2008-06-10 2009-04-23 Inter-processor communication system, processor, inter-processor communication method, and communication method
US12/437,880 US20090307463A1 (en) 2008-06-10 2009-05-08 Inter-processor, communication system, processor, inter-processor communication method, and communication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008151660A JP2009301101A (ja) 2008-06-10 2008-06-10 プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法

Publications (1)

Publication Number Publication Date
JP2009301101A true JP2009301101A (ja) 2009-12-24

Family

ID=40929536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008151660A Pending JP2009301101A (ja) 2008-06-10 2008-06-10 プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法

Country Status (3)

Country Link
US (1) US20090307463A1 (ja)
EP (1) EP2133798A1 (ja)
JP (1) JP2009301101A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019086976A (ja) * 2017-11-06 2019-06-06 富士通株式会社 情報処理システム、演算処理装置及び情報処理システムの制御方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262235B2 (en) * 2011-04-07 2016-02-16 Microsoft Technology Licensing, Llc Messaging interruptible blocking wait with serialization
US9043796B2 (en) 2011-04-07 2015-05-26 Microsoft Technology Licensing, Llc Asynchronous callback driven messaging request completion notification
US20170116154A1 (en) * 2015-10-23 2017-04-27 The Intellisis Corporation Register communication in a network-on-a-chip architecture

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5940744A (ja) * 1982-05-07 1984-03-06 デイジタル・イクイプメント・コ−ポレ−シヨン コンピユ−タ間で直接メモリ対メモリの通信を行なう方法及び装置
JPH06509894A (ja) * 1991-08-16 1994-11-02 スィンキング マシンズ コーポレーション 超並列コンピュータ・システムの入出力構成
JPH09297746A (ja) * 1996-04-30 1997-11-18 Nec Corp プロセッサ間通信方法及びそれに用いるプロセッサ
JPH1097512A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd プロセッサ間データ転送方法及び並列計算機

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4777595A (en) * 1982-05-07 1988-10-11 Digital Equipment Corporation Apparatus for transferring blocks of information from one node to a second node in a computer network
JP3800037B2 (ja) * 2001-06-06 2006-07-19 日本電気株式会社 プロセッサ間通信システム及びそれに用いるプロセッサ間通信方法
US7512721B1 (en) * 2004-05-25 2009-03-31 Qlogic, Corporation Method and apparatus for efficient determination of status from DMA lists
US20070245122A1 (en) * 2006-04-13 2007-10-18 Archer Charles J Executing an Allgather Operation on a Parallel Computer
US20080022079A1 (en) * 2006-07-24 2008-01-24 Archer Charles J Executing an allgather operation with an alltoallv operation in a parallel computer
US8325633B2 (en) * 2007-04-26 2012-12-04 International Business Machines Corporation Remote direct memory access

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5940744A (ja) * 1982-05-07 1984-03-06 デイジタル・イクイプメント・コ−ポレ−シヨン コンピユ−タ間で直接メモリ対メモリの通信を行なう方法及び装置
JPH06509894A (ja) * 1991-08-16 1994-11-02 スィンキング マシンズ コーポレーション 超並列コンピュータ・システムの入出力構成
JPH09297746A (ja) * 1996-04-30 1997-11-18 Nec Corp プロセッサ間通信方法及びそれに用いるプロセッサ
JPH1097512A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd プロセッサ間データ転送方法及び並列計算機

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019086976A (ja) * 2017-11-06 2019-06-06 富士通株式会社 情報処理システム、演算処理装置及び情報処理システムの制御方法

Also Published As

Publication number Publication date
EP2133798A1 (en) 2009-12-16
US20090307463A1 (en) 2009-12-10

Similar Documents

Publication Publication Date Title
TWI416405B (zh) 平行積體電路、物理處理單元和操作積體電路的方法
JP6676027B2 (ja) ネットワークプロセッサにおけるマルチコア相互接続
US8819389B2 (en) Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US8010718B2 (en) Direct memory access in a hybrid computing environment
JP4307508B2 (ja) 異なるキャッシュロケーション長を有するキャッシュにおいてキャッシュコヒーレンシを保持するためのシステム及び方法
US20100192123A1 (en) Software Development For A Hybrid Computing Environment
US20140317221A1 (en) System, computer-implemented method and computer program product for direct communication between hardward accelerators in a computer cluster
US9015380B2 (en) Exchanging message data in a distributed computer system
JP2830833B2 (ja) プロセッサ間通信方法及びそれに用いるプロセッサ
CN111159075A (zh) 数据传输方法和数据传输装置
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
TW200839514A (en) Memory management apparatus
EP1508100B1 (en) Inter-chip processor control plane
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP2009301101A (ja) プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法
US20050091390A1 (en) Speculative method and system for rapid data communications
US9804959B2 (en) In-flight packet processing
US20220263757A1 (en) Information processing apparatus, computer-readable recording medium having stored therein information processing program, and method for processing information
JP6146306B2 (ja) I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法
US8909823B2 (en) Data processing device, chain and method, and corresponding recording medium for dividing a main buffer memory into used space and free space
JP2000330960A (ja) プロセッサ間通信装置
JP5772132B2 (ja) データ転送装置、データ転送方法および情報処理装置
JP2739830B2 (ja) マルチプロセッサシステム用データ通信装置
US20220413890A1 (en) Information processing apparatus, computer-readable recording medium having stored therein information processing program, and method for processing information
EP1163596A1 (en) Methods and apparatus for facilitating direct memory access

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130327

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130716