JP5369775B2 - n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム - Google Patents

n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム Download PDF

Info

Publication number
JP5369775B2
JP5369775B2 JP2009057352A JP2009057352A JP5369775B2 JP 5369775 B2 JP5369775 B2 JP 5369775B2 JP 2009057352 A JP2009057352 A JP 2009057352A JP 2009057352 A JP2009057352 A JP 2009057352A JP 5369775 B2 JP5369775 B2 JP 5369775B2
Authority
JP
Japan
Prior art keywords
data
processor
transfer
dimensional
adjacent
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.)
Expired - Fee Related
Application number
JP2009057352A
Other languages
English (en)
Other versions
JP2010211553A (ja
Inventor
秀実 小松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009057352A priority Critical patent/JP5369775B2/ja
Publication of JP2010211553A publication Critical patent/JP2010211553A/ja
Application granted granted Critical
Publication of JP5369775B2 publication Critical patent/JP5369775B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本件は、n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラムに関し、特にn次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システム、当該n次元トーラス型分散処理システムにおける集団通信方法及び集団通信プログラムに関する。
最近の科学技術計算における高並列の分散処理システムでは、個々の演算器(CPU(プロセッサ))を多数連結し、各CPUに演算とデータを分担させることによって、全体として大規模な演算を高速処理する超並列処理が実行されている。このような分散処理システムでは、各CPUで動作している、処理の実行に寄与するプロセス間のデータ通信の方式として、種々の集団通信方式、例えば、Recursive halvingや、Recursive doubling法が採用されている。これらは、データ通信方式の標準化された規格であるMPI(Message Passing Interface)において定められるReduce_scatter転送やAllgather転送、及びこれらを続けて行うAllreduce転送を実現する。
具体的には、図33に示すように、プロセス1〜プロセス4まで存在する分散処理システムにおいて、各プロセスがその他のプロセスに転送すべきデータを有している場合には、以下のようにしてデータ転送(Reduce_scatter転送)を行う。
まず、図33(a)、図33(b)に点線にて示すように、プロセス1〜4を前半と後半に分けて、前半に属するプロセス(1及び2)からは後半に属するプロセス(3及び4)に自己の有する後半のデータ(添え字「3」、「4」が付されたデータ)を転送する。具体的には、プロセス1からプロセス3に、データA3、A4を転送し、プロセス2からプロセス4に、データB3、B4を転送する。また、後半に属するプロセスからは前半に属するプロセスに自己の有する前半のデータ(添え字「1」、「2」が付されたデータ)を転送する。具体的には、プロセス3からプロセス1に、データC1、C2を転送し、プロセス4からプロセス2に、データD1、D2を転送する。なお、各プロセスでは、受信したデータと、自己が保有していたデータとを加算して(添え字が共通するデータ同士を加算して)保持する。更に、図33(b)、図33(c)に示すように、前半のプロセス1,2間で、転送先のプロセス番号と一致するデータを転送しあうとともに、後半のプロセス3,4間で、転送先のプロセス番号と一致するデータを転送しあう。
一方、図34に示すように、プロセス1〜4まで存在する分散処理システムにおいて、各プロセスが、自己が演算したデータ(A〜D)をそれぞれ有している場合に、そのデータを全プロセスに共有させるには、以下のデータ転送(Allgather転送)を行う。
まず、図34(a)、図34(b)に示すように、プロセス1とプロセス2との間、プロセス3とプロセス4との間で、自己が保有するデータを転送しあう。次いで、図34(b)、図34(c)に点線にて示すように、プロセス1〜4を前半と後半に分け、前半に属するプロセスからは後半に属するプロセスに自己の有するデータすべてを転送する。また、後半に属するプロセスからは前半に属するプロセスに自己の有するデータすべてを転送する。
これら図33,図34の転送方式は、他の転送方式に比べて転送の回数および総転送量が少なくて済むという利点を有する。なお、その他の転送方法としては、特許文献1のような方法が提案されている。
特開平11−345220号公報 特開平6−124270号公報
最近では、分散処理システムにおける計算能力の向上を図るため、プロセスを数万個といった規模で多数連結するシステムが出現してきている。この種のシステムでは、隣接するプロセス間及び両端に位置するプロセス間を連結する方式のネットワーク、すなわちトーラス型のネットワークが比較的多く採用される。
このようなトーラス型のネットワークを採用した場合、データの転送方法として図33や図34の方法を用いると、隣接するプロセス以外の遠方のプロセスへの直接の転送が発生するため、複数の転送データ間で衝突が生じ、効率的でない。なお、特許文献2に記載の技術は隣接するプロセスにおけるデータ転送に関するものではあるが、転送アルゴリズムの改善策に関するものではない。
そこで本発明は上記の課題に鑑みてなされたものであり、少ない手順でプロセッサ間のデータ転送を実現可能なn次元トーラス型分散処理システム、集団通信方法及び集団通信プログラムを提供することを目的とする。
一つの態様では、n次元トーラス型分散処理システムは、n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムであって、各プロセッサは、前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して行う第1通信を実行し、前記第1通信の後に、前記各プロセッサは、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が前記第1通信実行後に所持していたデータの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を含む第2通信を実行するn次元トーラス型分散処理システムである。
一つの態様では、n次元トーラス型分散処理システムは、n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムであって、各プロセッサは、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を実行し、前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されるn次元トーラス型分散処理システムである。
一つの態様では、n次元トーラス型分散処理システムは、n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムであって、各プロセッサは、前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して実行するn次元トーラス型分散処理システムである。
ここで、「隣接するプロセッサ」とは、トーラス型ネットワーク内で通信可能なプロセッサを意味する。すなわち、トーラス型ネットワークでは、実際に隣接するプロセッサ同士のほか、ある方向の両端に位置するプロセッサ同士も通信可能とされているので、これら両端に位置するプロセッサ同士も「隣接するプロセッサ」であるといえる。
一つの態様では、集団通信方法は、n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムにおける集団通信方法であって、各プロセッサが、前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して行う第1通信を実行する工程と、前記第1通信の後に、前記各プロセッサが、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が前記第1通信実行後に所持していたデータの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を含む第2通信を実行する工程と、を含む集団通信方法である。
一つの態様では、集団通信方法は、n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムにおける集団通信方法であって、各プロセッサが、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送工程と、前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送工程後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送工程と、含み、前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定する集団通信方法である。
一つの態様では、集団通信方法は、n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムにおける集団通信方法であって、各プロセッサが、前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して実行する工程を含む集団通信方法である。
一つの態様では、集団通信プログラムは、n次元トーラス型分散処理システムに属するn次元(nは2以上)方向に配列された複数のプロセッサに、前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、を前記複数のプロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して行う第1通信を実行させ、前記第1通信の後に、前記複数のプロセッサに、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が前記第1通信実行後に所持していたデータの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を含む第2通信を実行させる集団通信プログラムである。
一つの態様では、集団通信プログラムは、n次元トーラス型分散処理システムに属するn次元(nは2以上)方向に配列された複数のプロセッサに、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送工程、及び前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送工程後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送工程、を実行させ、前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されている集団通信プログラムである。
一つの態様では、集団通信プログラムは、n次元トーラス型分散処理システムに属するn次元(nは2以上)方向に配列された複数のプロセッサに、前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、を前記複数のプロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して実行させる集団通信プログラムである。
本明細書に記載のn次元トーラス型分散処理システム、集団通信方法及び集団通信プログラムは、少ない手順でプロセッサ間のデータ転送を実現できるという効果を奏する。
第1の実施形態に係る2次元トーラス型分散処理システムの構成を概略的に示す図である。 図1のシステムの処理内容を示すフローチャートである。 図3(a)は、各プロセスにおける演算処理結果を示す図であり、図3(b)は、第1の実施形態における隣接プロセスへのデータ転送手順を示す図(その1)である。 図4(a)、図4(b)は、第1の実施形態における隣接プロセスへのデータ転送手順を示す図(その2、その3)である。 図5(a)、図5(b)は、第1の実施形態における隣接プロセスへのデータ転送手順を示す図(その4、その5)である。 図6(a)、図6(b)は、第1の実施形態における隣接プロセスへのデータ転送手順を示す図(その6、その7)である。 図7(a)、図7(b)は、第1の実施形態における隣接プロセスへのデータ転送手順を示す図(その8、その9)である。 図8(a)、図8(b)は、第1の実施形態における隣接プロセスへのデータ転送手順を示す図(その10、その11)である。 図9(a)、図9(b)は、第1の実施形態における隣接プロセスへのデータ転送手順を示す図(その12、その13)である。 図9(a)のデータを纏めた状態を示す図である。 第1の実施形態の変形例に係る3次元トーラス型分散処理システムの構成を概略的に示す図である。 図11のシステムにおける隣接プロセスへのデータ転送手順を示す図(その1)である。 図11のシステムにおける隣接プロセスへのデータ転送手順を示す図(その2)である。 第1の実施形態の変形例に係る4次元トーラス型分散処理システムの構成を概略的に示す図である。 第2の実施形態に係る2次元トーラス型分散処理システムの構成を概略的に示す図である。 図15のシステムの処理内容を示すフローチャートである。 各プロセスにおける演算処理結果を示す図である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その1)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その2)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その3)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その4)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その5)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その6)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その7)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その8)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その9)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その10)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その11)である。 第2の実施形態における隣接プロセスへのデータ転送手順を示す図(その12)である。 図29を簡略化して示す図である。 第2の実施形態のデータ転送を実行した後において各プロセスが所持するデータを示す図である。 第2実施形態の比較例を示す図である。 従来のデータ転送方法を示す図(その1)である。 従来のデータ転送方法を示す図(その2)である。
≪第1の実施形態≫
以下、n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラムの第1の実施形態について、図1〜図10に基づいて詳細に説明する。
図1には、本第1の実施形態に係る2次元トーラス型分散処理システム100の構成が概略的に示されている。この図1に示すように、2次元トーラス型分散処理システム100は、プロセスが動作する複数(ここでは、25個)のCPU(プロセッサ)11〜15、21〜25、31〜35、41〜45、51〜55を有しており、第1方向及び第2方向に隣接するプロセッサ間においてデータ通信可能とされている。また、システム100では、第1方向及び第2方向の両端に位置するプロセッサ間においてもデータ通信が可能とされている。なお、本実施形態では、各CPU(プロセッサ)においてそれぞれ動作している「プロセス」が処理を実行するので、本実施形態では、CPU(プロセッサ)11〜55を、「プロセス11〜55」と表記するものとする。
なお、本第1の実施形態では、第2方向に関して隣接するプロセス間の転送速度が、第1方向に関して隣接するプロセス間の転送速度よりも速いものとする。
以下、図1のシステム100におけるデータ演算及び転送に関する手順について、図2のフローチャートに沿って説明する。なお、図2の処理を実現するためのプログラムは、当該プログラムを記録する記録媒体(ディスク)から1つのプロセスに含まれるメモリに展開された後、全プロセスに組み込まれるものである。
まず、図2のステップS10では、各プロセスにおいて所定の演算処理を実行する。この演算処理により得られた結果が図3に模式的に示されている。なお、図3以降では、各プロセス間の接続線の図示を省略している。
本第1の実施形態では、図3(a)に示すように、プロセス11の演算処理結果がデータAであり、プロセス12の演算処理結果がデータBであり、…、プロセス55の演算処理結果がデータYであるものとする。なお、ステップS10以降に行われるデータ転送処理では、図10に示すように、図3(a)において各プロセスが保持していたデータを、全プロセスに行き渡らせる(Allgather転送)。
次のステップS12では、各プロセスが、第1方向の一側(ここでは、図1における右側)に隣接するプロセスに対して、自己の所持するデータを一斉に転送する(図3(b)参照)。なお、最右端に位置するプロセス15〜55は、自己の所持するデータを最左端に位置するプロセス11〜51に転送する。このステップS12の処理により、各プロセスは、図4(a)に示すように、データを2つずつ所持することになる。
次いで、ステップS14では、各プロセスが、第1方向の一側(ここでは、図1における右側)に隣接するプロセスに対して、新たに受け取ったデータを一斉に転送する。すなわち、図4(b)に下線を付して示すデータを、隣接するプロセスに転送する。この転送後の状態が、図5(a)に示されている。
次いで、ステップS16では、各プロセスが、第1方向の全てのデータを受け取ったか否かを判断する。この判断は、例えば、各プロセスが所持するデータ数が、第1方向に配列されたプロセス数と一致した場合に肯定され、データ数が、第1方向に配列されたプロセス数よりも少ない場合に否定される。なお、図5(a)の段階では、各プロセスが、第1方向の全てのデータを受け取っていないので、ステップS16の判断は否定され、ステップS14に戻る。
その後、ステップS14を2度繰り返し、図5(b)の状態を経て、図6(a)の状態となった段階で、ステップS16の判断が肯定される。なお、図6(a)の状態は、図6(b)のように表すことができ、この状態では、第1方向に並ぶプロセスそれぞれが、共通のデータを所持している。
次のステップS18では、各プロセスが、第2方向の一側(ここでは、図1等における下側)に隣接するプロセスに対して、自己の所持するデータ(5プロセス分のデータ)を一斉に転送する(図7(a)参照)。なお、最下端に位置するプロセス51〜55は、自己の所持するデータを最上端に位置するプロセス11〜15に転送する。このステップS18の処理により、各プロセスは、図7(b)に示すようなデータを所持することになる。
次いで、ステップS20では、各プロセスが、第2方向の一側(ここでは、図1等における下側)に隣接するプロセスに対して、新たに受け取ったデータ(5プロセス分のデータ)を一斉に転送する。すなわち、図8(a)に下線を付して示すデータを、隣接するプロセスに転送する。この転送後の状態が、図8(b)に示されている。
次いで、ステップS22では、各プロセスが、第2方向の全てのデータを受け取ったか否かを判断する。この判断は、例えば、各プロセスが所持するデータ数が、第1方向及び第2方向に配列されたプロセスの合計(ここでは25)と一致した場合に肯定され、データ数がプロセスの合計よりも小さい場合に否定される。なお、この図8(b)の段階では、各プロセスが、全てのデータを受け取っていないので、ステップS22の判断は否定され、ステップS20に戻る。
その後、ステップS20を2度繰り返し、図9(a)の状態を経て、図9(b)の状態となった段階で、ステップS22の判断が肯定され、図2の全処理を終了する。なお、図9(b)の状態は、図10のように表すことができる。この状態では、全プロセスが元々有していたデータの全て(データA〜Y)を、各プロセスが所持していることになる。
ここで、本第1の実施形態では、第1方向に1プロセス分のデータを4回送り、第2方向に5プロセス分のデータを4回送ることで全てのデータ転送が完了する。したがって、25個のプロセスを有するシステムにおける最小限の転送量である24(=1×4+5×4)プロセス分のデータを、8回のデータ転送により送ることができることになる。
以上、詳細に説明したように、本第1の実施形態によると、2次元方向に配列された複数のプロセス11〜55が、自己が所持するデータの少なくとも一部を第1方向に隣接するプロセスに順次転送して、自己が予め所持していたデータ(演算結果)を、第1方向に並ぶプロセスの全てに所持させ、第1方向の転送が終了した後、自己が所持するデータの少なくとも一部を、第2方向に隣接するプロセスに順次転送して、第1方向へのデータ転送処理の後に自己が所持していたデータを、第2方向に並ぶプロセスの全てに所持させる。このように、全プロセスが同時に実行する隣接転送を行うことにより、システム上(又はネットワーク上)におけるデータの衝突を無くすことができる。これにより、データの衝突による待ち時間が発生しないことから、転送時間、転送回数を少なくすることが可能である。
また、本第1の実施形態の集団通信方法(データ転送方法)を用いれば、プロセスの第1方向に関するプロセス数及び第2方向に関するプロセス数を任意に設定しても、問題なくデータ転送を行うことができる。これにより、プロセス数が例えば2のべき乗などに限定されることがないので、システム設計を簡易に行うことが可能である。すなわち、プロセス数は上記第1の実施形態で説明した5×5である場合に限られるものではなく、プロセス数としては、任意の数を採用することが可能である。
また、本第1の実施形態では、第1方向のデータ転送又は第2方向のデータ転送において、各プロセスが所持しているデータを第1方向又は第2方向に隣接するプロセスに転送する処理(ステップS12又はS18)と、新たに受信したデータを第1方向又は第2方向に隣接するプロセスに転送する処理(ステップS14又はS20)と、を実行するので、簡易な方法で、各プロセスの演算結果を全プロセスに所持させること(Allgather転送)が可能である。
また、本第1の実施形態では、第2方向に関して隣接するプロセス間の転送速度が第1方向に関して隣接するプロセス間の転送速度よりも速く、第1方向のデータ転送を第2方向のデータ転送よりも先に実行することとしているので、転送速度の遅い方向に少ないデータ(1プロセス分のデータ)を転送し、転送速度の速い方向に多いデータ(5プロセス分のデータ)を転送することにより、効率的なデータ転送が可能である。ただし、これに限られるものではなく、図1の上下方向を第1方向に設定し、左右方向を第2方向に設定することとしても良い。
なお、上記第1の実施形態では、n次元トーラス型分散処理システムが2次元トーラス型分散処理システムである場合について説明したが、これに限らず、3次元以上のトーラス型分散処理システムであっても良い。
図11には、3次元トーラス型分散処理システム100’が模式的に示されている。なお、図11では3×3×3の3次元トーラス型分散処理システムを図示している。この図11に示すように、下から1層目のプロセスは、データA1、B1、…I1をそれぞれ有し、下から2層目のプロセスは、データA2、B2、…I2をそれぞれ有し、下から3層目のプロセスは、データA3、B3、…I3をそれぞれ有している。このシステム100’では、各層において、上記第1の実施形態と同様に、第1方向及び第2方向へのデータ転送を行う。これにより、図12に示すように、下から1層目のプロセスの全てが、データA1〜I1を所持することになり、下から2層目のプロセスの全てが、データA2〜I2を所持することになり、下から3層目のプロセスの全てが、データA3〜I3を所持することになる。
また、図12の状態から、第3方向(紙面上下方向)に隣接するプロセスに対し、上記第1の実施形態と同様に、データを転送することにより、図13に示すように、3次元トーラス型分散処理システム100’を構成する全てのプロセスが、全てのデータA1〜I3を所持することができるようになる。
なお、図14に示すように、3次元トーラス型分散処理システム100’と同様の3次元トーラス型分散処理システム100”を更に備える、4次元トーラス型分散システム100’においても、同様のデータ転送により、全プロセスにデータを行き渡らせることができる。具体的には、各システム100’、100”内で、図11〜図13と同様に、各プロセスにデータを行き渡らせた後、システム100’と100”の対応するプロセス(システム内における位置が同一のプロセス)にデータを転送しあえば良い。
なお、2次元〜4次元トーラス型分散処理システムに限らず、5次元、6次元…トーラス型分散処理システムでも、同様のデータ転送により、全プロセスに全データを所持させることが可能である。
なお、3次元、4次元…トーラス型分散処理システムにおいても、転送速度が遅い方向には、早い段階(転送データ量が少ない段階)で少ないデータを送り、転送速度が速い方向には、1度に大量のデータを送るようにすることが好ましい。
≪第2の実施形態≫
次に、n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラムの第2の実施形態について、図15〜図31に基づいて詳細に説明する。
図15には、本第2の実施形態に係る2次元トーラス型分散処理システム200の構成が概略的に示されている。図15に示すように、2次元トーラス型分散処理システム200は、複数(ここでは、25個)のプロセス11〜15、21〜25、31〜35、41〜45、51〜55を有しており、第1方向及び第2方向に隣接するプロセス間においてデータ通信可能とされている。また、システム200では、第1方向及び第2方向の両端に位置するプロセス間においてもデータ通信が可能とされている。
なお、本第2の実施形態においては、図15の上下方向が第1方向であり、左右方向が第2方向であるものとする。また、第1方向に関して隣接するプロセス間の転送速度が、第2方向に関して隣接するプロセス間の転送速度よりも速いものとする。
以下、図15のシステム200におけるデータ演算及び転送に関する手順について、図16のフローチャートに沿って説明する。なお、図16の処理を実現するためのプログラムは、当該プログラムを記録する記録媒体(ディスク)から1つのプロセスに含まれるメモリに展開された後、全プロセスに組み込まれるものである。
まず、図16のステップS110では、各プロセスにおいて所定の演算処理を実行する。この演算処理により得られた結果が図17に模式的に示されている。
図17に示すように、プロセス11では、演算処理の結果、データA11〜A15、A21〜A25、A31〜A35、A41〜A45、A51〜A55(以下、簡単のため、「データA11〜A55」のように記述する)が得られ、プロセス12では、演算処理の結果、データB11〜B55が得られ、…、プロセス55では、演算処理の結果、データY11〜Y55が得られる。なお、以降で行われるデータ転送では、図31に示すように、プロセス11にデータ<A11〜Y11>、プロセス12にデータ<A12〜Y12>、…、プロセス54にデータ<A54〜Y54>、プロセス55にデータ<A55〜Y55>を所持させるように、データのやりとりを行う(Reduce_scatter転送)。なお、本第2の実施形態における「データ<A11〜Y11>」という表記は、データA11、B11、…、X11、Y11の全てを加算した1つの合算データを意味する。
次のステップS111では、各プロセスが、方向を示すパラメータmを1に設定するとともに、加算回数カウンタkを0に設定する。
次のステップS112では、各プロセスが、第m方向(ここでは、第1方向(図15の上下方向))に隣接するプロセス(ここでは、下方向に隣接するプロセスであるものとする)に対して、転送目標のプロセスに送るべきデータを転送する。なお、この場合の転送目標のプロセスとは、例えば、自己から下側に2プロセス離れた位置に存在するプロセスであるものとする。すなわち、例えば、プロセス11の転送目標のプロセスはプロセス31であり、プロセス21の転送目標のプロセスはプロセス41であり、プロセス31の転送目標のプロセスはプロセス51である。また、プロセス41の転送目標のプロセスは1つ下側のプロセス51の更に下側にプロセスが無いので、最上段のプロセス11となる。また、プロセス51の転送目標のプロセスは、プロセス21である。その他のプロセスについても同様に、転送目標プロセスが設定されている。
したがって、ステップS112では、プロセス11、21,31,41,51のみを取り出して示す図18のように、プロセス11が、プロセス31に送るべきデータ(太線枠で囲んだデータA31〜A35)を隣接するプロセス21に転送する。また、プロセス11の上記転送とほぼ同時に、プロセス21が、プロセス41に送るべきデータ(太線枠で囲んだデータF41〜F45)を隣接するプロセス31に転送し、プロセス31が、プロセス51に送るべきデータ(太線枠で囲んだデータK51〜K55)を隣接するプロセス41に転送し、プロセス41が、プロセス11に送るべきデータ(太線枠で囲んだデータP11〜P15)を隣接するプロセス51に転送し、プロセス51が、プロセス21に送るべきデータ(太線枠で囲んだデータU21〜U25)を隣接するプロセス11に転送する。なお、図18に示されていないその他の列のプロセス(プロセス12、13…)も、同様のデータ転送をほぼ一斉に行う。
次いで、ステップS114では、各プロセスが、新たに受け取ったデータと、このデータに対応する自己が元々所持していたデータ、すなわち新たに受け取ったデータの番号と一致する番号を有するデータと、を加算(合算)する。
具体的には、プロセス11では、図19においてハッチングを付した領域に存在するデータ同士、データA21とデータU21とを加算し1つのデータとする。また、データA22とU22、データA23とU23,データA24とU24データA25とU25についても加算し、それぞれ1つのデータとする。その他のプロセスにおいても同様の加算処理を行う。
次いで、ステップS115では、各プロセスが、加算回数カウンタkを1インクリメントして(ここではk=1にして)、ステップS116に移行する。
次いで、ステップS116では、各プロセスが、直前に加算したデータの番号の中に、自己のプロセスの番号と一致する番号が存在するか否かを判断する。ここでは、プロセス11が加算したデータの中に、番号「11」を含むデータはなく、その他のプロセスにおいても同様であるので、ここでの判断は否定され、ステップS118に移行する。
ステップS118では、各プロセスが、ステップS114にて加算したデータを第1方向の一側(下側)に隣接するプロセスにほぼ同時に転送する。具体的には、図20に示すように、各プロセスが、太線枠で囲んだデータを下側に隣接するプロセスに転送する。なお、図20では、ステップS118のデータ転送直後の状態が示されている。そして、次のステップS114では、新たに受け取ったデータと、このデータに対応するデータ(図20においてハッチングを付した領域内にあるデータ)を加算する。
次いで、ステップS115では、各プロセスが、kを1インクリメント(k=2)し、ステップS116において、直前に加算したデータの番号の中に、自己のプロセスの番号と一致する番号が存在するか否かを判断する。ここでは、図20に示すように、プロセス11が加算したデータの中に、番号「11」を含むデータがあり、その他のプロセスにおいても同様であるので、ここでの判断は肯定され、ステップS120に移行する。
次のステップS120では、各プロセスが、kの値を参照し、kが第1方向に並ぶプロセス数(ここでは5)から1を引いた回数(ここでは4回)と一致するか否かを判断する。現段階では、k=2であるので、判断は否定され、ステップS122に移行する。
ステップS122では、各プロセスが、次の転送目標のプロセスを設定するとともに、データの転送方向を変更(下方向から上方向へ反転)する。ここでは、次の転送目標のプロセスを、前に設定されていた転送目標のプロセスの1つ下側、具体的には自己の2つ上側に位置するプロセスに設定するものとする。すなわち、プロセス51の転送目標のプロセスはプロセス31であり、プロセス41の転送目標のプロセスはプロセス21であり、プロセス31の転送目標のプロセスはプロセス11であり、プロセス21の転送目標のプロセスは1つ上側のプロセス11の更に上側にプロセスが無いので、最下段のプロセス51であり、プロセス11の転送目標のプロセスはプロセス41である。その他の列のプロセスにおいても、同様に転送目標のプロセスが設定される。
次いで、ステップS112では、各プロセスが、第1方向の上側に隣接するプロセスに対して、転送目標のプロセスに送るべきデータをほぼ同時に転送する。具体的には、図21に示すように、プロセス51が、プロセス31に送るべきデータ(太線枠で囲んだデータU31〜U35)をプロセス41に転送する。また、これとほぼ同時に、プロセス41が、プロセス21に送るべきデータ(太線枠で囲んだデータP21〜P25)を隣接するプロセス31に転送し、プロセス31が、プロセス11に送るべきデータ(太線枠で囲んだデータK11〜K15)を隣接するプロセス21に転送し、プロセス21が、プロセス51に送るべきデータ(太線枠で囲んだデータF51〜F55)を隣接するプロセス11に転送し、プロセス11が、プロセス41に送るべきデータ(太線枠で囲んだデータA41〜A45)をプロセス51に転送する。なお、その他の列のプロセスにおいても、同様の転送が行われる。
次いで、ステップS114では、各プロセスが、新たに受け取ったデータと、このデータに対応するデータ(番号が合致するデータ)を加算する。すなわち、プロセス11では、図21においてハッチングを付した領域に存在するデータ同士、データA51とU51、データA52とU52、データA53とU53、データA54とU54、データA55とU55とを加算し、それぞれ1つの合算データとする。なお、その他のプロセスにおいても同様の加算処理を行う。
次いで、ステップS115では、各プロセスが、kを1インクリメント(k=3)し、ステップS116において、直前に加算したデータの番号の中に、自己のプロセスの番号と一致する番号が存在するか否かを判断する。ここでは、図21に示すように、プロセス11が加算したデータの中に、番号「11」を含むデータがなく、その他のプロセスにおいても同様であるので、ここでの判断は否定され、ステップS118に移行する。
ステップS118では、各プロセスが、ステップS114において加算したデータを第1方向上側に隣接するプロセスに転送する。具体的には、各プロセスが、図22において太線枠で囲んだデータを上側に隣接するプロセスに転送する。なお、図22では、ステップS118のデータ転送後の状態が示されている。そして、次のステップS114では、新たに受け取ったデータと、このデータに対応するデータ(図22においてハッチングを付した領域内に存在するデータ)を加算する。
上記処理の結果、図22に示すように、プロセス11は、データA11、F11、K11、P11、U11の合算データ<A11、F11、K11、P11、U11>を含むデータを所持することになる。また、プロセス21は、データA21、F21、K21、P21、U21の合算データ<A21、F21、K21、P21、U21>を含むデータを所持し、…、プロセス51は、データA51、F51、K51、P51、U51の合算データ<A51、F51、K51、P51、U51>を含むデータを所持することになる。
次いで、ステップS115ではkを1インクリメント(k=4)し、ステップS116において、直前に加算したデータの番号の中に、自己のプロセスの番号と一致する番号が存在するか否かを判断する。ここでは、図22に示すように、プロセス11が加算したデータの中に、番号「11」を含むデータがあり、その他のプロセスにおいても同様であるので、ここでの判断は肯定され、ステップS120に移行する。
次のステップS120では、各プロセスが、kの値を参照し、kが第1方向に並ぶプロセス数(ここでは5)から1を引いた回数(ここでは4回)と一致するか否かを判断する。現段階では、k=4であるので、判断は肯定され、ステップS124に移行する。
次のステップS124では、m=nであるか、すなわち、n次元方向の全ての方向にデータを転送したか否かを判断する。本実施形態では、nが2であるのに対し、ここでは、m=1であるので判断は否定される。次いで、ステップS126では、各プロセスが、mを1インクリメントし、次のステップS128においてkを0に設定した後、ステップS112に戻る。
これ以降は、第2方向に関するデータ転送が実行される。なお、第2方向に関するデータ転送を開始する前の段階では、プロセス11〜15を取り出して示す図23のように、各プロセスが5つのデータを加算したデータを5つずつ所持している。
次のステップS112では、各プロセスが、転送目標のプロセスに送るべきデータを第2方向(ここでは右側)に隣接するプロセスに転送する。なお、ここでの転送目標のプロセスとしては、自己のプロセスから2プロセスだけ右側に位置するプロセスが設定されるものとする。すなわち、ステップS112では、図24において太線枠で囲まれたデータを、図25に示すように右隣のプロセスに送信する。次いで、ステップS114では、各プロセスが、新たに受け取ったデータと、このデータに対応するデータとを加算する。具体的には、図25にハッチングを付して示す領域内に属するデータを加算する。
次のステップS115では、各プロセスがkを1インクリメント(k=1)し、ステップS116では、直前に加算したデータの番号の中に、自己のプロセスの番号と一致する番号が存在するか否かを判断する。ここでは、図25に示すように、プロセス11が加算したデータの中に、番号「11」を含むデータがなく、その他のプロセスにおいても同様であるので、判断は否定され、ステップS118に移行する。
次いで、ステップS118では、各プロセスが、ステップS114において加算したデータを右隣のプロセスに転送する。具体的には、各プロセスが、図26において太線枠で囲んだデータを図27に示すように右隣のプロセスに転送する。そして、次のステップS114では、新たに受け取ったデータと、このデータに対応するデータ(図27においてハッチングを付した領域内に存在するデータ)を加算する。
次いで、ステップS115において、各プロセスが、kを1インクリメント(k=2)すると、次のステップS116では、直前に加算したデータの番号の中に、自己のプロセスの番号と一致する番号が存在するか否かを判断する。ここでは、図27に示すように、プロセス11が加算したデータの中に、番号「11」を含むデータがあり、その他のプロセスにおいても同様であるので、判断は肯定され、ステップS120に移行する。
次いで、ステップS120では、各プロセスが、kの値を参照し、kが第2方向に並ぶプロセス数(ここでは5)から1を引いた回数(ここでは4回)と一致するか否かを判断する。現段階では、k=2であるので、判断は否定され、ステップS122に移行する。
次のステップS122では、各プロセスが、次の転送目標のプロセスを設定するとともに、データの転送方向を変更(右方向から左方向へ反転)する。ここでは、次の転送目標のプロセスを、前に設定されていた転送目標のプロセスの1つ右側、具体的には自己の2つ左側に位置するプロセスに設定するものとする。すなわち、プロセス15の転送目標のプロセスがプロセス13、プロセス14の転送目標のプロセスがプロセス12、プロセス13の転送目標のプロセスがプロセス11に設定される。また、プロセス12の転送目標のプロセスは、1つ左側のプロセス11の更に左側にプロセスが無いので、右端のプロセス15が設定され、プロセス11の転送目標のプロセスは、プロセス14に設定される。その他の行のプロセスにおいても、同様に転送目標のプロセスが設定される。
その後は、図28に示すように、各プロセスが、転送目標のプロセスに送るべきデータを左隣のプロセスに送り(ステップS112)、新たに受け取ったデータと、このデータに対応するデータとを加算、すなわち図28のハッチング領域内のデータを加算し(ステップS114)、kを3にする(ステップS115)。また、直前に加算したデータを図29に示すように更に左隣のプロセスに転送し(ステップS118)、当該転送したデータと、このデータに対応するデータとを加算し(ステップS114)、kを4にする(ステップS115)。このような処理を行うことにより、図30に示すように、プロセス11がA11〜Y11までの合算データ<A11〜Y11>を所持し、プロセス12がA12〜Y12までの合算データ<A12〜Y12>を所持し、…プロセス15がA15〜Y15までの合算データ<A15〜Y15>を所持することになる。また、図31に示すように、システム200全体においても、各プロセスがプロセス番号xxに対応した合算データ<Axx〜Yxx>を所持することになる。
以上の処理が終了すると、各パラメータは、k=4、m=2となっており、nは2であるので、ステップS116の判断、ステップS120の判断、及びステップS124の判断の全てが肯定され、図16の全処理が終了する。
ここで、本第2の実施形態では、第1方向に5プロセス分のデータを下側2回(図18、図20)、上側2回(図21、図22)の計4回送り、第2方向に1プロセス分のデータを右側に2回(図25、図27)、左側に2回(図28、図29)の計4回送ることで全てのプロセスxxに合算データ<Axx〜Yxx>を所持させることができる。したがって、25個のプロセスを有するシステムにおける最小限の転送量である24(=5×4+1×4)プロセス分のデータを、8回のデータ転送により送ることができることになる。
図32には、4×4の2次元トーラス型分散処理システム300において、従来から行われているReduce_scatter転送を実施した場合の例(比較例)が示されている。
この図32に示されている比較例では、隣接するトーラス型のシステム(ネットワーク)上で、Reduce_scatter転送(図33参照)を実施するため、一点鎖線で示されるシステムの上半分と下半分とを超えたデータ転送が必要となる。しかしながら、この場合には、プロセス11と31との間や、プロセス21と41との間が、直接接続されていないため、符号(1)で示すデータ転送を行っている間は、符合(2)で示すデータ転送を行えないことになる。すなわち、比較例の場合には、データ衝突による待機時間が発生し、データ転送時間が2倍になる。これに対し、本第2の実施形態では、全プロセスが同時に実行する隣接転送のみを行うので、データの衝突は生じない。
以上、詳細に説明したように、本第2の実施形態によると、2次元方向に配列された複数のプロセス11〜55が、自己が所持するデータの少なくとも一部を、第1方向に隣接するプロセスに順次転送し、自己が予め所持していたデータ(演算結果)を、第1方向に並ぶプロセスの全てに所持させ、第1方向の転送が終了した後、自己が所持するデータの少なくとも一部を、第2方向に隣接するプロセスに順次転送して、第1方向へのデータ転送処理の後に自己が所持していたデータを、第2方向に並ぶプロセスの全てに所持させるので、全プロセスが同時に実行する隣接転送により、システム上におけるデータの衝突を無くすことができる。これにより、データの衝突による待ち時間が発生しないことから、転送時間、転送回数を少なくすることが可能である。
また、本第2の実施形態によると、各プロセスが他の全てのプロセスに転送すべきデータを所持している状態から、転送目標に対して転送するデータを、隣接するプロセスに転送するとともに、当該データを受信した隣接するプロセスが、受信したデータとこれに対応するデータとを加算して、隣接するプロセスに転送するので、簡易な方法により、2次元トーラス型分散処理システムにおけるReduce_scatter転送を実現することができる。
また、本第2の実施形態によると、プロセスの第1方向に関するプロセス数及び第2方向に関するプロセス数を任意に設定しても、問題なくデータ転送を行うことができる。これにより、プロセス数が例えば2のべき乗などに限定されることがないので、システム設計を簡易に行うことが可能である。すなわち、プロセス数は上記第2の実施形態で説明した5×5である場合に限られるものではなく、プロセス数としては、任意の数を採用することが可能である。
また、本第2の実施形態では、第1方向に関して隣接するプロセス間の転送速度が第2方向に関して隣接するプロセス間の転送速度よりも速く、第1方向のデータ転送を第2方向のデータ転送よりも先に実行することとしているので、転送速度の速い方向に多いデータ(5プロセス分のデータ)を転送し、転送速度の遅い方向に少ないデータ(1プロセス分のデータ)を転送することにより、効率的なデータ転送が可能である。ただし、これに限られるものではなく、図15の左右方向を第1方向に設定し、上下方向を第2方向に設定することとしても良い。
なお、上記第2の実施形態では、転送目標のプロセスを、自己よりもプロセス2つ分離れた位置にあるプロセスに設定する場合について説明したが、これに限られるものではなく、任意のプロセスを設定することができる。例えば、自己のプロセスから4つ離れたプロセスを転送目標のプロセスに設定した場合、図16のステップS112〜ステップS116を4回繰り返すことで、第m方向に関するデータ転送の全てが完了し、ステップS120が肯定されることになる。この場合、ステップS122を省略することができる。また、例えば、最初の転送目標のプロセスを第1方向の下側に隣接するプロセスに設定し、次の転送目標のプロセスを第1方向の上側に3プロセス分だけ離れた位置にあるプロセスを設定するようにしても良い。この場合でも、図16の処理手順により、問題なくデータ転送を行うことができる。
なお、上記第2の実施形態では、n次元トーラス型分散処理システムが2次元トーラス型分散処理システムである場合について説明したが、これに限られるものではない。例えば、3次元トーラス型分散処理システムにも適用可能である。具体的には、例えば、5×5×5の計125個のプロセスを有する3次元トーラス型分散処理システムの場合には、各プロセスが演算結果として125個のデータを有している。この場合、上記第2実施形態と同様の手順により、第1方向に25プロセス分のデータを計4回、第2方向に5プロセス分のデータを計4回、第3方向に1プロセス分のデータを計4回転送(及び加算)すれば、全てのプロセスに対して、データを125個合算した合算データを所持させることができるようになる。したがって、125個のプロセスを有するシステムにおける最小限の転送量である124(=25×4+5×4+1×4)プロセス分のデータを、12回のデータ転送により送ることができることになる。
なお、4次元以上のトーラス型分散処理システムにおいても、上記と同様のデータ転送を適用することが可能である。なお、3次元以上のトーラス型分散処理システムにおいても、方向別の転送順を、各方向の転送速度に基づいて決定することが好ましい。
なお、上記各実施形態では、図2や図16の処理をシステム内に存在する全プロセスに実行させるプログラムを、全プロセスに組み込む場合について説明したが、これに限られるものではない。例えば、システム内において、全プロセスを統括制御するコントローラが存在する場合には、図2や図16の処理を全プロセスに実行させるためのプログラムを、コントローラのみに組み込むこととしても良い。また、システム内のプロセスの1つが、コントローラの役割を果たすこととしても良い。
なお、上記においては、各実施形態を別々に実施する態様について説明したが、これに限らず、第1の実施形態及び第2の実施形態を連続的に実施することとしても良い。この場合、Allreduce転送と全く等価な転送を行うことができる。
上述した各実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1)n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムであって、前記各プロセッサは、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を実行することを特徴とするn次元トーラス型分散処理システム。
(付記2)前記n次元方向のそれぞれに配列されるプロセッサは、任意の数であることを特徴とする付記1に記載のn次元トーラス型分散処理システム。
(付記3)前記第1、第2データ転送処理では、前記各プロセッサは、自己が所持しているデータを隣接するプロセッサに転送する第1転送と、新たに転送されてきたデータを、前記隣接するプロセッサに転送する第2転送と、を実行することを特徴とする付記1又は2に記載のn次元トーラス型分散処理システム。
(付記4)前記各プロセッサは、他の全てのプロセッサそれぞれに転送する必要のあるデータを所持しており、前記第1、第2データ転送処理では、前記各プロセッサが、自己から前記一方向側又は他方向側に存在する任意の目標プロセッサに向けて転送する必要のある目標データを、前記目標プロセッサに近づく方向において隣接するプロセッサに転送する第1転送と、前記目標データを受信したプロセッサが、当該目標データと、自己が有する前記目標プロセッサに対して転送する必要のあるデータとを加算した新たな目標データを、前記目標プロセッサに近づく方向において隣接するプロセッサに転送する第2転送と、を実行することを特徴とする付記1又は2に記載のn次元トーラス型分散処理システム。
(付記5)前記各プロセッサは、前記第2データ転送処理を、前記他方向を異ならせつつ(n−1)回繰り返すことを特徴とする付記1〜4のいずれかに記載のn次元トーラス型分散処理システム。
(付記6)前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定することを特徴とする付記1〜5のいずれかに記載のn次元トーラス型分散処理システム。
(付記7)n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムにおける集団通信方法であって、
前記各プロセッサが、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送工程と、
前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送工程後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送工程と、を含む集団通信方法。
(付記8)前記n次元方向のそれぞれに配列されるプロセッサは、任意の数であることを特徴とする付記7に記載の集団通信方法。
(付記9)前記第1、第2データ転送工程では、前記各プロセッサは、自己が所持しているデータを隣接するプロセッサに転送する第1転送と、新たに転送されてきたデータを、前記隣接するプロセッサに転送する第2転送と、を実行することを特徴とする付記7又は8に記載の集団通信方法。
(付記10)前記各プロセッサは、他の全てのプロセッサそれぞれに転送する必要のあるデータを所持しており、前記第1、第2データ転送工程では、前記各プロセッサが、自己から前記一方向側又は他方向側に存在する任意の目標プロセッサに向けて転送する必要のある目標データを、前記目標プロセッサに近づく方向において隣接するプロセッサに転送する第1転送と、前記目標データを受信したプロセッサが、当該目標データと、自己が有する前記目標プロセッサに対して転送する必要のあるデータとを加算した新たな目標データを、前記目標プロセッサに近づく方向において隣接するプロセッサに転送する第2転送と、を実行することを特徴とする付記7又は8に記載の集団通信方法。
(付記11)前記第2データ転送工程は、前記他方向を異ならせつつ(n−1)回繰り返されることを特徴とする付記7〜10のいずれかに記載の集団通信方法。
(付記12)前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されることを特徴とする付記7〜11のいずれかに記載の集団通信方法。
(付記13)n次元トーラス型分散処理システムに属するn次元(nは2以上)方向に配列された複数のプロセッサに、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送工程、及び前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送工程後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送工程、を実行させることを特徴とする集団通信プログラム。
(付記14)前記n次元方向のそれぞれに配列されるプロセッサは、任意の数であることを特徴とする付記13に記載の集団通信プログラム。
(付記15)前記第1、第2データ転送工程は、前記各プロセッサに、自己が所持しているデータを隣接するプロセッサに転送させる第1転送と、新たに転送されてきたデータを、前記隣接するプロセッサに転送させる第2転送と、を含むことを特徴とする付記13又は14に記載の集団通信プログラム。
(付記16)前記各プロセッサは、他の全てのプロセッサそれぞれに転送する必要のあるデータを所持しており、前記第1、第2データ転送工程は、前記各プロセッサに、自己から前記一方向側又は他方向側に存在する任意の目標プロセッサに向けて転送する必要のある目標データを、前記目標プロセッサに近づく方向において隣接するプロセッサに転送させる第1転送と、前記目標データを受信したプロセッサに、当該目標データと、自己が有する前記目標プロセッサに対して転送する必要のあるデータとを加算した新たな目標データを、前記目標プロセッサに近づく方向において隣接するプロセッサに転送させる第2転送と、を含むことを特徴とする付記13又は14に記載の集団通信プログラム。
(付記17)前記第2データ転送工程を、前記各プロセッサに、前記他方向を異ならせつつ(n−1)回実行させることを特徴とする付記13〜16のいずれかに記載の集団通信プログラム。
(付記18)前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されることを特徴とする付記13〜17のいずれかに記載の集団通信プログラム。
11〜55 プロセス(プロセッサ)
100 2次元トーラス型分散処理システム
200 2次元トーラス型分散処理システム

Claims (13)

  1. n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムであって、
    各プロセッサは、
    前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、
    隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、
    を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して行う第1通信を実行し、
    前記第1通信の後に、前記各プロセッサは、
    自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が前記第1通信実行後に所持していたデータの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、
    前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を含む第2通信を実行することを特徴とするn次元トーラス型分散処理システム。
  2. n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムであって、
    各プロセッサは、
    自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、
    前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を実行し、
    前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されることを特徴とするn次元トーラス型分散処理システム。
  3. 前記n次元方向のそれぞれに配列されるプロセッサは、任意の数であることを特徴とする請求項1又は2に記載のn次元トーラス型分散処理システム。
  4. 前記第1、第2データ転送処理では、
    前記各プロセッサは、自己が所持しているデータを隣接するプロセッサに転送する第1転送と、新たに転送されてきたデータを、前記隣接するプロセッサに転送する第2転送と、を実行することを特徴とする請求項1〜3のいずれか一項に記載のn次元トーラス型分散処理システム。
  5. 前記各プロセッサは、前記第2データ転送処理を、前記他方向を異ならせつつ(n−1)回繰り返すことを特徴とする請求項1〜4のいずれか一項に記載のn次元トーラス型分散処理システム。
  6. n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムであって、
    各プロセッサは、
    前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、
    隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、
    を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して実行することを特徴とするn次元トーラス型分散処理システム。
  7. 前記n次元方向それぞれの処理順は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されることを特徴とする請求項に記載のn次元トーラス型分散処理システム。
  8. n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムにおける集団通信方法であって、
    各プロセッサが、
    前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、
    隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、
    を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して行う第1通信を実行する工程と、
    前記第1通信の後に、前記各プロセッサが、
    自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が前記第1通信実行後に所持していたデータの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、
    前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を含む第2通信を実行する工程と、を含む集団通信方法。
  9. n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムにおける集団通信方法であって、
    各プロセッサが、自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送工程と、
    前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送工程後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送工程と、含み、
    前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されていることを特徴とする集団通信方法。
  10. n次元(nは2以上)方向に配列された複数のプロセッサを有するn次元トーラス型分散処理システムにおける集団通信方法であって、
    各プロセッサが、
    前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、
    隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、
    を前記各プロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して実行する工程を含む集団通信方法。
  11. n次元トーラス型分散処理システムに属するn次元(nは2以上)方向に配列された複数のプロセッサに、
    前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、
    隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、
    を前記複数のプロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して行う第1通信を実行させ、
    前記第1通信の後に、前記複数のプロセッサに、
    自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が前記第1通信実行後に所持していたデータの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送処理と、
    前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送処理の後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送処理と、を含む第2通信を実行させることを特徴とする集団通信プログラム。
  12. n次元トーラス型分散処理システムに属するn次元(nは2以上)方向に配列された複数のプロセッサに、
    自己が所持するデータの少なくとも一部を、前記n次元方向のうちの一方向に隣接するプロセッサに順次転送して、自己が予め所持していた元データの少なくとも一部を、前記一方向に並ぶプロセッサの全てに所持させる第1データ転送工程、及び
    前記n次元方向のうちの他方向に隣接するプロセッサに、自己が所持しているデータの少なくとも一部を順次転送して、直前に行われたデータ転送工程後に自己が所持していたデータの少なくとも一部を、前記他方向に並ぶプロセッサの全てに所持させる第2データ転送工程、を実行させ、
    前記一方向及び前記他方向は、前記n次元方向それぞれにおける前記データの転送可能速度に応じて決定されていることを特徴とする集団通信プログラム。
  13. n次元トーラス型分散処理システムに属するn次元(nは2以上)方向に配列された複数のプロセッサに、
    前記n次元方向のうちの一方向一側に所定数分離れた位置に存在するプロセッサを転送目標のプロセッサと定め、自己が所有するデータのうち前記転送目標のプロセッサに対して転送すべきデータを前記一方向一側に隣接するプロセッサに転送する第1処理と、
    隣接するプロセッサから新たに転送されてきたデータに、自己が所有する対応するデータを加算し、加算後のデータを前記一方向一側に隣接するプロセッサに転送する処理を、前記隣接するプロセッサから自己を転送目標とするデータが送信されてくるまで繰り返す第2処理と、
    を前記複数のプロセッサに自己を転送目標とする全データが転送されてくるまで、前記転送目標のプロセッサ及びデータを転送する向きを変更しつつ繰り返す処理を、前記n次元方向全てに関して実行させる集団通信プログラム。
JP2009057352A 2009-03-11 2009-03-11 n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム Expired - Fee Related JP5369775B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009057352A JP5369775B2 (ja) 2009-03-11 2009-03-11 n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009057352A JP5369775B2 (ja) 2009-03-11 2009-03-11 n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム

Publications (2)

Publication Number Publication Date
JP2010211553A JP2010211553A (ja) 2010-09-24
JP5369775B2 true JP5369775B2 (ja) 2013-12-18

Family

ID=42971628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009057352A Expired - Fee Related JP5369775B2 (ja) 2009-03-11 2009-03-11 n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム

Country Status (1)

Country Link
JP (1) JP5369775B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5540609B2 (ja) 2009-09-01 2014-07-02 富士通株式会社 並列計算システムおよび通信制御プログラム
JP5644566B2 (ja) * 2011-02-09 2014-12-24 富士通株式会社 計算システム、構成管理装置および構成管理プログラム
JP6874564B2 (ja) 2017-06-27 2021-05-19 富士通株式会社 情報処理システム、管理装置及びプログラム
JP6911619B2 (ja) 2017-08-02 2021-07-28 富士通株式会社 情報処理システム及び情報処理方法
JP7087953B2 (ja) * 2018-11-22 2022-06-21 富士通株式会社 情報処理システム及び情報処理システムの制御方法
US10956357B2 (en) * 2019-04-01 2021-03-23 International Business Machines Corporation Method for flexible, fast all-reduce on arbitrary tree topology

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100592752B1 (ko) * 2001-02-24 2006-06-26 인터내셔널 비지네스 머신즈 코포레이션 토러스 및 트리 네트워크에서의 산술 기능
JP5056844B2 (ja) * 2007-03-20 2012-10-24 富士通株式会社 一意情報集団通信プログラム、計算ノード、および一意情報集団通信方法

Also Published As

Publication number Publication date
JP2010211553A (ja) 2010-09-24

Similar Documents

Publication Publication Date Title
JP5369775B2 (ja) n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム
Norrie et al. The design process for Google's training chips: TPUv2 and TPUv3
CN107807819B (zh) 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
KR20180107869A (ko) 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법
US7574466B2 (en) Method for finding global extrema of a set of shorts distributed across an array of parallel processing elements
CN112840356A (zh) 运算加速器、处理方法及相关设备
CN111858465B (zh) 大规模矩阵qr分解并行计算系统
CN113469355B (zh) 分布式系统中的多模型训练管道
CN108320018B (zh) 一种人工神经网络运算的装置及方法
US11948352B2 (en) Speculative training using partial gradients update
CN109840154A (zh) 一种移动云环境下基于任务依赖的计算迁移方法
KR20220015813A (ko) 딥러닝 연산 수행 방법 및 장치
CN111630505A (zh) 深度学习加速器系统及其方法
Liu et al. WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs
WO2023130656A1 (zh) 一种异构多节点互联拓扑生成方法和存储介质
KR20220095532A (ko) 네트워크 환경에서의 디바이스와 서버 간의 인공지능 처리 기능 분할방법
CN111738276A (zh) 基于多核卷积神经网络的图像处理方法、装置及设备
JP2022074011A (ja) ディープラーニング演算実行方法及び電子装置
CN108399105B (zh) 一种基于改进头脑风暴算法的软硬件划分方法
US20230052942A1 (en) Movement of tensor data during reshape operation
CN112732436A (zh) 一种多核处理器-单图形处理器的深度强化学习加速方法
Castelló et al. Theoretical scalability analysis of distributed deep convolutional neural networks
Ma et al. FPGA-based AI smart NICs for scalable distributed AI training systems
CN110020727B (zh) 一种基于mpi多进程的单量子逻辑门实现方法
KR102373802B1 (ko) 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130808

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130902

R150 Certificate of patent or registration of utility model

Ref document number: 5369775

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees