Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP3703304B2 - Data transfer method between nodes and data transfer method between computers - Google Patents
[go: Go Back, main page]

JP3703304B2 - Data transfer method between nodes and data transfer method between computers - Google Patents

Data transfer method between nodes and data transfer method between computers Download PDF

Info

Publication number
JP3703304B2
JP3703304B2 JP16928398A JP16928398A JP3703304B2 JP 3703304 B2 JP3703304 B2 JP 3703304B2 JP 16928398 A JP16928398 A JP 16928398A JP 16928398 A JP16928398 A JP 16928398A JP 3703304 B2 JP3703304 B2 JP 3703304B2
Authority
JP
Japan
Prior art keywords
memory
data
transfer
transferred
memories
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
JP16928398A
Other languages
Japanese (ja)
Other versions
JPH11345220A (en
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.)
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 JP16928398A priority Critical patent/JP3703304B2/en
Publication of JPH11345220A publication Critical patent/JPH11345220A/en
Application granted granted Critical
Publication of JP3703304B2 publication Critical patent/JP3703304B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、メモリが多数ある計算機システムにおけるデータ転送方式に関し、ネットワークの効果的な利用方法に関する。
【0002】
【従来の技術】
従来の技術として、従来の通信方式技術と、従来のネットワークハードウェア技術を説明する。
通信方式技術並びにネットワークハードウェアに関する参照文献として、奥川峻史著「並列計算機アーキテクチャ」(コロナ社)、中澤喜三郎著「計算機アーキテクチャと構成方法」(朝倉書店)がある。
従来の通信方式技術として、片側通信(図2)、相互通信(図3)、放送型通信(図4から図13)などがあった。片側通信は片側転送とも、相互通信は相互転送とも、放送型通信は放送型転送とも呼ぶことにする。
【0003】
片側通信とは、一方のメモリにあるデータをもう一方のメモリ上に転送する通信方式である。
図2のように、あるメモリ(201)からもう一つのメモリ(201)へ、データ(203)を転送(204)させる通信方式である。
PING-PONG通信、POINT-TO-PINT通信、PIER-TO-PIER通信などとも呼ばれている。
【0004】
相互通信とは、二つのメモリにあるデータを同時に互いに転送しあう通信方式である。
図3のように、あるメモリ(301)ともう一つのメモリ(302)にそれぞれあるデータ(303)とデータ(304)をそれぞれ互いに、しかも同時に送り合う(305)(306)通信方式である。EXCHANGE通信とも呼ばれている。
相互通信は、片側通信を逐次に各々の方向から行うことでも構成できる。即ち、まず転送(305)を行ってから、転送(306)を行う。
もしも二つのメモリの間の転送用の経路が一つしかなければ、片側通信を逐次に行うしか方法がない。
【0005】
しかし、SR2201(日立製作所)など代表的な並列計算機では、二つ以上の経路を持つものが多い。これは、二つ以上のハードウェアの実装を行なってもコストがあまりかからないからである。
そこで、一度に双方向でデータを転送する相互通信を用いると、片側通信を逐次に行うよりも、単位時間当たりにより多くのデータを転送できる。
従って、できる限り相互通信を使ってデータの転送を行うと、より効率の高いデータの転送ができるようになる。
【0006】
放送型通信とは、ある一つのメモリにあるデータを、他の全てのメモリにあるようにする通信方式である。BROADCAST(ブロードキャスト)通信とも呼ばれている。
一種類のデータをブロードキャストする場合は、片側通信のみで構成され、回数はlog(メモリ数)である。
これは、Recursive Broadcast Algorithm (参考文献;R. Ponnusamy:Scheduling Regular and Irregular Communications Patterns on the CM-5:Supercomputing '92)と呼ばれている。
【0007】
この方式について、図4から図8を用いて具体的に説明する。
まず、図4が転送前の状況であるとする。
使用するメモリが(401)(402)(403)(404)の合計4つあるとする。そのうちメモリ(401)にデータ(405)があるとする。このデータを残りのメモリ(402)(403)(404)にあるように転送を行うのである。
【0008】
図5は第一回目の転送を示す。
4つのメモリ(501)(502)(503)(504)のうち、メモリ(501)からメモリ(502)にデータ(505)を転送(506)する。
図6は第一回目の転送後を示す。
4つのメモリ(601)(602)(603)(604)のうち、データ(605)がメモリ(601)に、データ(606)がメモリ(602)にあるようになった。
【0009】
図7は第二回目の転送を示す。
4つのメモリ(701)(702)(703)(704)においてデータ(705)をメモリ(701)からメモリ(703)へ転送(706)し、それと同時にデータ(707)をメモリ(702)からメモリ(704)へ転送(708)する。
図8は転送が終了した状況を示す。
4つのメモリ(801)(802)(803)(804)に、それぞれデータ(805)(806)(807)(808)がある。
以上が、Recursive Broadcast Algorithmと呼ばれる、片側通信から構成されるブロードキャストの具体例であった。
【0010】
ここで後の説明でデータの種類数が増えた時のために上記の転送方式を表の形式にしたものを説明する。
図9から図13がそれにあたる。
図4から図8で説明したデータが、データD(2)であったとする。
図9はデータD(2)がメモリM(1)にあり、メモリM(1)以外のどのメモリ上にもなく、その他のデータはどのメモリ上にもない、という状況を示す。
図9は図4に対応する。図4のデータ(405)が、図9のデータD(2)にあたるとする。
図4のメモリ(401)は図9のメモリM(1)に、図4のメモリ(402)は図9のメモリM(2)に、図4のメモリ(403)は図9のメモリM(3)に、図4のメモリ(404)は図9のメモリM(4)に対応する。
【0011】
図10は図5に対応する。
図5のメモリ(501)は図10のメモリM(1)に、図5のメモリ(502)は図10のメモリM(2)に、図5のメモリ(503)は図10のメモリM(3)に、図5のメモリ(504)は図10のメモリM(4)に対応する。
図5のデータ(505)が、図10のデータD(2)にあたるとする。図5の転送(506)は、図10の転送(1001)に対応する。
【0012】
図11は図6に対応する。
【0013】
図6のメモリ(601)は図11のメモリM(1)に、図6のメモリ(602)は図11のメモリM(2)に、図6のメモリ(603)は図11のメモリM(3)に、図6のメモリ(604)は図11のメモリM(4)に対応する。
図6のデータ(605)が、図11のメモリM(1)にあるデータD(2)にあたるとする。
図6のデータ(606)が、図11のメモリM(2)にあるデータD(2)にあたるとする。
【0014】
図12は図7に対応する。
図7のメモリ(701)は図12のメモリM(1)に、図7のメモリ(702)は図12のメモリM(2)に、図7のメモリ(703)は図12のメモリM(3)に、図7のメモリ(704)は図12のメモリM(4)に対応する。
図7のデータ(705)が、図12のメモリM(1)にあるデータD(2)にあたるとする。
図7のデータ(707)が、図12のメモリM(2)にあるデータD(2)にあたるとする。
図7の転送(706)は、図12の転送(1201)に対応する。図7の転送(708)は、図12の転送(1202)に対応する。
【0015】
図13は図8に対応する。
【0016】
図8のメモリ(801)は図13のメモリM(1)に、図8のメモリ(802)は図13のメモリM(2)に、図8のメモリ(803)は図13のメモリM(3)に、図8のメモリ(804)は図13のメモリM(4)に対応する。
図8のデータ(805)が、図13のメモリM(1)にあるデータD(2)にあたるとする。
図8のデータ(806)が、図13のメモリM(2)にあるデータD(2)にあたるとする。
図8のデータ(807)が、図13のメモリM(3)にあるデータD(2)にあたるとする。
図8のデータ(808)が、図13のメモリM(4)にあるデータD(2)にあたるとする。
以上で転送方式を表の形式にしたものの説明を終わる。
これで、従来の通信方式技術の説明を終わる。
【0017】
次に、従来のネットワークハードウェア技術を説明する。
ハイパクロスバーネットワーク、トーラス型ネットワークが代表的なものとしてある。
ハイパクロスバネットワークは並列計算機SR2201(日立製作所)において採用されており、トーラス型ネットワークは他の並列計算機において採用されている。
特に、ハイパクロスバネットワークを採用している並列計算機SR2201では、任意のメモリ間の転送速度がほぼ同じであり、また、仮想的な一次元アドレスの隣に送る転送などの等方転送の場合、完全に衝突が起きないため、転送速度の劣化はおこらず、常に一定の性能で通信することができる(参考文献 藤井ら著「Architecture and Performance of the Hitachi SR2201 Massively Parallel Processor System」 in Proceedings of the 11th International Parallel Processing Symposium、Geneva、Switzerland、April 1-5、1997)。
従って、どの等方な相互転送もメモリが重ならなければ、一定の転送速度である、というモデルの元、最適な通信を構築できるようになっている。
なお、任意のメモリ間の転送速度がほぼ同じであり、また、どの等方な相互転送もメモリが重ならなければ、一定の転送速度である通信を実現する上で、NIA(Network Interface Adapter)と、SC(Storage Controller)という技術が重要な役割を果たしている。
【0018】
【発明が解決しようとする課題】
ネットワークに接続された任意の2つのメモリ間での転送性能が同じであり、相互通信における単位時間当たりの転送量が、片側通信における単位時間当たりの転送量よりも大きい、という条件を満たす計算機システムにおいて、次のようなデータ転送を最短の時間で行う方法を構築することを考察する。
そのデータ転送とは、(1)使用する全メモリの数N(M)が2のべき乗である、(2)データの種類N(D)が、使用する全メモリの数N(M)の約数であって、かつ1とN(M)ではない、(3)N(D)種類のデータは全部同じデータ量である、(4)N(D)種類のデータはそれぞれ異なるメモリ上にある、という4つの条件の元、N(D)種類のデータ全部がN(M)個のすべてのメモリにあるようにデータ転送するものをいう。
複数のデータが異なるメモリにある場合、巧く同時にデータを転送することで、通信経路が競合しないように、かつ最適な回数で全メモリにデータを送信する技術が明確ではなかった。
【0019】
S.L.Johnsonnらの「Optimum Broadcasting and Personalized Communication in Hypercubes」(IEEE Transactions on Computers Vol.38, No.9, Sept. 1989)では、ハミング距離に基づいた最適な転送方式が検討されているが、扱っているネットワークモデルが古いものであり、上記の計算機システムには適用できない。
また、上記の一般的なデータ転送に対する適用もできない。
富士通の堀江らによる「トーラスネットワークにおける最適全対全通信」(並列処理シンポジウムJSPP92)(対応特許:特開平5-151181)では、トーラスネットワークモデルを前提にしており、上記の計算機システムには適用できない。
また、上記の一般的なデータ転送に対する適用もできない。
【0020】
一つのデータをブロードキャストして、それからもう一つのデータをブロードキャストしていくという方式では、データの種類が増えると転送時間が多くかかってしまい、全体の性能に関して大きな悪影響を及ぼしていた。
メモリの台数を増やして大規模な計算を行う場合では、特に転送にかかる時間が長いと全体の性能に大きく影響を及ぼすことがよく知られており、データ転送の効率化が強く求められている。
しかし、どのような転送方式が有効か、最適な方式はどのように構成されるかが明らかになっていなかった。
本発明の目的は、転送すべき全部のデータが全部のメモリ上にあるようにするデータ転送を最小の時間で実行する最適なデータ転送方法を提供することにある。
【0021】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、
ノード間でデータの片側転送と相互転送ができ且つ個々にメモリを有するM個(但し、Mは2のべき乗数)のノードを有するネットワークおいて、D個(但し、1<D<Mで、DはMの約数)のノードのメモリ中の各データを他の全てのノードに転送するノード間データ転送方法であって、
前記ノード間での前記各データの転送は、(log(M/D))回の片側転送を行った後、(logD/log2)回の相互転送を行うようにしている。
【0022】
また、計算機間でデータの片側転送と相互転送ができ且つ個々にメモリを有するM個(但し、Mは2のべき乗数)の計算機をネットワークにより接続した並列計算機において、D個(但し、1<D<Mで、DはMの約数)の計算機のメモリ中の各データを他の全ての計算機に転送する計算機間データ転送方法であって、 前記計算機間での前記各データの転送は、(log(M/D))回の片側転送を行った後、(logD/log2)回の相互転送を行うようにしている。
【0023】
【発明の実施の形態】
本発明は、ネットワークにより接続された複数のノード間におけるデータの転送に関する発明であり、まず、各ノードが備えるべき構成上の特徴について説明する。
図14は、ネットワーク上の転送経路により接続された2つのノードを示す。
各ノード1404、1410は、それぞれプロセッサ1411、1412とメモリ上に格納されたデータ1403、1409を有する。
そして、ノード間の転送として双方向のデータ転送と片側方向のデータ転送を行うことができるように、各ノードは双方向のデータ転送を同時に行えるように転送経路が2重になっており、転送経路1405、1406を有する。
さらに、各ノードは出力口1401、1408と入力口1402、1407を有するようにしている。
2つのノード間でのデータ転送は、片側方向のデータ転送(以下、片側転送という)の場合は、ノード1404のデータ1403はプロセッサ1411からの命令を受け出力口1401から転送経路1405、入力口1407を通りノード1410へ、あるいはノード1410のデータ1409はプロセッサ1412からの命令を受け出力口1408から転送経路1406、入力口1402を通りノード1404へと、一方の転送経路のみを用いて転送される。
双方向のデータ転送(以下、相互転送という)の場合は、ノード1404のデータ1403はプロセッサ1411からの命令を受け出力口1401から転送経路1405、入力口1407を通りノード1410へ、同時にノード1410のデータ1409はプロセッサ1412からの命令を受け出力口1408から転送経路1406、入力口1402を通りノード1404へと、両方の転送経路を用いて転送される。
【0024】
次に、本発明が適用されるシステムの一例である並列計算機について説明する。
図15は、図14で示したデータ転送の形態を製品として実現している一例である並列計算機の転送ハードウェアの特徴を示した図である。
1501〜1504はクロスバー、1505、1507、1509、1511スイッチ、1506、1508、1510、1512はノード(計算機)である。各ノードは、図14に示した出力口、入力口を有し双方向のデータ転送ができるノードである。
ノード1506とノード1510の相互転送は、相互転送の可能な転送経路であるクロスバー1501と、そのクロスバーに入出力が同時に可能なスイッチ1505とスイッチ1509、さらに、それらのスイッチはそれぞれノード1505と1509に同時に入出力が可能な構成となっていることによって実現されている。
また、ノード1508とノード1512の相互転送は、相互転送の可能な転送経路であるクロスバー1502と、そのクロスバーに入出力が同時に可能なスイッチ1507とスイッチ1511、さらに、それらのスイッチはそれぞれノード1508と1512に同時に入出力が可能な構成となっていることによって実現されている。
また、ノード1506とノード1508の相互転送もクロスバー1503とスイッチ1505とスイッチ1507によって同様に行われ、ノード1510とノード1512の相互転送もクロスバー1504とスイッチ1509とスイッチ1511によって同様に行われる。
【0025】
次に、本発明が適用されるシステムの他の一例である並列データベースについて説明する。
図18は、並列データベースの構成例を示す。
図15と同様に、スイッチ1805、1807、1809、1811と、クロスバー1801、1802、1803、1804からなるネットワーク構成をもつ。
ディスク1806と1808に例えば、商品データがあり、全部のディスク1806、1808、1810、1812に例えば、売上データがある場合、商品データを全部のディスク1806、1808、1810、1812に転送して商品IDごとのデータをサーチする場合がある。この時に商品データを転送する方式として本発明が適用される。
図16は、上記商品データの例であり、商品ID、商品名など商品そのものに関するデータが表としてまとめられている。
図17は、上記売上データの例であり、伝票ID、商品IDおよび商品が売られた日時など売上に関するデータが表としてまとめられている。
これらの2つのデータから、どんな製品がいつ売られたかを検索するシステムがあり、データが大量にある時、データは複数のディスクに分けて格納される。
このような場合に、並列データベースが適用される。
【0026】
次に、並列計算機におけるデータ転送に本発明を適用した具体例について説明する。なお、並列計算機に限られるものではない。
すなわち、それぞれメモリを有する16台の計算機からなる並列計算機の場合について説明する。なお、以下の説明では、メモリを主体にして説明する。
図19に示すように、16台のメモリの内、4台のメモリにそれぞれ異なる同じ大きさのデータがあるとき、すなわち、メモリM(1)〜メモリM(16)のうち、メモリM(9)にはデータD(1)が、メモリM(10)にはデータD(2)が、メモリM(11)にはデータD(3)が、メモリM(12)にはデータD(4)がある場合に、データ全てがすべてのメモリにあるように転送する。
すなわち、データD(1)、データD(2)、データD(3)、データD(4)が、メモリM(1)〜メモリM(16)にあるようにデータ転送する時、最適なデータ転送方法について具体的に説明する。
【0027】
まず、本発明のデータ転送方法を適用した場合、すなわち、最初に片側転送を2回、その後に相互転送(双方向のデータ転送)を2回する場合について説明する。
図19から図27によって説明する。
図19は転送前の状況を表す。
データD(1)はメモリM(9)に、データD(2)はメモリM(10)に、データD(3)はメモリM(11)に、データD(4)はメモリM(12)にある。
【0028】
図20は第一回目の転送を表す。
メモリM(9)にあるデータD(1)をメモリM(1)に片側転送(10201)し、
メモリM(10)にあるデータD(2)をメモリM(2)に片側転送(10202)し、
メモリM(11)にあるデータD(3)をメモリM(3)に片側転送(10203)し、
メモリM(12)にあるデータD(4)をメモリM(4)に片側転送(10204)する。
【0029】
図21は第一回目の転送後の状況を表す。
データD(1)はメモリM(9)とメモリM(1)にあり、
データD(2)はメモリM(10)とメモリM(2)にあり、
データD(3)はメモリM(11)とメモリM(3)にあり、
データD(4)はメモリM(12)とメモリM(4)にある。
【0030】
図22は第二回目の転送を表す。
メモリM(1)にあるデータD(1)をメモリM(5)に片側転送(10401)し、
メモリM(2)にあるデータD(2)をメモリM(6)に片側転送(10402)し、
メモリM(3)にあるデータD(3)をメモリM(7)に片側転送(10403)し、
メモリM(4)にあるデータD(4)をメモリM(8)に片側転送(10404)し、
メモリM(9)にあるデータD(1)をメモリM(13)に片側転送(10405)し、
メモリM(10)にあるデータD(2)をメモリM(14)に片側転送(10406)し、
メモリM(11)にあるデータD(3)をメモリM(15)に片側転送(10407)し、
メモリM(12)にあるデータD(4)をメモリM(16)に片側転送(10408)する。
【0031】
図23は第二回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(5)とメモリM(9)とメモリM(13)にあり、
データD(2)はメモリM(2)とメモリM(6)とメモリM(10)とメモリM(14)にあり、
データD(3)はメモリM(3)とメモリM(7)とメモリM(11)とメモリM(15)にあり、
データD(4)はメモリM(4)とメモリM(8)とメモリM(12)とメモリM(16)にある。
【0032】
図24は第三回目の転送を表す。
メモリM(1)にあるデータD(1)をメモリM(2)に、メモリM(2)にあるデータD(2)をメモリM(1)に、それぞれ転送(10601、10602)、すなわち相互転送する。
メモリM(3)にあるデータD(3)をメモリM(4)に、メモリM(4)にあるデータD(4)をメモリM(3)に、それぞれ転送(10603、10604)、すなわち相互転送する。
メモリM(5)にあるデータD(1)をメモリM(6)に、メモリM(6)にあるデータD(2)をメモリM(5)に、それぞれ転送(10605、10606)、すなわち相互転送する。
メモリM(7)にあるデータD(3)をメモリM(8)に、メモリM(8)にあるデータD(4)をメモリM(7)に、それぞれ転送(10607、10608)、すなわち相互転送する。
メモリM(9)にあるデータD(1)をメモリM(10)に、メモリM(10)にあるデータD(2)をメモリM(9)に、それぞれ転送(10609、10610)、すなわち相互転送する。
メモリM(11)にあるデータD(3)をメモリM(12)に、メモリM(12)にあるデータD(4)をメモリM(11)に、それぞれ転送(10611、10612)、すなわち相互転送する。
メモリM(13)にあるデータD(1)をメモリM(14)に、メモリM(14)にあるデータD(2)をメモリM(13)に、それぞれ転送(10613、10614)、すなわち相互転送する。
メモリM(15)にあるデータD(3)をメモリM(16)に、メモリM(16)にあるデータD(4)をメモリM(15)に、それぞれ転送(10615、10616)、すなわち相互転送する。
【0033】
図25は第三回目の転送後の状況を表す。
【0034】
データD(1)はメモリM(1)、メモリM(2)、メモリM(5)、メモリM(6)、メモリM(9)、メモリM(10)、メモリM(13)、メモリM(14)にあり、
データD(2)はメモリM(1)、メモリM(2)、メモリM(5)、メモリM(6)、メモリM(9)、メモリM(10)、メモリM(13)、メモリM(14)にあり、
データD(3)はメモリM(3)、メモリM(4)、メモリM(7)、メモリM(8)、メモリM(11)、メモリM(12)、メモリM(15)、メモリM(16)にあり、
データD(4)はメモリM(3)、メモリM(4)、メモリM(7)、メモリM(8)、メモリM(11)、メモリM(12)、メモリM(15)、メモリM(16)にある。
【0035】
図26は第四回目の転送を表す。
【0036】
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(3)に、メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(1)に、それぞれ転送(10801、10802)、すなわち相互転送する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(4)に、メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(2)に、それぞれ転送(10803、10804)、すなわち相互転送する。
メモリM(5)にあるデータD(1)とデータD(2)をまとめてメモリM(7)に、メモリM(7)にあるデータD(3)とデータD(4)をまとめてメモリM(5)に、それぞれ転送(10805、10806)、すなわち相互転送する。
メモリM(6)にあるデータD(1)とデータD(2)をまとめてメモリM(8)に、メモリM(8)にあるデータD(3)とデータD(4)をまとめてメモリM(6)に、それぞれ転送(10807、10808)、すなわち相互転送する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(11)に、メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(9)に、それぞれ転送(10809、10810)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(12)に、メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(10)に、それぞれ転送(10811、10812)、すなわち相互転送する。
メモリM(13)にあるデータD(1)とデータD(2)をまとめてメモリM(15)に、メモリM(15)にあるデータD(3)とデータD(4)をまとめてメモリM(13)に、それぞれ転送(10813、10814)、すなわち相互転送する。
メモリM(14)にあるデータD(1)とデータD(2)をまとめてメモリM(16)に、メモリM(16)にあるデータD(3)とデータD(4)をまとめてメモリM(14)に、それぞれ転送(10815、10816)、すなわち相互転送する。
図27は全ての転送が終了した状態を表す。
【0037】
以上、本発明のデータ転送方法を適用した場合について説明したが、この16のメモリと4種類のデータでの通信は、片側転送を2回と相互転送を2回で構成される。
この片側転送と相互転送の組みは4回の内、2回を組み合わせる順列組み合わせであるから、合計6通りある。
具体的には、
(1の組)片側ー片側ー相互ー相互
(2の組)片側ー相互ー片側ー相互
(3の組)片側ー相互ー相互ー片側
(4の組)相互ー相互ー片側ー片側
(5の組)相互ー片側ー相互ー片側
(6の組)相互ー片側ー片側ー相互
の6つである。
このうち、(1の組)が上記本発明を適用した場合である。
以下に、本発明を適用しない(2の組)から(6の組)について、図28から図72を用いて説明する。
【0038】
まず、(2の組)について説明する。
図28は転送前の状況を表す。
図29は第一回目の転送を表す。
メモリM(9)にあるデータをM(1)に片側転送(20201)する。
メモリM(10)にあるデータをM(2)に片側転送(20202)する。
メモリM(11)にあるデータをM(3)に片側転送(20203)する。
メモリM(12)にあるデータをM(4)に片側転送(20204)する。
【0039】
図30は第一回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(9)にあり、
データD(2)はメモリM(2)とメモリM(10)にあり、
データD(3)はメモリM(3)とメモリM(11)にあり、
データD(4)はメモリM(4)とメモリM(12)にある。
【0040】
図31は第二回目の転送を表す。
メモリM(1)にあるデータD(1)をメモリM(2)に、メモリM(2)にあるデータD(2)をメモリM(1)に、それぞれ転送(20401、20402)、すなわち相互転送する。
メモリM(3)にあるデータD(3)をメモリM(4)に、メモリM(4)にあるデータD(4)をメモリM(3)に、それぞれ転送(20403、20404)、すなわち相互転送する。
メモリM(9)にあるデータD(1)をメモリM(10)に、メモリM(10)にあるデータD(2)をメモリM(9)に、それぞれ転送(20405、20406)、すなわち相互転送する。
メモリM(11)にあるデータD(3)をメモリM(12)に、メモリM(12)にあるデータD(4)をメモリM(11)に、それぞれ転送(20407、20408)、すなわち相互転送する。
【0041】
図32は第二回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(2)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(3)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にあり、
データD(4)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にある。
【0042】
図33は第三回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(5)に片側転送(20601)する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(6)に片側転送(20602)する。
メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(7)に片側転送(20603)する。
メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(8)に片側転送(20604)する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(13)に片側転送(20605)する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(14)に片側転送(20606)する。
メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(15)に片側転送(20607)する。
メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(16)に片側転送(20608)する。
【0043】
図34は第三回目の転送後の状況を表す。
データD(1)がメモリM(1)とメモリM(2)とメモリM(5)とメモリM(6)とメモリM(9)とメモリM(10)とメモリM(13)とメモリM(14)にあり、
データD(2)がメモリM(1)とメモリM(2)とメモリM(5)とメモリM(6)とメモリM(9)とメモリM(10)とメモリM(13)とメモリM(14)にあり、
データD(3)がメモリM(3)とメモリM(4)とメモリM(7)とメモリM(8)とメモリM(11)とメモリM(12)とメモリM(15)とメモリM(16)にあり、
データD(4)がメモリM(3)とメモリM(4)とメモリM(7)とメモリM(8)とメモリM(11)とメモリM(12)とメモリM(15)とメモリM(16)にある。
【0044】
図35は第四回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(3)に、メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(1)に、それぞれ転送(20801、20802)、すなわち相互転送する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(4)に、メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(2)に、それぞれ転送(20803、20804)、すなわち相互転送する。
メモリM(5)にあるデータD(1)とデータD(2)をまとめてメモリM(7)に、メモリM(7)にあるデータD(3)とデータD(4)をまとめてメモリM(5)に、それぞれ転送(20805、20806)、すなわち相互転送する。
メモリM(6)にあるデータD(1)とデータD(2)をまとめてメモリM(8)に、メモリM(8)にあるデータD(3)とデータD(4)をまとめてメモリM(6)に、それぞれ転送(20807、20808)、すなわち相互転送する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(11)に、メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(9)に、それぞれ転送(20809、20810)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(12)に、メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(10)に、それぞれ転送(20811、20812)、すなわち相互転送する。
メモリM(13)にあるデータD(1)とデータD(2)をまとめてメモリM(15)に、メモリM(15)にあるデータD(3)とデータD(4)をまとめてメモリM(13)に、それぞれ転送(20813、20814)、すなわち相互転送する。
メモリM(14)にあるデータD(1)とデータD(2)をまとめてメモリM(16)に、メモリM(16)にあるデータD(3)とデータD(4)をまとめてメモリM(14)に、それぞれ転送(20815、20816)、すなわち相互転送する。
図36は全ての転送が終了した状況を表す。
【0045】
次に、(3の組)について説明する。
図37は転送前の状況を表す。
図38は第一回目の転送を表す。
メモリM(9)にあるデータをM(1)に片側転送(30201)する。
メモリM(10)にあるデータをM(2)に片側転送(30202)する。
メモリM(11)にあるデータをM(3)に片側転送(30203)する。
メモリM(12)にあるデータをM(4)に片側転送(30204)する。
【0046】
図39は第一回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(9)にあり、
データD(2)はメモリM(2)とメモリM(10)にあり、
データD(3)はメモリM(3)とメモリM(11)にあり、
データD(4)はメモリM(4)とメモリM(12)にある。
【0047】
図40は第二回目の転送を表す。
メモリM(1)にあるデータD(1)をメモリM(2)に、メモリM(2)にあるデータD(2)をメモリM(1)に、それぞれ転送(30401、30402)、すなわち相互転送する。
メモリM(3)にあるデータD(3)をメモリM(4)に、メモリM(4)にあるデータD(4)をメモリM(3)に、それぞれ転送(30403、30404)、すなわち相互転送する。
メモリM(9)にあるデータD(1)をメモリM(10)に、メモリM(10)にあるデータD(2)をメモリM(9)に、それぞれ転送(30405、30406)、すなわち相互転送する。
メモリM(11)にあるデータD(3)をメモリM(12)に、メモリM(12)にあるデータD(4)をメモリM(11)に、それぞれ転送(30407、30408)、すなわち相互転送する。
【0048】
図41は第二回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(2)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(3)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にあり、
データD(4)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にある。
【0049】
図42は第三回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(3)に、メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(1)に、それぞれ転送(30601、30602)、すなわち相互転送する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(4)に、メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(2)に、それぞれ転送(30603、30604)、すなわち相互転送する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(11)に、メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(9)に、それぞれ転送(30605、30606)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(12)に、メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(10)に、それぞれ転送(30607、30608)、すなわち相互転送する。
【0050】
図43は第三回目の転送後の状況を表す。
データD(1)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にある。
データD(2)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にある。
データD(3)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にある。
データD(4)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にある。
【0051】
図44は第四回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(5)に片側転送する。
メモリM(2)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(6)に片側転送する。
メモリM(3)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(7)に片側転送する。
メモリM(4)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(8)に片側転送する。
メモリM(9)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(13)に片側転送する。
メモリM(10)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(14)に片側転送する。
メモリM(11)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(15)に片側転送する。
メモリM(12)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(16)に片側転送する。
図45は全ての転送が終了した状況を表す。
【0052】
次に、(4の組)について説明する。
図46は転送前の状況を表す。
図47は第一回目の転送を表す。
メモリM(9)にあるデータD(1)をメモリM(10)に、メモリM(10)にあるデータD(2)をメモリM(9)に、それぞれ転送(40201、40202)、すなわち相互転送する。
メモリM(11)にあるデータD(3)をメモリM(12)に、メモリM(12)にあるデータD(4)をメモリM(11)に、それぞれ転送(40203、40204)、すなわち相互転送する。
【0053】
図48は第一回目の転送後の状況を表す。
データD(1)がメモリM(9)とメモリM(10)にあり、
データD(2)がメモリM(9)とメモリM(10)にあり、
データD(3)がメモリM(11)とメモリM(12)にあり、
データD(4)がメモリM(11)とメモリM(12)にある。
【0054】
図49は第二回目の転送を表す。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(11)に、メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(9)に、それぞれ転送(40401、40403)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(12)に、メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(10)に、それぞれ転送(40402、40404)、すなわち相互転送する。
【0055】
図50は第二回目の転送後の状況を表す。
データD(1)がメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(2)がメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(3)がメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(4)がメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にある。
【0056】
図51は第三回目の転送を表す。
メモリM(9)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(1)に片側転送(40601)する。
メモリM(10)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(2)に片側転送(40602)する。
メモリM(11)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(3)に片側転送(40603)する。
メモリM(12)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(4)に片側転送(40604)する。
【0057】
図52は第三回目の転送後の状況を表す。
データD(1)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(2)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(3)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(4)がメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にある。
【0058】
図53は第四回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(5)に片側転送(40801)する。
メモリM(2)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(6)に片側転送(40802)する。
メモリM(3)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(7)に片側転送(40803)する。
メモリM(4)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(8)に片側転送(40804)する。
メモリM(9)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(13)に片側転送(40805)する。
メモリM(10)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(14)に片側転送(40806)する。
メモリM(11)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(15)に片側転送(40807)する。
メモリM(12)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(16)に片側転送(40808)する。
図54は全ての転送が終了した状況を表す。
【0059】
次に、(5の組)について説明する。
図55は転送前の状況を表す。
図56は第一回目の転送を表す。
メモリM(9)にあるデータD(1)をメモリM(10)に、メモリM(10)にあるデータD(2)をメモリM(9)に、それぞれ転送(50201、50202)、すなわち相互転送する。
メモリM(11)にあるデータD(3)をメモリM(12)に、メモリM(12)にあるデータD(4)をメモリM(11)に、それぞれ転送(50203、50204)、すなわち相互転送する。
【0060】
図57は第一回目の転送後の状況を表す。
データD(1)がメモリM(9)とメモリM(10)にあり、
データD(2)がメモリM(9)とメモリM(10)にあり、
データD(3)がメモリM(11)とメモリM(12)にあり、
データD(4)がメモリM(11)とメモリM(12)にある。
【0061】
図58は第二回目の転送を表す。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(1)に片側転送(50401)する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(2)に片側転送(50402)する。
メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(3)に片側転送(50403)する。
メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(4)に片側転送(50404)する。
【0062】
図59は第二回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(2)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(3)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にあり、
データD(4)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にある。
【0063】
図60は第三回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(3)に、メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(1)に、それぞれ転送(50601、50602)、すなわち相互転送する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(4)に、メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(2)に、それぞれ転送(50603、50604)、すなわち相互転送する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(11)に、メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(9)に、それぞれ転送(50605、50606)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(12)に、メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(10)に、それぞれ転送(50607、50608)、すなわち相互転送する。
【0064】
図61は第三回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(2)はメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(3)はメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にあり、
データD(4)はメモリM(1)とメモリM(2)とメモリM(3)とメモリM(4)とメモリM(9)とメモリM(10)とメモリM(11)とメモリM(12)にある。
【0065】
図62は第四回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(5)に片側転送(50801)する。
メモリM(2)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(6)に片側転送(50802)する。
メモリM(3)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(7)に片側転送(50803)する。
メモリM(4)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(8)に片側転送(50804)する。
メモリM(9)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(13)に片側転送(50805)する。
メモリM(10)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(14)に片側転送(50806)する。
メモリM(11)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(15)に片側転送(50807)する。
メモリM(12)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(16)に片側転送(50808)する。
図63は全ての転送が終了した状況を表す。
【0066】
次に、(6の組)について説明する。
図64は転送前の状況を表す。
図65は第一回目の転送を表す。
メモリM(9)にあるデータD(1)をメモリM(10)に、メモリM(10)にあるデータD(2)をメモリM(9)に、それぞれ転送(60201、60202)、すなわち相互転送する。
メモリM(11)にあるデータD(3)をメモリM(12)に、メモリM(12)にあるデータD(4)をメモリM(11)に、それぞれ転送(60203、60204)、すなわち相互転送する。
【0067】
図66は第一回目の転送後の状況を表す。
データD(1)がメモリM(9)とメモリM(10)にあり、
データD(2)がメモリM(9)とメモリM(10)にあり、
データD(3)がメモリM(11)とメモリM(12)にあり、
データD(4)がメモリM(11)とメモリM(12)にある。
【0068】
図67は第二回目の転送を表す。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(1)に片側転送(60401)する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(2)に片側転送(60402)する。
メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(3)に片側転送(60403)する。
メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(4)に片側転送(60404)する。
【0069】
図68は第二回目の転送後の状況を表す。
データD(1)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(2)はメモリM(1)とメモリM(2)とメモリM(9)とメモリM(10)にあり、
データD(3)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にあり、
データD(4)はメモリM(3)とメモリM(4)とメモリM(11)とメモリM(12)にある。
【0070】
図69は第三回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(5)に片側転送(60601)する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(6)に片側転送(60602)する。
メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(7)に片側転送(60603)する。
メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(8)に片側転送(60604)する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(13)に片側転送(60605)する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(14)に片側転送(60606)する。
メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(15)に片側転送(60607)する。
メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(16)に片側転送(60608)する。
【0071】
図70は第三回目の転送後の状況を表す。
データD(1)がメモリM(1)とメモリM(2)とメモリM(5)とメモリM(6)とメモリM(9)とメモリM(10)とメモリM(13)とメモリM(14)にあり、
データD(2)がメモリM(1)とメモリM(2)とメモリM(5)とメモリM(6)とメモリM(9)とメモリM(10)とメモリM(13)とメモリM(14)にあり、
データD(3)がメモリM(3)とメモリM(4)とメモリM(7)とメモリM(8)とメモリM(11)とメモリM(12)とメモリM(15)とメモリM(16)にあり、
データD(4)がメモリM(3)とメモリM(4)とメモリM(7)とメモリM(8)とメモリM(11)とメモリM(12)とメモリM(15)とメモリM(16)にある。
【0072】
図71は第四回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(3)に、メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(1)に、それぞれ転送(60801、60802)、すなわち相互転送する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(4)に、メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(2)に、それぞれ転送(60803、60804)、すなわち相互転送する。
メモリM(5)にあるデータD(1)とデータD(2)をまとめてメモリM(7)に、メモリM(7)にあるデータD(3)とデータD(4)をまとめてメモリM(5)に、それぞれ転送(60805、60806)、すなわち相互転送する。
メモリM(6)にあるデータD(1)とデータD(2)をまとめてメモリM(8)に、メモリM(8)にあるデータD(3)とデータD(4)をまとめてメモリM(6)に、それぞれ転送(60807、60808)、すなわち相互転送する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(11)に、メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(9)に、それぞれ転送(60809、60810)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(12)に、メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(10)に、それぞれ転送(60811、60812)、すなわち相互転送する。
メモリM(13)にあるデータD(1)とデータD(2)をまとめてメモリM(15)に、メモリM(15)にあるデータD(3)とデータD(4)をまとめてメモリM(13)に、それぞれ転送(60813、60814)、すなわち相互転送する。
メモリM(14)にあるデータD(1)とデータD(2)をまとめてメモリM(16)に、メモリM(16)にあるデータD(3)とデータD(4)をまとめてメモリM(14)に、それぞれ転送(60815、60816)、すなわち相互転送する。
図72は全ての転送が終了した状況を表す。
以上で(2の組)から(6の組)の説明を終わる。
【0073】
さて、これら(2の組)から(6の組)よりも(1の組)がより効率的な転送方式であることを説明する。
通信の速度は、一般に通信のための準備時間と、実際に通信している時間に分けられる。
(1の組)から(6の組)は転送の回数は全て4回なので通信のための準備の時間は同じである。しかし、通信している時間は異なってくる。
一般に、通信するデータの量が大きい程、通信に要する時間は線形に増えていくとみなしてよい。
簡単に説明するため、一種類のデータの転送時間を1秒とする。
【0074】
(1の組)では、
第一回目の転送では各メモリが一つのデータを送るので1秒。
第二回目の転送では各メモリが一つのデータを送るので1秒。
第三回目の転送では各メモリが一つのデータを送るので1秒。
第四回目の転送では各メモリが二つのデータを送るので2秒。
よって合計5秒である。
【0075】
(2の組)では、
第一回目の転送では各メモリが一つのデータを送るので1秒。
第二回目の転送では各メモリが一つのデータを送るので1秒。
第三回目の転送では各メモリがつのデータを送るので2秒。
第四回目の転送では各メモリが二つのデータを送るので2秒。
よって合計6秒である。
【0076】
(3の組)では、
第一回目の転送では各メモリが一つのデータを送るので1秒。
第二回目の転送では各メモリが一つのデータを送るので1秒。
第三回目の転送では各メモリがつのデータを送るので2秒。
第四回目の転送では各メモリがつのデータを送るので4秒。
よって合計8秒である。
【0077】
(4の組)では、
第一回目の転送では各メモリが一つのデータを送るので1秒。
第二回目の転送では各メモリがつのデータを送るので2秒。
第三回目の転送では各メモリがつのデータを送るので4秒。
第四回目の転送では各メモリがつのデータを送るので4秒。
よって合計11秒である。
【0078】
(5の組)では、
第一回目の転送では各メモリが一つのデータを送るので1秒。
第二回目の転送では各メモリがつのデータを送るので2秒。
第三回目の転送では各メモリがつのデータを送るので2秒。
第四回目の転送では各メモリがつのデータを送るので4秒。
よって合計9秒である。
【0079】
(6の組)では、
第一回目の転送では各メモリが一つのデータを送るので1秒。
第二回目の転送では各メモリがつのデータを送るので2秒。
第三回目の転送では各メモリがつのデータを送るので2秒。
第四回目の転送では各メモリが二つのデータを送るので2秒。
よって合計7秒である。
【0080】
従って、5秒の(1の組)が最も速い。
ここでは、片側転送と相互転送を同じ速さとしたが、違う速さでも同じように(1の組)が最も速い。
なぜなら、どの組でも相互転送にかかる時間は同じであり、片側転送の大小で時間の長短が決まるからである。
【0081】
次に、本発明のデータ転送方法の一般の場合について説明する。
すなわち、メモリ数がN(M)で、N(M)が2のべき乗の数であり、データの種類数がN(D)で、N(D)はメモリ数の約数であって、かつ1とN(M)ではない場合の本発明のデータ転送方法について説明する。
一つあるいは複数のデータがそれぞれ異なるメモリにある場合に、全部のデータが全部のメモリ上にあるようにする本発明のデータ転送方法では、相互転送と片側転送とを、合計でlog(メモリ数)/log(2)の回数行なう。この回数が最適な回数である。
そして、本発明のデータ転送方法では、さらに、最初に{(log ( メモリ数 )/( データの種類数 ) }回の片側転送を行い、次いで、{log(データの種類数)/log(2)}回の相互転送を行う。
【0082】
次に、本発明のデータ転送方法を取ることにより、何故、データの転送時間を最短にすることができるかについて以下に説明する。
(1).データの種類数N(D)が最も多い場合、つまりN(D)とメモリ数N(M)が等しい場合、これはグローバルキャストと呼ばれており、この場合の転送は全て相互転送から構成される。その相互転送の回数がlog(メモリ数)である。
データの種類数が少ない場合の最適な転送回数は、最もデータの種類数が多い場合よりも少ない。
したがって、

Figure 0003703304
となる。
一方で、一種類のデータをブロードキャストする場合は、片側転送のみで構成され、回数はlog(メモリ数)である。
一般の種類を転送する場合は少なくとも一種類のデータを放送型通信によって転送する場合よりも転送回数は多いはずである。
一種類のデータを放送型通信によって転送する場合よりも転送回数はlog(メモリ数)なので、
Figure 0003703304
となる。
式(1)と式(2)を合わせることにより、最適な転送回数はlog(メモリの数)である。
【0083】
(2).次に、片側転送と違い、相互転送はデータを持つメモリ数を増やさない。従って、相互転送は{log(データの種類数)/log(2)}回を越えて行なおうとしても、データを全部のメモリに転送することができない。
よって、相互転送の回数は最大で{log(データの種類数)/log(2)}回となる。
「従来の技術」の項において、相互転送の説明の箇所で書いたように、相互転送の回数をできる限り多くとるようにすると効率がよい。
従って、相互転送は{log(データの種類数)/log(2)}回行うのがよい。
残りの転送は、データを持つメモリ数を増やす片側転送によって構成される。 各データについてデータの種類数を増やすメモリ数は、(メモリ数)/(データの種類数)である。
これを、「従来の技術」の項で説明したRecursive Broadcast Algorithmに倣って片側転送によって構成すると、{(log ( メモリ数 )/( データの種類数 ) }回となる。
このようにして、相互転送の{log(データの種類数)/log(2)}回と片側転送の{(log ( メモリ数 )/( データの種類数 ) }回を足し合わせて、{(log(メモリ数)/log(2)}回という、(1)に示した回数になる。
【0084】
次に、{(log ( メモリ数 )/( データの種類数 ) }回の片側転送と、{log(データの種類数)/log(2)}回の相互転送とについて、それらの順番が問題になる。
ここで、全ての片側転送を先にしたほうが効率が良い理由を説明する。
相互転送とは違い、片側転送はデータを持つメモリ数を増やす。
また、相互転送が効率が高いので、できる限り多くのメモリが相互転送できればメモリ全体として効率の高い転送を行うことになる。
よって、できる限り先に片側転送を行っておいてデータを持つメモリ数を増やしておいてから、相互転送すれば、全体の転送効率が最も高くなる。
このような理由から、先に片側転送を全て行い、その後に相互転送を行う。
【0085】
図1は、並列計算機において本発明のデータ転送を実行する場合に、各計算機において行われる処理内容を示すフローチャートである。
ステップ101において、最適データ転送を開始する。
ステップ102において、メモリ数N(M)(計算機数に同じ)の入力をする。 ステップ103において、データの種類数N(D)の入力をし、また、転送するデータがどのメモリに格納されているかを示すデータ格納場所の情報を入力する。
各計算機には、メモリ数N(M)とデータの種類数N(D)とデータ格納場所情報との組合せにより決まるデータ転送順序パターンのテーブルが各組合せ対応に用意されており、このテーブルに従ってデータが順次転送される。
まず、ステップ104において、{log〔 ( ( )) ( ( )) 〕}回の片側転送を行う。
次いで、ステップ105において、{log(N(D))/log(2)}回の相互転送を行う。
ステップ106において、最適データ転送を終了する。
【0086】
さらに、もう一つの具体例として、次の場合について詳細に述べる。
すなわち、16台のメモリを使用し、そのうち8台のメモリにそれぞれ異なる同じ大きさのデータがあるとき、すなわち、メモリM(1)〜メモリM(16)のうち、メモリM(1)にはデータD(1)が、メモリM(2)にはデータD(2)が、メモリM(3)にはデータD(3)が、メモリM(4)にはデータD(4)が、メモリM(5)にはデータD(5)が、メモリM(6)にはデータD(6)が、メモリM(7)にはデータD(7)が、メモリM(8)にはデータD(8)がある場合に、データ全てがすべてのメモリにあるように転送する。
すなわち、データD(1)、データD(2)、データD(3)、データD(4)、データD(5)、データD(6)、データD(7)、データD(8)が、メモリM(1)〜メモリM(16)にあるようにデータ転送する時、最適なデータ転送方式について具体的に説明する。
この場合のデータ転送方法は、前述したデータ転送方法の一般の場合の説明に基づき、最初に片側転送が1回、その後に相互転送が3回となる。
【0087】
次に、図73から図81を用いて具体的に説明する。
73は転送前の状況を表す。
データD(1)がメモリM(1)にあり、データD(2)がメモリM(2)にあり、データD(3)がメモリM(3)にあり、データD(4)がメモリM(4)にあり、データD(5)がメモリM(5)にあり、データD(6)がメモリM(6)にあり、データD(7)がメモリM(7)にあり、データD(8)がメモリM(8)にある。
【0088】
74は第一回目の転送を表す。
メモリM(1)のデータD(1)をメモリM(9)に片側転送(70201)する。
メモリM(2)のデータD(2)をメモリM(10)に片側転送(70202)する。
メモリM(3)のデータD(3)をメモリM(11)に片側転送(70203)する。
メモリM(4)のデータD(4)をメモリM(12)に片側転送(70204)する。
メモリM(5)のデータD(5)をメモリM(13)に片側転送(70205)する。
メモリM(6)のデータD(6)をメモリM(14)に片側転送(70206)する。
メモリM(7)のデータD(7)をメモリM(15)に片側転送(70207)する。
メモリM(8)のデータD(8)をメモリM(16)に片側転送(70208)する。
【0089】
75は第一回目の転送後の状況を表す。
データD(1)がメモリM(1)とメモリM(9)にあり、
データD(2)がメモリM(2)とメモリM(10)にあり、
データD(3)がメモリM(3)とメモリM(11)にあり、
データD(4)がメモリM(4)とメモリM(12)にあり、
データD(5)がメモリM(5)とメモリM(13)にあり、
データD(6)がメモリM(6)とメモリM(14)にあり、
データD(7)がメモリM(7)とメモリM(15)にあり、
データD(8)がメモリM(8)とメモリM(16)にある。
【0090】
76は第二回目の転送を表す。
メモリM(1)にあるデータD(1)をメモリM(2)に、メモリM(2)にあるデータD(2)をメモリM(1)に、それぞれ転送(70401、70402)、すなわち相互転送する。
メモリM(3)にあるデータD(3)をメモリM(4)に、メモリM(4)にあるデータD(4)をメモリM(3)に、それぞれ転送(70403、70404)、すなわち相互転送する。
メモリM(5)にあるデータD(5)をメモリM(6)に、メモリM(6)にあるデータD(6)をメモリM(5)に、それぞれ転送(70405、70406)、すなわち相互転送する。
メモリM(7)にあるデータD(7)をメモリM(8)に、メモリM(8)にあるデータD(8)をメモリM(7)に、それぞれ転送(70407、70408)、すなわち相互転送する。
メモリM(9)にあるデータD(1)をメモリM(10)に、メモリM(10)にあるデータD(2)をメモリM(9)に、それぞれ転送(70409、70410)、すなわち相互転送する。
メモリM(11)にあるデータD(3)をメモリM(12)に、メモリM(12)にあるデータD(4)をメモリM(11)に、それぞれ転送(70411、70412)、すなわち相互転送する。
メモリM(13)にあるデータD(5)をメモリM(14)に、メモリM(14)にあるデータD(6)をメモリM(13)に、それぞれ転送(70413、70414)、すなわち相互転送する。
メモリM(15)にあるデータD(7)をメモリM(16)に、メモリM(16)にあるデータD(8)をメモリM(15)に、それぞれ転送(70415、70416)、すなわち相互転送する。
【0091】
77は第二回目の転送後の状況を表す。
データD(1)がメモリM(1)、メモリM(2)、メモリM(9)、メモリM(10)にあり、
データD(2)がメモリM(1)、メモリM(2)、メモリM(9)、メモリM(10)にあり、
データD(3)がメモリM(3)、メモリM(4)、メモリM(11)、メモリM(12)にあり、
データD(4)がメモリM(3)、メモリM(4)、メモリM(11)、メモリM(12)にあり、
データD(5)がメモリM(5)、メモリM(6)、メモリM(13)、メモリM(14)にあり、
データD(6)がメモリM(5)、メモリM(6)、メモリM(13)、メモリM(14)にあり、
データD(7)がメモリM(7)、メモリM(8)、メモリM(15)、メモリM(16)にあり、
データD(8)がメモリM(7)、メモリM(8)、メモリM(15)、メモリM(16)にある。
【0092】
78は第三回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)をまとめてメモリM(3)に、メモリM(3)にあるデータD(3)とデータD(4)をまとめてメモリM(1)に、それぞれ転送(70601、70602)、すなわち相互転送する。
メモリM(2)にあるデータD(1)とデータD(2)をまとめてメモリM(4)に、メモリM(4)にあるデータD(3)とデータD(4)をまとめてメモリM(2)に、それぞれ転送(70603、70604)、すなわち相互転送する。
メモリM(5)にあるデータD(5)とデータD(6)をまとめてメモリM(7)に、メモリM(7)にあるデータD(5)とデータD(6)をまとめてメモリM(5)に、それぞれ転送(70605、70606)、すなわち相互転送する。
メモリM(6)にあるデータD(5)とデータD(6)をまとめてメモリM(8)に、メモリM(8)にあるデータD(5)とデータD(6)をまとめてメモリM(6)に、それぞれ転送(70607、70608)、すなわち相互転送する。
メモリM(9)にあるデータD(1)とデータD(2)をまとめてメモリM(11)に、メモリM(11)にあるデータD(3)とデータD(4)をまとめてメモリM(9)に、それぞれ転送(70609、70610)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)をまとめてメモリM(12)に、メモリM(12)にあるデータD(3)とデータD(4)をまとめてメモリM(10)に、それぞれ転送(70611、70612)、すなわち相互転送する。
メモリM(13)にあるデータD(5)とデータD(6)をまとめてメモリM(15)に、メモリM(15)にあるデータD(5)とデータD(6)をまとめてメモリM(13)に、それぞれ転送(70613、70614)、すなわち相互転送する。
メモリM(14)にあるデータD(5)とデータD(6)をまとめてメモリM(16)に、メモリM(16)にあるデータD(5)とデータD(6)をまとめてメモリM(14)に、それぞれ転送(70615、70616)、すなわち相互転送する。
【0093】
79は第三回目の転送後の状況を表す。
データD(1)がメモリM(1)、メモリM(2)、メモリM(3)、メモリM(4)、メモリM(9)、メモリM(10)、メモリM(11)、メモリM(12)にあり、
データD(2)がメモリM(1)、メモリM(2)、メモリM(3)、メモリM(4)、メモリM(9)、メモリM(10)、メモリM(11)、メモリM(12)にあり、
データD(3)がメモリM(1)、メモリM(2)、メモリM(3)、メモリM(4)、メモリM(9)、メモリM(10)、メモリM(11)、メモリM(12)にあり、
データD(4)がメモリM(1)、メモリM(2)、メモリM(3)、メモリM(4)、メモリM(9)、メモリM(10)、メモリM(11)、メモリM(12)にあり、
データD(5)がメモリM(5)、メモリM(6)、メモリM(7)、メモリM(8)、メモリM(13)、メモリM(14)、メモリM(15)、メモリM(16)にあり、
データD(6)がメモリM(5)、メモリM(6)、メモリM(7)、メモリM(8)、メモリM(13)、メモリM(14)、メモリM(15)、メモリM(16)にあり、
データD(7)がメモリM(5)、メモリM(6)、メモリM(7)、メモリM(8)、メモリM(13)、メモリM(14)、メモリM(15)、メモリM(16)にあり、
データD(8)がメモリM(5)、メモリM(6)、メモリM(7)、メモリM(8)、メモリM(13)、メモリM(14)、メモリM(15)、メモリM(16)にある。
【0094】
80は第四回目の転送を表す。
メモリM(1)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(5)に、メモリM(5)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(1)に、それぞれ転送(70801、70802)、すなわち相互転送する。
メモリM(2)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(6)に、メモリM(6)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(2)に、それぞれ転送(70803、70804)、すなわち相互転送する。
メモリM(3)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(7)に、メモリM(7)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(3)に、それぞれ転送(70805、70806)、すなわち相互転送する。
メモリM(4)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(8)に、メモリM(8)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(4)に、それぞれ転送(70807、70808)、すなわち相互転送する。
メモリM(9)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(13)に、メモリM(13)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(9)に、それぞれ転送(70809、70810)、すなわち相互転送する。
メモリM(10)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(14)に、メモリM(14)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(10)に、それぞれ転送(70811、70812)、すなわち相互転送する。
メモリM(11)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(15)に、メモリM(15)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(11)に、それぞれ転送(70813、70814)、すなわち相互転送する。
メモリM(12)にあるデータD(1)とデータD(2)とデータD(3)とデータD(4)をまとめてメモリM(16)に、メモリM(16)にあるデータD(5)とデータD(6)とデータD(7)とデータD(8)をまとめてメモリM(12)に、それぞれ転送(70815、70816)、すなわち相互転送する。
81は転送終了後の状態を表す。
【0095】
【発明の効果】
本発明によれば、メモリとメモリの組みが複数あるような計算機において一つあるいは複数のデータがそれぞれ異なるメモリにある場合に、全部のデータが全部のメモリ上にあるようにデータ転送を行いたい時に、片側通信と相互通信の最適な組み合わせることにより、最短の実行時間によって、目的とするデータ転送を達成することができる。
【図面の簡単な説明】
【図1】データ転送を実行する場合に、各計算機において行われる処理のフローチャートを示す図である。
【図2】片側転送の処理内容を示す図である。
【図3】相互転送の処理内容を示す図である。
【図4】放送型転送の初期状態を示す図である。
【図5】放送型転送の第一段の転送を示す図である。
【図6】放送型転送の第一段の転送後の状態を示す図である。
【図7】放送型転送の第二段の転送を示す図である。
【図8】放送型転送の第二段の転送後の状態を示す図である。
【図9】放送型転送の初期状態を表に示す図である。
【図10】放送型転送の第一段の転送を表に示す図である。
【図11】放送型転送の第一段の転送後の状態を表に示す図である。
【図12】放送型転送の第二段の転送を表に示す図である。
【図13】放送型転送の第二段の転送後の状態を表に示す図である。
【図14】ネットワーク上の転送経路により接続された2つのノードを示す図である。
【図15】図14で示したデータ転送の形態を製品として実現している一例である並列計算機の転送ハードウェアの特徴を示す図である。
【図16】商品データの例を示す図である。
【図17】売上データの例を示す図である。
【図18】並列データベースの構成例を示す
【図19】16メモリ、4種類データの最適転送の初期状態を示す図である。
【図20】16メモリ、4種類データの最適転送の第一回目の転送を示す図である。
【図21】16メモリ、4種類データの最適転送の第一回目の転送後を示す図である。
【図22】16メモリ、4種類データの最適転送の第二回目の転送を示す図である。
【図23】16メモリ、4種類データの最適転送の第二回目の転送後を示す図である。
【図24】16メモリ、4種類データの最適転送の第三回目の転送を示す図である。
【図25】16メモリ、4種類データの最適転送の第三回目の転送後を示す図である。
【図26】16メモリ、4種類データの最適転送の第四回目の転送を示す図である。
【図27】16メモリ、4種類データの最適転送の第四回目の転送後を示す図である。
【図28】16メモリ、4種類データのある最適でない転送の初期状態を示す図である。
【図29】16メモリ、4種類データのある最適でない転送の第一回目の転送を示す図である。
【図30】16メモリ、4種類データのある最適でない転送の第一回目の転送後を示す図である。
【図31】16メモリ、4種類データのある最適でない転送の第二回目の転送を示す図である。
【図32】16メモリ、4種類データのある最適でない転送の第二回目の転送後を示す図である。
【図33】16メモリ、4種類データのある最適でない転送の第三回目の転送を示す図である。
【図34】16メモリ、4種類データのある最適でない転送の第三回目の転送後を示す図である。
【図35】16メモリ、4種類データのある最適でない転送の第四回目の転送を示す図である。
【図36】16メモリ、4種類データのある最適でない転送の第四回目の転送後を示す図である。
【図37】16メモリ、4種類データのある最適でない転送の初期状態を示す図である。
【図38】16メモリ、4種類データのある最適でない転送の第一回目の転送を示す図である。
【図39】16メモリ、4種類データのある最適でない転送の第一回目の転送後を示す図である。
【図40】16メモリ、4種類データのある最適でない転送の第二回目の転送を示す図である。
【図41】16メモリ、4種類データのある最適でない転送の第二回目の転送後を示す図である。
【図42】16メモリ、4種類データのある最適でない転送の第三回目の転送を示す図である。
【図43】16メモリ、4種類データのある最適でない転送の第三回目の転送後を示す図である。
【図44】16メモリ、4種類データのある最適でない転送の第四回目の転送を示す図である。
【図45】16メモリ、4種類データのある最適でない転送の第四回目の転送後を示す図である。
【図46】16メモリ、4種類データのある最適でない転送の初期状態を示す図である。
【図47】16メモリ、4種類データのある最適でない転送の第一回目の転送を示す図である。
【図48】16メモリ、4種類データのある最適でない転送の第一回目の転送後を示す図である。
【図49】16メモリ、4種類データのある最適でない転送の第二回目の転送を示す図である。
【図50】16メモリ、4種類データのある最適でない転送の第二回目の転送後を示す図である。
【図51】16メモリ、4種類データのある最適でない転送の第三回目の転送を示す図である。
【図52】16メモリ、4種類データのある最適でない転送の第三回目の転送後を示す図である。
【図53】16メモリ、4種類データのある最適でない転送の第四回目の転送を示す図である。
【図54】16メモリ、4種類データのある最適でない転送の第四回目の転送後を示す図である。
【図55】16メモリ、4種類データのある最適でない転送の初期状態を示す図である。
【図56】16メモリ、4種類データのある最適でない転送の第一回目の転送を示す図である。
【図57】16メモリ、4種類データのある最適でない転送の第一回目の転送後を示す図である。
【図58】16メモリ、4種類データのある最適でない転送の第二回目の転送を示す図である。
【図59】16メモリ、4種類データのある最適でない転送の第二回目の転送後を示す図である。
【図60】16メモリ、4種類データのある最適でない転送の第三回目の転送を示す図である。
【図61】16メモリ、4種類データのある最適でない転送の第三回目の転送後を示す図である。
【図62】16メモリ、4種類データのある最適でない転送の第四回目の転送を示す図である。
【図63】16メモリ、4種類データのある最適でない転送の第四回目の転送後を示す図である。
【図64】16メモリ、4種類データのある最適でない転送の初期状態を示す図である。
【図65】16メモリ、4種類データのある最適でない転送の第一回目の転送を示す図である。
【図66】16メモリ、4種類データのある最適でない転送の第一回目の転送後を示す図である。
【図67】16メモリ、4種類データのある最適でない転送の第二回目の転送を示す図である。
【図68】16メモリ、4種類データのある最適でない転送の第二回目の転送後を示す図である。
【図69】16メモリ、4種類データのある最適でない転送の第三回目の転送を示す図である。
【図70】16メモリ、4種類データのある最適でない転送の第三回目の転送後を示す図である。
【図71】16メモリ、4種類データのある最適でない転送の第四回目の転送を示す図である。
【図72】16メモリ、4種類データのある最適でない転送の第四回目の転送後を示す図である。
【図73】16メモリ、8種類データの最適転送の初期状態を示す図である。
【図74】16メモリ、8種類データの最適転送の第一回目の転送を示す図である。
【図75】16メモリ、8種類データの最適転送の第一回目の転送後を示す図である。
【図76】16メモリ、8種類データの最適転送の第二回目の転送を示す図である。
【図77】16メモリ、8種類データの最適転送の第二回目の転送後を示す図である。
【図78】16メモリ、8種類データの最適転送の第三回目の転送を示す図である。
【図79】16メモリ、8種類データの最適転送の第三回目の転送後を示す図である。
【図80】16メモリ、8種類データの最適転送の第四回目の転送を示す図である。
【図81】16メモリ、8種類データの最適転送の第四回目の転送後を示す図である。
【符号の説明】
1401、1408 出力口
1402、1407 入力口
1403、1409 データ
1404、1410 ノード
1405、1406 転送経路
1411、1412 プロセッサ
1501〜1504、1801〜1804 クロスバー
1505、1507、1509、1511、1805、1807、1809、1811 スイッチ
1506、1508、1510、1512、1806、1808、1810、1812 ノード[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data transfer method in a computer system having a large number of memories, and relates to an effective use method of a network.
[0002]
[Prior art]
As a conventional technique, a conventional communication system technique and a conventional network hardware technique will be described.
References related to communication system technology and network hardware include "Parallel Computer Architecture" written by Shushi Okugawa (Corona), and "Computer Architecture and Configuration Method" written by Kisaburo Nakazawa (Asakura Shoten).
Conventional communication system technologies include one-sided communication (FIG. 2), mutual communication (FIG. 3), and broadcast type communication (FIGS. 4 to 13). One-side communication is also called one-side transfer, mutual communication is called mutual transfer, and broadcast-type communication is called broadcast-type transfer.
[0003]
One-side communication is a communication method in which data in one memory is transferred to the other memory.
As shown in FIG. 2, this is a communication method in which data (203) is transferred (204) from one memory (201) to another memory (201).
Also called PING-PONG communication, POINT-TO-PINT communication, PIER-TO-PIER communication.
[0004]
Mutual communication is a communication method in which data in two memories are simultaneously transferred to each other.
As shown in FIG. 3, in the communication system, data (303) and data (304) respectively sent to one memory (301) and another memory (302) are sent to each other and simultaneously (305) (306). It is also called EXCHANGE communication.
Mutual communication can also be configured by performing one-sided communication sequentially from each direction. That is, first, transfer (305) is performed, and then transfer (306) is performed.
If there is only one transfer path between the two memories, the only way is to perform one-sided communication sequentially.
[0005]
However, typical parallel computers such as SR2201 (Hitachi) often have two or more paths. This is because it does not cost much to implement two or more hardware.
Therefore, using mutual communication that transfers data in both directions at once, more data can be transferred per unit time than when one-side communication is performed sequentially.
Accordingly, when data is transferred using mutual communication as much as possible, data can be transferred more efficiently.
[0006]
Broadcast communication is a communication method in which data in one memory is stored in all other memories. It is also called BROADCAST (broadcast) communication.
When broadcasting one type of data, it is composed of only one-side communication, and the number of times is log (the number of memories).
This is called the Recursive Broadcast Algorithm (reference: R. Ponnusamy: Scheduling Regular and Irregular Communications Patterns on the CM-5: Supercomputing '92).
[0007]
This method will be specifically described with reference to FIGS.
First, assume that FIG. 4 shows the situation before transfer.
Assume that there are a total of four memories (401) (402) (403) (404). It is assumed that there is data (405) in the memory (401). This data is transferred so as to be in the remaining memories (402) (403) (404).
[0008]
FIG. 5 shows the first transfer.
Of the four memories (501) (502) (503) (504), the data (505) is transferred (506) from the memory (501) to the memory (502).
FIG. 6 shows after the first transfer.
Of the four memories (601), (602), (603), and (604), the data (605) is in the memory (601) and the data (606) is in the memory (602).
[0009]
FIG. 7 shows the second transfer.
Data (705) is transferred (706) from the memory (701) to the memory (703) in the four memories (701) (702) (703) (704), and at the same time, the data (707) is transferred from the memory (702) to the memory (703). Transfer (708) to (704).
FIG. 8 shows a situation where the transfer is completed.
The four memories (801) (802) (803) (804) have data (805) (806) (807) (808), respectively.
The above is a specific example of a broadcast composed of one-sided communication called Recursive Broadcast Algorithm.
[0010]
Here, a description will be given of the above transfer method in the form of a table for the case where the number of types of data increases in the later description.
9 to 13 correspond to this.
Assume that the data described with reference to FIGS. 4 to 8 is data D (2).
FIG. 9 shows a situation in which data D (2) is in memory M (1), is not on any memory other than memory M (1), and no other data is on any memory.
FIG. 9 corresponds to FIG. Assume that the data (405) in FIG. 4 corresponds to the data D (2) in FIG.
The memory (401) in FIG. 4 is the memory M (1) in FIG. 9, the memory (402) in FIG. 4 is in the memory M (2) in FIG. 9, and the memory (403) in FIG. 3), the memory (404) in FIG. 4 corresponds to the memory M (4) in FIG.
[0011]
FIG. 10 corresponds to FIG.
The memory (501) in FIG. 5 is the memory M (1) in FIG. 10, the memory (502) in FIG. 5 is in the memory M (2) in FIG. 10, and the memory (503) in FIG. 3), the memory (504) in FIG. 5 corresponds to the memory M (4) in FIG.
Assume that data (505) in FIG. 5 corresponds to data D (2) in FIG. The transfer (506) in FIG. 5 corresponds to the transfer (1001) in FIG.
[0012]
FIG. 11 corresponds to FIG.
[0013]
The memory (601) in FIG. 6 is the memory M (1) in FIG. 11, the memory (602) in FIG. 6 is in the memory M (2) in FIG. 11, and the memory (603) in FIG. 3), the memory (604) in FIG. 6 corresponds to the memory M (4) in FIG.
Assume that the data (605) in FIG. 6 corresponds to the data D (2) in the memory M (1) in FIG.
Assume that the data (606) in FIG. 6 corresponds to the data D (2) in the memory M (2) in FIG.
[0014]
FIG. 12 corresponds to FIG.
7 is the memory M (1) in FIG. 12, the memory (702) in FIG. 7 is the memory M (2) in FIG. 12, and the memory (703) in FIG. 3), the memory (704) in FIG. 7 corresponds to the memory M (4) in FIG.
Assume that data (705) in FIG. 7 corresponds to data D (2) in the memory M (1) in FIG.
Assume that data (707) in FIG. 7 corresponds to data D (2) in the memory M (2) in FIG.
The transfer (706) in FIG. 7 corresponds to the transfer (1201) in FIG. The transfer (708) in FIG. 7 corresponds to the transfer (1202) in FIG.
[0015]
FIG. 13 corresponds to FIG.
[0016]
The memory (801) in FIG. 8 is the memory M (1) in FIG. 13, the memory (802) in FIG. 8 is in the memory M (2) in FIG. 13, and the memory (803) in FIG. 3), the memory (804) in FIG. 8 corresponds to the memory M (4) in FIG.
Assume that data (805) in FIG. 8 corresponds to data D (2) in the memory M (1) in FIG.
Assume that data (806) in FIG. 8 corresponds to data D (2) in the memory M (2) in FIG.
Assume that the data (807) in FIG. 8 corresponds to the data D (2) in the memory M (3) in FIG.
Assume that the data (808) in FIG. 8 corresponds to the data D (2) in the memory M (4) in FIG.
This completes the description of the transfer method in the form of a table.
This concludes the description of the conventional communication system technology.
[0017]
Next, conventional network hardware technology will be described.
Typical examples include hypercrossbar networks and torus networks.
The hyper crossbar network is adopted in the parallel computer SR2201 (Hitachi), and the torus type network is adopted in other parallel computers.
In particular, in the parallel computer SR2201, which employs a hypercrossbar network, the transfer speed between arbitrary memories is almost the same, and in the case of isotropic transfer such as transfer sent next to a virtual one-dimensional address, Since there is no collision, the transmission speed does not deteriorate and communication can always be performed with a constant performance (reference: "Architecture and Performance of the Hitachi SR2201 Massively Parallel Processor System" in Proceedings of the 11th International Parallel Processing Symposium, Geneva, Switzerland, April 1-5, 1997).
Therefore, it is possible to construct an optimum communication based on a model in which any isotropic mutual transfer has a constant transfer speed if the memories do not overlap.
In addition, if the transfer speed between arbitrary memories is almost the same, and any isotropic mutual transfer does not overlap the memory, NIA (Network Interface Adapter) And the technology called SC (Storage Controller) plays an important role.
[0018]
[Problems to be solved by the invention]
A computer system that satisfies the condition that the transfer performance between two arbitrary memories connected to a network is the same, and the transfer amount per unit time in mutual communication is larger than the transfer amount per unit time in one-side communication Considering the construction of a method for performing the following data transfer in the shortest time.
The data transfer is as follows: (1) The number N (M) of all the memories used is a power of 2. (2) The data type N (D) is about the number N (M) of all the memories used. (3) N (D) types of data are all the same amount of data, and (4) N (D) types of data are in different memories. , The data is transferred so that all N (D) types of data are in all N (M) memories.
When a plurality of data are in different memories, a technique for transmitting data to all memories at an optimum number of times so that communication paths do not compete by skillfully transferring data at the same time has not been clear.
[0019]
SLJohnsonn et al's "Optimum Broadcasting and Personalized Communication in Hypercubes" (IEEE Transactions on Computers Vol.38, No.9, Sept. 1989) discusses an optimal transfer method based on the Hamming distance. The network model is old and cannot be applied to the above computer system.
Further, it cannot be applied to the above general data transfer.
Fujitsu's Horie et al., “Optimum All-to-All Communication in Torus Networks” (Parallel Processing Symposium JSPP92) (Patent: JP 5-151181) assumes a torus network model and cannot be applied to the above computer systems. .
Further, it cannot be applied to the above general data transfer.
[0020]
In the method of broadcasting one data and then broadcasting another data, as the number of types of data increases, it takes a longer transfer time, which has a great adverse effect on the overall performance.
When performing large-scale calculations with an increased number of memories, it is well known that long transfer times have a significant effect on overall performance, and there is a strong need for efficient data transfer. .
However, it has not been clarified what kind of transfer method is effective and how the optimum method is configured.
An object of the present invention is to provide an optimum data transfer method for executing data transfer in a minimum time so that all data to be transferred are on all memories.
[0021]
[Means for Solving the Problems]
  In order to achieve the above object, the present invention provides:
  In a network having M nodes (where M is a power of 2) that can perform one-sided transfer and mutual transfer of data between nodes, and each has a memory, D (where 1 <D <M, (D is a divisor of M) A node-to-node data transfer method for transferring each data in the memory of nodes to all other nodes,
  The transfer of each data between the nodes is as follows:(Log (M / D))After performing one-sided transfer, (logD / log2) times of mutual transfer is performed.
[0022]
  Further, in a parallel computer in which M computers (where M is a power of 2) that can perform one-sided transfer and mutual transfer of data between computers and each have a memory are connected by a network, D (where 1 < D <M, where D is a divisor of M) is an inter-computer data transfer method for transferring each data in the memory of the computer to all other computers, and the transfer of each data between the computers is as follows:(Log (M / D))After performing one-sided transfer, (logD / log2) times of mutual transfer is performed.
[0023]
DETAILED DESCRIPTION OF THE INVENTION
The present invention relates to data transfer between a plurality of nodes connected by a network, and first, structural features that each node should have will be described.
FIG. 14 shows two nodes connected by a transfer path on the network.
Each of the nodes 1404 and 1410 includes processors 1411 and 1412 and data 1403 and 1409 stored in the memory, respectively.
Each node has double transfer paths so that bidirectional data transfer can be performed simultaneously so that bidirectional data transfer and one-sided data transfer can be performed as transfer between nodes. Routes 1405 and 1406 are included.
Further, each node has output ports 1401 and 1408 and input ports 1402 and 1407.
When data transfer between two nodes is one-side data transfer (hereinafter referred to as “one-side transfer”), data 1403 of the node 1404 receives a command from the processor 1411 and transfers from the output port 1401 to the transfer path 1405 and the input port 1407. And the data 1409 of the node 1410 is transferred from the output port 1408 to the transfer path 1406 and the input port 1402 to the node 1404 using only one transfer path in response to an instruction from the processor 1412.
In the case of bidirectional data transfer (hereinafter referred to as mutual transfer), the data 1403 of the node 1404 receives an instruction from the processor 1411, passes from the output port 1401 to the node 1410 through the transfer path 1405 and the input port 1407, and simultaneously to the node 1410. Data 1409 is transferred from the output port 1408 through the transfer path 1406 and the input port 1402 to the node 1404 using both transfer paths in response to an instruction from the processor 1412.
[0024]
Next, a parallel computer which is an example of a system to which the present invention is applied will be described.
FIG. 15 is a diagram showing the characteristics of transfer hardware of a parallel computer, which is an example of realizing the data transfer mode shown in FIG. 14 as a product.
1501 to 1504 are crossbars, 1505, 1507, 1509, and 1511 switches, and 1506, 1508, 1510, and 1512 are nodes (computers). Each node has an output port and an input port shown in FIG. 14 and is a node capable of bidirectional data transfer.
The mutual transfer between the node 1506 and the node 1510 includes a crossbar 1501 which is a transfer path capable of mutual transfer, a switch 1505 and a switch 1509 capable of simultaneously inputting and outputting to the crossbar, and these switches are respectively connected to the node 1505. This is realized by having a configuration in which 1509 can simultaneously input and output.
In addition, mutual transfer between the node 1508 and the node 1512 includes a crossbar 1502 which is a transfer path capable of mutual transfer, a switch 1507 and a switch 1511 capable of simultaneously inputting and outputting to the crossbar, and each of these switches is a node. This is achieved by having a configuration that allows input and output to 1508 and 1512 simultaneously.
The mutual transfer between the node 1506 and the node 1508 is similarly performed by the crossbar 1503, the switch 1505, and the switch 1507, and the mutual transfer between the node 1510 and the node 1512 is similarly performed by the crossbar 1504, the switch 1509, and the switch 1511.
[0025]
Next, a parallel database as another example of a system to which the present invention is applied will be described.
FIG. 18 shows a configuration example of a parallel database.
Similar to FIG. 15, it has a network configuration including switches 1805, 1807, 1809, 1811 and crossbars 1801, 1802, 1803, 1804.
For example, if there is product data on discs 1806 and 1808, and there is sales data on all discs 1806, 1808, 1810, 1812, the product data is transferred to all discs 1806, 1808, 1810, 1812 There is a case of searching for each data. The present invention is applied as a method for transferring product data at this time.
FIG. 16 is an example of the product data, and data relating to the product itself such as product ID and product name is compiled in a table.
FIG. 17 is an example of the sales data, and data relating to sales such as a slip ID, a product ID, and the date and time when the product was sold are collected as a table.
There is a system for searching what products are sold when these two pieces of data are stored. When there is a large amount of data, the data is stored in a plurality of discs.
In such a case, a parallel database is applied.
[0026]
Next, a specific example in which the present invention is applied to data transfer in a parallel computer will be described. Note that the present invention is not limited to parallel computers.
That is, a case of a parallel computer composed of 16 computers each having a memory will be described. In the following description, the description will be made mainly on the memory.
As shown in FIG. 19, when there are four different memories of the same size among the 16 memories, that is, among the memories M (1) to M (16), the memory M (9 ) Is data D (1), memory M (10) is data D (2), memory M (11) is data D (3), memory M (12) is data D (4) If there is, transfer all data so that it is in all memory.
That is, when data D (1), data D (2), data D (3), and data D (4) are transferred so that they are in memory M (1) to memory M (16), the optimum data The transfer method will be specifically described.
[0027]
First, a case where the data transfer method of the present invention is applied, that is, a case where one-side transfer is performed twice first and then mutual transfer (bidirectional data transfer) is performed twice will be described.
This will be described with reference to FIGS.
FIG. 19 shows the situation before transfer.
Data D (1) is stored in memory M (9), data D (2) is stored in memory M (10), data D (3) is stored in memory M (11), and data D (4) is stored in memory M (12). It is in.
[0028]
FIG. 20 shows the first transfer.
Data D (1) in memory M (9) is transferred to memory M (1) on one side (10201)
Data D (2) in memory M (10) is transferred to memory M (2) on one side (10202)
Data D (3) in memory M (11) is transferred to memory M (3) on one side (10203)
Data D (4) in the memory M (12) is transferred to one side (10204) to the memory M (4).
[0029]
FIG. 21 shows the situation after the first transfer.
Data D (1) is in memory M (9) and memory M (1)
Data D (2) is in memory M (10) and memory M (2)
Data D (3) is in memory M (11) and memory M (3)
Data D (4) is in memory M (12) and memory M (4).
[0030]
FIG. 22 shows the second transfer.
Data D (1) in memory M (1) is transferred to memory M (5) on one side (10401)
Data D (2) in memory M (2) is transferred to memory M (6) on one side (10402)
Data D (3) in memory M (3) is transferred to memory M (7) on one side (10403)
Data D (4) in memory M (4) is transferred to memory M (8) on one side (10404)
Data D (1) in memory M (9) is transferred to memory M (13) on one side (10405)
Data D (2) in memory M (10) is transferred to memory M (14) on one side (10406)
Data D (3) in memory M (11) is transferred to memory M (15) on one side (10407)
Data D (4) in the memory M (12) is transferred to one side (10408) to the memory M (16).
[0031]
FIG. 23 shows the situation after the second transfer.
Data D (1) is in memory M (1), memory M (5), memory M (9) and memory M (13),
Data D (2) is in memory M (2), memory M (6), memory M (10) and memory M (14),
Data D (3) is in memory M (3), memory M (7), memory M (11) and memory M (15),
Data D (4) is stored in the memory M (4), the memory M (8), the memory M (12), and the memory M (16).
[0032]
FIG. 24 shows the third transfer.
Data D (1) in the memory M (1) is transferred to the memory M (2), and data D (2) in the memory M (2) is transferred to the memory M (1) (10601, 10602), that is, mutual Forward.
Data D (3) in the memory M (3) is transferred to the memory M (4), and data D (4) in the memory M (4) is transferred to the memory M (3) (10603, 10604), that is, mutual Forward.
Data D (1) in the memory M (5) is transferred to the memory M (6), and data D (2) in the memory M (6) is transferred to the memory M (5) (10605, 10606), that is, mutual Forward.
The data D (3) in the memory M (7) is transferred to the memory M (8) and the data D (4) in the memory M (8) is transferred to the memory M (7) (10607, 10608), that is, mutual Forward.
Data D (1) in the memory M (9) is transferred to the memory M (10), and data D (2) in the memory M (10) is transferred to the memory M (9) (10609, 10610), that is, mutual Forward.
Data D (3) in the memory M (11) is transferred to the memory M (12), and data D (4) in the memory M (12) is transferred to the memory M (11) (10611, 10612), that is, mutual Forward.
Data D (1) in the memory M (13) is transferred to the memory M (14), and data D (2) in the memory M (14) is transferred to the memory M (13) (10613, 10614), that is, mutual Forward.
Data D (3) in the memory M (15) is transferred to the memory M (16), and data D (4) in the memory M (16) is transferred to the memory M (15) (10615, 10616), that is, mutual Forward.
[0033]
FIG. 25 shows the situation after the third transfer.
[0034]
Data D (1) is memory M (1), memory M (2), memory M (5), memory M (6), memory M (9), memory M (10), memory M (13), memory M (14)
Data D (2) is memory M (1), memory M (2), memory M (5), memory M (6), memory M (9), memory M (10), memory M (13), memory M (14)
Data D (3) is memory M (3), memory M (4), memory M (7), memory M (8), memory M (11), memory M (12), memory M (15), memory M (16)
Data D (4) is memory M (3), memory M (4), memory M (7), memory M (8), memory M (11), memory M (12), memory M (15), memory M It is in (16).
[0035]
FIG. 26 shows the fourth transfer.
[0036]
Data D (1) and data D (2) in memory M (1) are combined into memory M (3), and data D (3) and data D (4) in memory M (3) are combined into memory Transfer to M (1) (10801, 10802), that is, transfer to each other.
Data D (1) and data D (2) in memory M (2) are combined into memory M (4), and data D (3) and data D (4) in memory M (4) are combined into memory Transfer to M (2) (10803, 10804), that is, transfer to each other.
Data D (1) and data D (2) in memory M (5) are combined into memory M (7), and data D (3) and data D (4) in memory M (7) are combined into memory Transfer to M (5) (10805, 10806), that is, transfer to each other.
Data D (1) and data D (2) in memory M (6) are combined into memory M (8), and data D (3) and data D (4) in memory M (8) are combined into memory Transfer to M (6) (10807, 10808), that is, transfer to each other.
Data D (1) and data D (2) in memory M (9) are combined into memory M (11), and data D (3) and data D (4) in memory M (11) are combined into memory Transfer to M (9) (10809, 10810), that is, transfer to each other.
Data D (1) and data D (2) in memory M (10) are combined into memory M (12), and data D (3) and data D (4) in memory M (12) are combined into memory Transfer (10811, 10812) to M (10), that is, transfer to each other.
Data D (1) and data D (2) in memory M (13) are combined into memory M (15), and data D (3) and data D (4) in memory M (15) are combined into memory Transfer to M (13) (10813, 10814), that is, transfer to each other.
Data D (1) and data D (2) in memory M (14) are combined into memory M (16), and data D (3) and data D (4) in memory M (16) are combined into memory Transfer to M (14) (10815, 10816), that is, transfer to each other.
FIG. 27 shows a state in which all transfers have been completed.
[0037]
Although the case where the data transfer method of the present invention is applied has been described above, the communication between the 16 memories and the four types of data includes two one-side transfers and two mutual transfers.
There are a total of six combinations of the one-side transfer and the mutual transfer because they are permutation combinations that combine two out of four.
In particular,
(1 set) One side-One side-Mutual-Mutual
(Set of 2) One side-Mutual-One side-Mutual
(Set of 3) one side-mutual-mutual-one side
(Set of 4) Mutual-Mutual-One side-One side
(5 pairs) Mutual-one side-mutual-one side
(6 pairs) Mutual-one side-one side-mutual
These are six.
Among these, (one set) is a case where the present invention is applied.
Hereinafter, (group 2) to (group 6) to which the present invention is not applied will be described with reference to FIGS.
[0038]
First, (two sets) will be described.
FIG. 28 shows the situation before transfer.
FIG. 29 shows the first transfer.
Data in memory M (9) is transferred to M (1) on one side (20201).
Data in the memory M (10) is transferred to one side (20202) to M (2).
Data in the memory M (11) is transferred to the M (3) one side (20203).
Data in the memory M (12) is transferred to the M (4) on one side (20204).
[0039]
FIG. 30 shows the situation after the first transfer.
Data D (1) is in memory M (1) and memory M (9)
Data D (2) is in memory M (2) and memory M (10)
Data D (3) is in memory M (3) and memory M (11)
Data D (4) is in memory M (4) and memory M (12).
[0040]
FIG. 31 shows the second transfer.
Data D (1) in the memory M (1) is transferred to the memory M (2), and data D (2) in the memory M (2) is transferred to the memory M (1) (20401, 20402), that is, mutual Forward.
Data D (3) in the memory M (3) is transferred to the memory M (4), and data D (4) in the memory M (4) is transferred to the memory M (3) (20403, 20404), that is, mutual Forward.
Data D (1) in the memory M (9) is transferred to the memory M (10), and data D (2) in the memory M (10) is transferred to the memory M (9) (20405, 20406), that is, mutual Forward.
Data D (3) in the memory M (11) is transferred to the memory M (12), and data D (4) in the memory M (12) is transferred to the memory M (11) (20407, 20408), that is, mutual Forward.
[0041]
FIG. 32 shows the situation after the second transfer.
Data D (1) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (2) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (3) is in memory M (3), memory M (4), memory M (11) and memory M (12),
The data D (4) is stored in the memory M (3), the memory M (4), the memory M (11), and the memory M (12).
[0042]
FIG. 33 shows the third transfer.
Data D (1) and data D (2) in the memory M (1) are collectively transferred to the memory M (5) on one side (20601).
Data D (1) and data D (2) in the memory M (2) are collectively transferred to the memory M (6) on one side (20602).
Data D (3) and data D (4) in the memory M (3) are collectively transferred to the memory M (7) on one side (20603).
Data D (3) and data D (4) in the memory M (4) are collectively transferred to the memory M (8) on one side (20604).
Data D (1) and data D (2) in the memory M (9) are collectively transferred to the memory M (13) on one side (20605).
Data D (1) and data D (2) in the memory M (10) are collectively transferred to the memory M (14) on one side (20606).
Data D (3) and data D (4) in the memory M (11) are collectively transferred to the memory M (15) on one side (20607).
Data D (3) and data D (4) in the memory M (12) are collectively transferred to the memory M (16) on one side (20608).
[0043]
FIG. 34 shows the situation after the third transfer.
Data D (1) is memory M (1), memory M (2), memory M (5), memory M (6), memory M (9), memory M (10), memory M (13), and memory M. (14)
Data D (2) is stored in memory M (1), memory M (2), memory M (5), memory M (6), memory M (9), memory M (10), memory M (13), and memory M. (14)
Data D (3) is memory M (3), memory M (4), memory M (7), memory M (8), memory M (11), memory M (12), memory M (15), and memory M. (16)
Data D (4) is stored in memory M (3), memory M (4), memory M (7), memory M (8), memory M (11), memory M (12), memory M (15), and memory M. It is in (16).
[0044]
FIG. 35 shows the fourth transfer.
Data D (1) and data D (2) in memory M (1) are combined into memory M (3), and data D (3) and data D (4) in memory M (3) are combined into memory Transfer to M (1) (20801, 20802), that is, transfer to each other.
Data D (1) and data D (2) in memory M (2) are combined into memory M (4), and data D (3) and data D (4) in memory M (4) are combined into memory Transfer to M (2) (20803, 20804), that is, transfer to each other.
Data D (1) and data D (2) in memory M (5) are combined into memory M (7), and data D (3) and data D (4) in memory M (7) are combined into memory Transfer to M (5) (20805, 20806), that is, transfer to each other.
Data D (1) and data D (2) in memory M (6) are combined into memory M (8), and data D (3) and data D (4) in memory M (8) are combined into memory Transfer to M (6) (20807, 20808), that is, transfer to each other.
Data D (1) and data D (2) in memory M (9) are combined into memory M (11), and data D (3) and data D (4) in memory M (11) are combined into memory Transfer (20809, 20810) to M (9), that is, transfer to each other.
Data D (1) and data D (2) in memory M (10) are combined into memory M (12), and data D (3) and data D (4) in memory M (12) are combined into memory Transfer to M (10) (20811, 20812), that is, transfer to each other.
Data D (1) and data D (2) in memory M (13) are combined into memory M (15), and data D (3) and data D (4) in memory M (15) are combined into memory Transfer to M (13) (20813, 20814), that is, transfer to each other.
Data D (1) and data D (2) in memory M (14) are combined into memory M (16), and data D (3) and data D (4) in memory M (16) are combined into memory Transfer to M (14) (20815, 20816), that is, transfer to each other.
FIG. 36 shows a situation where all transfers have been completed.
[0045]
Next, (set of 3) will be described.
FIG. 37 shows the situation before transfer.
FIG. 38 shows the first transfer.
The data in the memory M (9) is transferred to one side (30201) to M (1).
Data in the memory M (10) is transferred to one side (30202) to M (2).
Data in the memory M (11) is transferred to one side (30203) to M (3).
The data in the memory M (12) is transferred to one side (30204) to M (4).
[0046]
FIG. 39 shows the situation after the first transfer.
Data D (1) is in memory M (1) and memory M (9)
Data D (2) is in memory M (2) and memory M (10)
Data D (3) is in memory M (3) and memory M (11)
Data D (4) is in memory M (4) and memory M (12).
[0047]
FIG. 40 shows the second transfer.
Data D (1) in the memory M (1) is transferred to the memory M (2), and data D (2) in the memory M (2) is transferred to the memory M (1) (30401, 30402), that is, mutual Forward.
Data D (3) in the memory M (3) is transferred to the memory M (4), and data D (4) in the memory M (4) is transferred to the memory M (3) (30403, 30404), that is, mutual Forward.
Data D (1) in the memory M (9) is transferred to the memory M (10), and data D (2) in the memory M (10) is transferred to the memory M (9) (30405, 30406), that is, mutual Forward.
Data D (3) in the memory M (11) is transferred to the memory M (12), and data D (4) in the memory M (12) is transferred to the memory M (11) (30407, 30408), that is, mutual Forward.
[0048]
FIG. 41 shows the situation after the second transfer.
Data D (1) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (2) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (3) is in memory M (3), memory M (4), memory M (11) and memory M (12),
The data D (4) is stored in the memory M (3), the memory M (4), the memory M (11), and the memory M (12).
[0049]
FIG. 42 shows the third transfer.
Data D (1) and data D (2) in memory M (1) are combined into memory M (3), and data D (3) and data D (4) in memory M (3) are combined into memory Transfer to M (1) (30601, 30602), that is, transfer to each other.
Data D (1) and data D (2) in memory M (2) are combined into memory M (4), and data D (3) and data D (4) in memory M (4) are combined into memory Transfer to M (2) (30603, 30604), that is, transfer to each other.
Data D (1) and data D (2) in memory M (9) are combined into memory M (11), and data D (3) and data D (4) in memory M (11) are combined into memory Transfer to M (9) (30605, 30606), that is, transfer to each other.
Data D (1) and data D (2) in memory M (10) are combined into memory M (12), and data D (3) and data D (4) in memory M (12) are combined into memory Transfer to M (10) (30607, 30608), that is, transfer to each other.
[0050]
FIG. 43 shows the situation after the third transfer.
Data D (1) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. It is in (12).
Data D (2) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. It is in (12).
Data D (3) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. It is in (12).
Data D (4) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. It is in (12).
[0051]
FIG. 44 shows the fourth transfer.
Data D (1), data D (2), data D (3), and data D (4) in the memory M (1) are collectively transferred to the memory M (5) on one side.
Data D (1), data D (2), data D (3), and data D (4) in the memory M (2) are collectively transferred to the memory M (6).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (3) are collectively transferred to the memory M (7) on one side.
Data D (1), data D (2), data D (3), and data D (4) in the memory M (4) are collectively transferred to the memory M (8) on one side.
Data D (1), data D (2), data D (3), and data D (4) in the memory M (9) are collectively transferred to the memory M (13).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (10) are collectively transferred to the memory M (14).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (11) are collectively transferred to the memory M (15).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (12) are collectively transferred to the memory M (16) on one side.
FIG. 45 shows a situation where all transfers have been completed.
[0052]
Next, (set of 4) will be described.
FIG. 46 shows the situation before transfer.
FIG. 47 shows the first transfer.
Data D (1) in the memory M (9) is transferred to the memory M (10), and data D (2) in the memory M (10) is transferred to the memory M (9) (40201, 40202), that is, mutual Forward.
Data D (3) in the memory M (11) is transferred to the memory M (12), and data D (4) in the memory M (12) is transferred to the memory M (11) (40203, 40204), that is, mutual Forward.
[0053]
FIG. 48 shows the situation after the first transfer.
Data D (1) is in memory M (9) and memory M (10)
Data D (2) is in memory M (9) and memory M (10)
Data D (3) is in memory M (11) and memory M (12)
Data D (4) is stored in the memory M (11) and the memory M (12).
[0054]
FIG. 49 shows the second transfer.
Data D (1) and data D (2) in memory M (9) are combined into memory M (11), and data D (3) and data D (4) in memory M (11) are combined into memory Transfer to M (9) (40401, 40403), that is, transfer to each other.
Data D (1) and data D (2) in memory M (10) are combined into memory M (12), and data D (3) and data D (4) in memory M (12) are combined into memory Transfer to M (10) (40402, 40404), that is, transfer to each other.
[0055]
FIG. 50 shows the situation after the second transfer.
Data D (1) is in memory M (9), memory M (10), memory M (11) and memory M (12),
Data D (2) is in memory M (9), memory M (10), memory M (11) and memory M (12),
Data D (3) is in memory M (9), memory M (10), memory M (11) and memory M (12),
Data D (4) is stored in the memory M (9), the memory M (10), the memory M (11), and the memory M (12).
[0056]
FIG. 51 shows the third transfer.
Data D (1), data D (2), data D (3), and data D (4) in the memory M (9) are collectively transferred to the memory M (1) (40601).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (10) are collectively transferred to the memory M (2) (40602).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (11) are collectively transferred to the memory M (3) (40603).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (12) are collectively transferred to the memory M (4) (40604).
[0057]
FIG. 52 shows the situation after the third transfer.
Data D (1) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. (12)
Data D (2) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. (12)
Data D (3) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. (12)
Data D (4) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. It is in (12).
[0058]
FIG. 53 shows the fourth transfer.
Data D (1), data D (2), data D (3), and data D (4) in the memory M (1) are collectively transferred to the memory M (5) on one side (40801).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (2) are collectively transferred to the memory M (6) (40802).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (3) are collectively transferred to the memory M (7) (40803).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (4) are collectively transferred to the memory M (8) (40804).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (9) are collectively transferred to the memory M (13) (40805).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (10) are collectively transferred to the memory M (14) on one side (40806).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (11) are collectively transferred to the memory M (15) (40807).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (12) are collectively transferred to the memory M (16) (40808).
FIG. 54 shows a situation where all transfers have been completed.
[0059]
Next, (set of 5) will be described.
FIG. 55 shows the situation before transfer.
FIG. 56 shows the first transfer.
The data D (1) in the memory M (9) is transferred to the memory M (10) and the data D (2) in the memory M (10) is transferred to the memory M (9) (50201, 50202), that is, mutually Forward.
Data D (3) in the memory M (11) is transferred to the memory M (12), and data D (4) in the memory M (12) is transferred to the memory M (11) (50203, 50204), that is, mutual Forward.
[0060]
FIG. 57 shows the situation after the first transfer.
Data D (1) is in memory M (9) and memory M (10)
Data D (2) is in memory M (9) and memory M (10)
Data D (3) is in memory M (11) and memory M (12)
Data D (4) is stored in the memory M (11) and the memory M (12).
[0061]
FIG. 58 shows the second transfer.
Data D (1) and data D (2) in the memory M (9) are collectively transferred to the memory M (1) on one side (50401).
Data D (1) and data D (2) in the memory M (10) are collectively transferred to the memory M (2) on one side (50402).
Data D (3) and data D (4) in the memory M (11) are collectively transferred to the memory M (3) on one side (50403).
Data D (3) and data D (4) in the memory M (12) are collectively transferred to the memory M (4) on one side (50404).
[0062]
FIG. 59 shows the situation after the second transfer.
Data D (1) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (2) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (3) is in memory M (3), memory M (4), memory M (11) and memory M (12),
The data D (4) is stored in the memory M (3), the memory M (4), the memory M (11), and the memory M (12).
[0063]
FIG. 60 shows the third transfer.
Data D (1) and data D (2) in memory M (1) are combined into memory M (3), and data D (3) and data D (4) in memory M (3) are combined into memory Transfer to M (1) (50601, 50602), that is, transfer to each other.
Data D (1) and data D (2) in memory M (2) are combined into memory M (4), and data D (3) and data D (4) in memory M (4) are combined into memory Transfer to M (2) (50603, 50604), that is, transfer to each other.
Data D (1) and data D (2) in memory M (9) are combined into memory M (11), and data D (3) and data D (4) in memory M (11) are combined into memory Transfer to M (9) (50605, 50606), that is, transfer to each other.
Data D (1) and data D (2) in memory M (10) are combined into memory M (12), and data D (3) and data D (4) in memory M (12) are combined into memory Transfer to M (10) (50607, 50608), that is, transfer to each other.
[0064]
FIG. 61 shows the situation after the third transfer.
Data D (1) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. (12)
Data D (2) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. (12)
Data D (3) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. (12)
Data D (4) is stored in memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), and memory M. It is in (12).
[0065]
FIG. 62 shows the fourth transfer.
Data D (1), data D (2), data D (3), and data D (4) in the memory M (1) are collectively transferred to the memory M (5) (50801).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (2) are collectively transferred to the memory M (6) (50802).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (3) are collectively transferred to the memory M (7) (50803).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (4) are collectively transferred to the memory M (8) (50804).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (9) are collectively transferred to the memory M (13) (50805).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (10) are collectively transferred to the memory M (14) (50806).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (11) are collectively transferred to the memory M (15) (50807).
Data D (1), data D (2), data D (3), and data D (4) in the memory M (12) are collectively transferred to the memory M (16) (50808).
FIG. 63 shows a situation where all transfers have been completed.
[0066]
Next, (6 sets) will be described.
FIG. 64 shows the situation before transfer.
FIG. 65 shows the first transfer.
Data D (1) in the memory M (9) is transferred to the memory M (10), and data D (2) in the memory M (10) is transferred to the memory M (9) (60201, 60202), that is, mutual Forward.
The data D (3) in the memory M (11) is transferred to the memory M (12) and the data D (4) in the memory M (12) is transferred to the memory M (11) (60203, 60204), that is, mutual Forward.
[0067]
FIG. 66 shows the situation after the first transfer.
Data D (1) is in memory M (9) and memory M (10)
Data D (2) is in memory M (9) and memory M (10)
Data D (3) is in memory M (11) and memory M (12)
Data D (4) is stored in the memory M (11) and the memory M (12).
[0068]
FIG. 67 shows the second transfer.
Data D (1) and data D (2) in the memory M (9) are collectively transferred to the memory M (1) (60401).
Data D (1) and data D (2) in the memory M (10) are collectively transferred to the memory M (2) (60402).
Data D (3) and data D (4) in the memory M (11) are collectively transferred to the memory M (3) on one side (60403).
Data D (3) and data D (4) in the memory M (12) are collectively transferred to the memory M (4) on one side (60404).
[0069]
FIG. 68 shows the situation after the second transfer.
Data D (1) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (2) is in memory M (1), memory M (2), memory M (9) and memory M (10),
Data D (3) is in memory M (3), memory M (4), memory M (11) and memory M (12),
The data D (4) is stored in the memory M (3), the memory M (4), the memory M (11), and the memory M (12).
[0070]
FIG. 69 shows the third transfer.
Data D (1) and data D (2) in the memory M (1) are collectively transferred to the memory M (5) on one side (60601).
Data D (1) and data D (2) in the memory M (2) are collectively transferred to the memory M (6) (60602).
Data D (3) and data D (4) in the memory M (3) are collectively transferred to the memory M (7) on one side (60603).
Data D (3) and data D (4) in the memory M (4) are collectively transferred to the memory M (8) on one side (60604).
Data D (1) and data D (2) in the memory M (9) are collectively transferred to the memory M (13) on one side (60605).
Data D (1) and data D (2) in the memory M (10) are collectively transferred to the memory M (14) (60606).
Data D (3) and data D (4) in the memory M (11) are collectively transferred to the memory M (15) (60607).
Data D (3) and data D (4) in the memory M (12) are collectively transferred to the memory M (16) (60608).
[0071]
FIG. 70 shows the situation after the third transfer.
Data D (1) is memory M (1), memory M (2), memory M (5), memory M (6), memory M (9), memory M (10), memory M (13), and memory M. (14)
Data D (2) is stored in memory M (1), memory M (2), memory M (5), memory M (6), memory M (9), memory M (10), memory M (13), and memory M. (14)
Data D (3) is memory M (3), memory M (4), memory M (7), memory M (8), memory M (11), memory M (12), memory M (15), and memory M. (16)
Data D (4) is stored in memory M (3), memory M (4), memory M (7), memory M (8), memory M (11), memory M (12), memory M (15), and memory M. It is in (16).
[0072]
FIG. 71 shows the fourth transfer.
Data D (1) and data D (2) in memory M (1) are combined into memory M (3), and data D (3) and data D (4) in memory M (3) are combined into memory Transfer to M (1) (60801, 60802), that is, transfer to each other.
Data D (1) and data D (2) in memory M (2) are combined into memory M (4), and data D (3) and data D (4) in memory M (4) are combined into memory Transfer to M (2) (60803, 60804), that is, transfer to each other.
Data D (1) and data D (2) in memory M (5) are combined into memory M (7), and data D (3) and data D (4) in memory M (7) are combined into memory Transfer to M (5) (60805, 60806), that is, transfer to each other.
Data D (1) and data D (2) in memory M (6) are combined into memory M (8), and data D (3) and data D (4) in memory M (8) are combined into memory Transfer to M (6) (60807, 60808), that is, transfer to each other.
Data D (1) and data D (2) in memory M (9) are combined into memory M (11), and data D (3) and data D (4) in memory M (11) are combined into memory Transfer to M (9) (60809, 60810), that is, transfer to each other.
Data D (1) and data D (2) in memory M (10) are combined into memory M (12), and data D (3) and data D (4) in memory M (12) are combined into memory Transfer to M (10) (60811, 60812), that is, transfer to each other.
Data D (1) and data D (2) in memory M (13) are combined into memory M (15), and data D (3) and data D (4) in memory M (15) are combined into memory Transfer to M (13) (60813, 60814), that is, transfer to each other.
Data D (1) and data D (2) in memory M (14) are combined into memory M (16), and data D (3) and data D (4) in memory M (16) are combined into memory Transfer to M (14) (60815, 60816), that is, transfer to each other.
FIG. 72 shows a situation where all transfers have been completed.
This completes the description of (group 2) to (group 6).
[0073]
Now, it will be described that (1 set) is a more efficient transfer method than (2 set) to (6 set).
The communication speed is generally divided into a preparation time for communication and a time during actual communication.
From (1 set) to (6 set), the number of transfers is all four, so the preparation time for communication is the same. However, the communication time is different.
In general, it may be considered that the time required for communication increases linearly as the amount of data to be communicated increases.
For the sake of simplicity, the transfer time for one type of data is 1 second.
[0074]
(1 set)
The first transfer takes 1 second because each memory sends one data.
The second transfer takes 1 second because each memory sends one data.
The third transfer takes 1 second because each memory sends one data.
The second transfer takes 2 seconds because each memory sends two data.
Therefore, the total is 5 seconds.
[0075]
  (2 sets)
  The first transfer takes 1 second because each memory sends one data.
  The second transfer takes 1 second because each memory sends one data.
  In the third transfer, each memorytwo2 seconds to send one data.
  The second transfer takes 2 seconds because each memory sends two data.
  Therefore, the total is 6 seconds.
[0076]
  (Group 3)
  The first transfer takes 1 second because each memory sends one data.
  The second transfer takes 1 second because each memory sends one data.
  In the third transfer, each memorytwo2 seconds to send one data.
  In the fourth transfer, each memoryFour4 seconds to send one data.
  Therefore, the total is 8 seconds.
[0077]
  (4 sets)
  The first transfer takes 1 second because each memory sends one data.
  In the second transfer, each memorytwo2 seconds to send one data.
  In the third transfer, each memoryFour4 seconds to send one data.
  In the fourth transfer, each memoryFour4 seconds to send one data.
  Therefore, the total is 11 seconds.
[0078]
  (5 sets)
  The first transfer takes 1 second because each memory sends one data.
  In the second transfer, each memorytwo2 seconds to send one data.
  In the third transfer, each memorytwo2 seconds to send one data.
  In the fourth transfer, each memoryFour4 seconds to send one data.
  Therefore, the total is 9 seconds.
[0079]
  (6 sets)
  The first transfer takes 1 second because each memory sends one data.
  In the second transfer, each memorytwo2 seconds to send one data.
  In the third transfer, each memorytwo2 seconds to send one data.
  The second transfer takes 2 seconds because each memory sends two data.
  Therefore, the total is 7 seconds.
[0080]
Therefore, 5 seconds (one set) is the fastest.
Here, the one-side transfer and the mutual transfer are made the same speed, but the same (one set) is the fastest even at different speeds.
This is because the time required for mutual transfer is the same in any group, and the length of time is determined by the size of one-sided transfer.
[0081]
  Next, a general case of the data transfer method of the present invention will be described.
  That is, the number of memories is N (M), N (M) is a power of 2, the number of data types is N (D), N (D) is a divisor of the number of memories, and The data transfer method of the present invention when 1 and N (M) are not described.
  In the data transfer method of the present invention in which one or a plurality of data are in different memories, all the data is in all the memories. ) / log (2) times. This number is the optimum number.
  In the data transfer method of the present invention, first,{(log [ ( Number of memory ) / ( Number of data types ) ] }One-sided transfer is performed, and then {log (number of types of data) / log (2)} times of mutual transfer is performed.
[0082]
Next, the reason why the data transfer time can be minimized by adopting the data transfer method of the present invention will be described below.
(1). When the number of data types N (D) is the largest, that is, when N (D) is equal to the number of memories N (M), this is called a global cast, and all transfers in this case consist of mutual transfers. The The number of mutual transfers is log (the number of memories).
The optimum number of transfers when the number of data types is small is smaller than when the number of data types is the largest.
Therefore,
Figure 0003703304
It becomes.
On the other hand, when broadcasting one type of data, it is configured by only one-sided transfer, and the number of times is log (number of memories).
When transferring a general type, the number of transfers should be higher than when transferring at least one type of data by broadcast communication.
Since the number of transfers is log (number of memories) than when transferring one type of data by broadcast communication,
Figure 0003703304
It becomes.
By combining Expressions (1) and (2), the optimum number of transfers is log (the number of memories).
[0083]
  (2). Next, unlike single-sided transfer, mutual transfer does not increase the number of memories with data. Therefore, even if the mutual transfer is performed more than {log (number of types of data) / log (2)} times, the data cannot be transferred to the entire memory.
  Therefore, the maximum number of mutual transfers is {log (number of types of data) / log (2)} times.
  As described in the explanation of mutual transfer in the section of “Prior Art”, it is efficient to increase the number of mutual transfers as much as possible.
  Therefore, the mutual transfer should be performed {log (number of types of data) / log (2)} times.
  The remaining transfers are configured by one-sided transfer that increases the number of memories with data. The number of memories that increase the number of types of data for each data is (number of memories) / (number of types of data).
  If this is configured by one-sided transfer following the Recursive Broadcast Algorithm described in the section “Prior Art”,{(log [ ( Number of memory ) / ( Number of data types ) ] }Times.
  In this way, {log (number of data types) / log (2)} times of mutual transfer and one-sided transfer{(log [ ( Number of memory ) / ( Number of data types ) ] }The total number of times is {(log (number of memories) / log (2)} times, which is the number shown in (1).
[0084]
  next,{(log [ ( Number of memory ) / ( Number of data types ) ] }The order of both one-side transfers and {log (number of types of data) / log (2)} times is a problem.
  Here, the reason why it is more efficient to perform all one-side transfer first will be described.
  Unlike mutual transfer, one-sided transfer increases the number of memories with data.
  In addition, since the mutual transfer is highly efficient, if as many memories as possible can be mutually transferred, the entire memory can be transferred with high efficiency.
  Therefore, if the one-side transfer is performed first as much as possible to increase the number of memories having data and then the mutual transfer is performed, the overall transfer efficiency becomes the highest.
  For this reason, all the one-side transfers are performed first, and then the mutual transfers are performed.
[0085]
  FIG. 1 is a flowchart showing the contents of processing performed in each computer when the data transfer of the present invention is executed in the parallel computer.
  In step 101, optimum data transfer is started.
  In step 102, the number of memories N (M) (same as the number of computers) is input. In step 103, the number of data types N (D) is input, and data storage location information indicating in which memory the data to be transferred is stored is input.
  Each computer has a table of data transfer order patterns determined by the combination of the number of memories N (M), the number of data types N (D), and data storage location information for each combination. Are transferred sequentially.
  First, in step 104,{Log [ ( N ( M )) / ( N ( D )) ]}One-sided transfer.
  Next, in step 105, mutual transfer is performed {log (N (D)) / log (2)} times.
  In step 106, the optimum data transfer is terminated.
[0086]
Furthermore, the following case will be described in detail as another specific example.
That is, when 16 memories are used, and 8 of them have different data of the same size, that is, the memory M (1) among the memories M (1) to M (16) Data D (1), data M (2) in memory M (2), data D (3) in memory M (3), data D (4) in memory M (4), memory Data D (5) is stored in M (5), data D (6) is stored in memory M (6), data D (7) is stored in memory M (7), and data D is stored in memory M (8). (8) If there is, transfer so that all data is in all memory.
That is, data D (1), data D (2), data D (3), data D (4), data D (5), data D (6), data D (7), data D (8) The optimum data transfer method when data is transferred as in the memories M (1) to M (16) will be specifically described.
In this case, the data transfer method is based on the general description of the data transfer method described above, with one-side transfer being performed once and then mutual transfer being performed three times.
[0087]
  Next, figure73From figure81This will be specifically described with reference to FIG.
  Figure73Indicates the situation before transfer.
  Data D (1) is in memory M (1), data D (2) is in memory M (2), data D (3) is in memory M (3), and data D (4) is in memory M (4), data D (5) is in memory M (5), data D (6) is in memory M (6), data D (7) is in memory M (7), data D (8) is in the memory M (8).
[0088]
  Figure74Represents the first transfer.
  Data D (1) in the memory M (1) is transferred to one side (70201) to the memory M (9).
  Data D (2) in the memory M (2) is transferred to one side (70202) to the memory M (10).
  Data D (3) in the memory M (3) is transferred to one side (70203) to the memory M (11).
  Data D (4) in the memory M (4) is transferred to one side (70204) to the memory M (12).
  Data D (5) in the memory M (5) is transferred to one side (70205) to the memory M (13).
  Data D (6) in the memory M (6) is transferred to one side (70206) to the memory M (14).
  Data D (7) in the memory M (7) is transferred to the memory M (15) on one side (70207).
  Data D (8) in the memory M (8) is transferred to one side (70208) to the memory M (16).
[0089]
  Figure75Indicates the situation after the first transfer.
  Data D (1) is in memory M (1) and memory M (9)
Data D (2) is in memory M (2) and memory M (10)
Data D (3) is in memory M (3) and memory M (11)
Data D (4) is in memory M (4) and memory M (12)
Data D (5) is in memory M (5) and memory M (13)
Data D (6) is in memory M (6) and memory M (14)
Data D (7) is in memory M (7) and memory M (15)
Data D (8) is stored in the memory M (8) and the memory M (16).
[0090]
  Figure76Represents the second transfer.
  The data D (1) in the memory M (1) is transferred to the memory M (2), and the data D (2) in the memory M (2) is transferred to the memory M (1) (70401, 70402), that is, mutual Forward.
  Data D (3) in the memory M (3) is transferred to the memory M (4), and data D (4) in the memory M (4) is transferred to the memory M (3) (70403, 70404), that is, mutual Forward.
  Data D (5) in the memory M (5) is transferred to the memory M (6), and data D (6) in the memory M (6) is transferred to the memory M (5) (70405, 70406), that is, mutual Forward.
  Data D (7) in the memory M (7) is transferred to the memory M (8), and data D (8) in the memory M (8) is transferred to the memory M (7) (70407, 70408), that is, mutual Forward.
  Data D (1) in the memory M (9) is transferred to the memory M (10), and data D (2) in the memory M (10) is transferred to the memory M (9) (70409, 70410), that is, mutual Forward.
  The data D (3) in the memory M (11) is transferred to the memory M (12) and the data D (4) in the memory M (12) is transferred to the memory M (11) (70411, 70412), that is, mutual Forward.
  Data D (5) in the memory M (13) is transferred to the memory M (14), and data D (6) in the memory M (14) is transferred to the memory M (13) (70413, 70414), that is, mutual Forward.
  Data D (7) in the memory M (15) is transferred to the memory M (16), and data D (8) in the memory M (16) is transferred to the memory M (15) (70415, 70416), that is, mutual Forward.
[0091]
  Figure77Indicates the situation after the second transfer.
  Data D (1) is in memory M (1), memory M (2), memory M (9), memory M (10),
Data D (2) is in memory M (1), memory M (2), memory M (9), memory M (10),
Data D (3) is in memory M (3), memory M (4), memory M (11), memory M (12),
Data D (4) is in memory M (3), memory M (4), memory M (11), memory M (12),
Data D (5) is in memory M (5), memory M (6), memory M (13), memory M (14),
Data D (6) is in memory M (5), memory M (6), memory M (13), memory M (14),
Data D (7) is in memory M (7), memory M (8), memory M (15), memory M (16),
Data D (8) is stored in the memory M (7), the memory M (8), the memory M (15), and the memory M (16).
[0092]
  Figure78Represents the third transfer.
  Data D (1) and data D (2) in memory M (1) are combined into memory M (3), and data D (3) and data D (4) in memory M (3) are combined into memory Transfer to M (1) (70601, 70602), that is, transfer to each other.
  Data D (1) and data D (2) in memory M (2) are combined into memory M (4), and data D (3) and data D (4) in memory M (4) are combined into memory Transfer to M (2) (70603, 70604), that is, transfer to each other.
  Data D (5) and data D (6) in memory M (5) are combined into memory M (7), and data D (5) and data D (6) in memory M (7) are combined into memory Transfer to M (5) (70605, 70606), that is, transfer to each other.
  Data D (5) and data D (6) in memory M (6) are combined into memory M (8), and data D (5) and data D (6) in memory M (8) are combined into memory Transfer to M (6) (70607, 70608), that is, transfer to each other.
  Data D (1) and data D (2) in memory M (9) are combined into memory M (11), and data D (3) and data D (4) in memory M (11) are combined into memory Transfer to M (9) (70609, 70610), that is, transfer to each other.
  Data D (1) and data D (2) in memory M (10) are combined into memory M (12), and data D (3) and data D (4) in memory M (12) are combined into memory Transfer to M (10) (70611, 70612), that is, transfer to each other.
  Data D (5) and data D (6) in memory M (13) are combined into memory M (15), and data D (5) and data D (6) in memory M (15) are combined into memory Transfer to M (13) (70613, 70614), that is, transfer to each other.
  Data D (5) and data D (6) in memory M (14) are combined into memory M (16), and data D (5) and data D (6) in memory M (16) are combined into memory Transfer to M (14) (70615, 70616), that is, transfer to each other.
[0093]
  Figure79Indicates the situation after the third transfer.
  Data D (1) is memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), memory M (12)
Data D (2) is memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), memory M (12)
Data D (3) is memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), memory M (12)
Data D (4) is memory M (1), memory M (2), memory M (3), memory M (4), memory M (9), memory M (10), memory M (11), memory M (12)
Data D (5) is memory M (5), memory M (6), memory M (7), memory M (8), memory M (13), memory M (14), memory M (15), memory M (16)
Data D (6) is memory M (5), memory M (6), memory M (7), memory M (8), memory M (13), memory M (14), memory M (15), memory M (16)
Data D (7) is memory M (5), memory M (6), memory M (7), memory M (8), memory M (13), memory M (14), memory M (15), memory M (16)
Data D (8) is memory M (5), memory M (6), memory M (7), memory M (8), memory M (13), memory M (14), memory M (15), memory M It is in (16).
[0094]
  Figure80Represents the fourth transfer.
  Data D (1), data D (2), data D (3), and data D (4) in memory M (1) are combined into memory M (5) and data D (in memory M (5) 5), data D (6), data D (7), and data D (8) are transferred together (70801, 70802), ie, transferred to the memory M (1).
  Data D (1), data D (2), data D (3), and data D (4) in memory M (2) are combined into memory M (6) and data D (in memory M (6) 5), data D (6), data D (7), and data D (8) are transferred together (70803, 70804), that is, transferred to the memory M (2).
  Data D (1), data D (2), data D (3), and data D (4) in memory M (3) are combined into memory M (7), and data D (in memory M (7) 5), data D (6), data D (7), and data D (8) are transferred together to the memory M (3) (70805, 70806), that is, mutually transferred.
  Data D (1), data D (2), data D (3), and data D (4) in memory M (4) are combined into memory M (8) and data D (in memory M (8) 5), data D (6), data D (7), and data D (8) are transferred together to the memory M (4) (70807, 70808), that is, mutually transferred.
  Data D (1), data D (2), data D (3), and data D (4) in memory M (9) are combined into memory M (13) and data D (in memory M (13) 5), data D (6), data D (7), and data D (8) are collectively transferred to the memory M (9) (70809, 70810), that is, mutually transferred.
  The data D (1), data D (2), data D (3), and data D (4) in the memory M (10) are combined into the memory M (14), and the data D ( 5), data D (6), data D (7), and data D (8) are transferred together to the memory M (10) (70811, 70812), that is, mutually transferred.
  The data D (1), data D (2), data D (3), and data D (4) in the memory M (11) are collectively stored in the memory M (15), and the data D ( 5), data D (6), data D (7), and data D (8) are transferred together (70813, 70814), that is, transferred to the memory M (11).
  Data D (1), data D (2), data D (3), and data D (4) in the memory M (12) are collectively stored in the memory M (16), and the data D ( 5), data D (6), data D (7), and data D (8) are transferred together to the memory M (12) (70815, 70816), that is, mutually transferred.
  Figure81Indicates the state after the transfer ends.
[0095]
【The invention's effect】
According to the present invention, when one or a plurality of data is in different memories in a computer having a plurality of memory and memory combinations, it is desired to perform data transfer so that all the data is in all the memories. Sometimes, the optimal combination of one-sided communication and mutual communication can achieve the desired data transfer with the shortest execution time.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating a flowchart of processing performed in each computer when data transfer is executed.
FIG. 2 is a diagram illustrating processing contents of one-side transfer.
FIG. 3 is a diagram illustrating processing contents of mutual transfer.
FIG. 4 is a diagram illustrating an initial state of broadcast type transfer.
FIG. 5 is a diagram showing a first stage transfer of a broadcast type transfer.
FIG. 6 is a diagram illustrating a state after transfer in the first stage of broadcast-type transfer.
FIG. 7 is a diagram illustrating second-stage transfer of broadcast-type transfer.
FIG. 8 is a diagram illustrating a state after the second-stage transfer of the broadcast type transfer.
FIG. 9 is a table showing an initial state of broadcast type transfer.
FIG. 10 is a table showing first-stage transfer of broadcast type transfer.
FIG. 11 is a table showing a state after transfer in the first stage of broadcast type transfer.
FIG. 12 is a table showing second-stage transfer of broadcast type transfer.
FIG. 13 is a table showing a state after transfer in the second stage of broadcast type transfer.
FIG. 14 is a diagram illustrating two nodes connected by a transfer path on a network.
15 is a diagram showing characteristics of transfer hardware of a parallel computer, which is an example of realizing the form of data transfer shown in FIG. 14 as a product.
FIG. 16 is a diagram illustrating an example of product data.
FIG. 17 is a diagram illustrating an example of sales data.
FIG. 18 shows a configuration example of a parallel database.
FIG. 19 is a diagram illustrating an initial state of optimal transfer of 16 memories and four types of data.
FIG. 20 is a diagram illustrating a first transfer of 16 memories and optimal transfer of four types of data.
FIG. 21 is a diagram illustrating the first transfer after the first transfer of 16 memories and four types of data.
FIG. 22 is a diagram illustrating a second transfer of the optimal transfer of 16 memories and four types of data.
FIG. 23 is a diagram showing a state after the second transfer of the optimal transfer of 16 memories and four types of data.
FIG. 24 is a diagram illustrating a third transfer of the 16-memory, optimal transfer of four types of data.
FIG. 25 is a diagram showing a state after the third transfer of 16 memories and the optimum transfer of four types of data.
FIG. 26 is a diagram illustrating a fourth transfer of the 16-memory, four-type data optimum transfer.
FIG. 27 is a diagram illustrating a state after the fourth transfer of the optimal transfer of 16 memories and four types of data.
FIG. 28 is a diagram illustrating an initial state of non-optimal transfer with 16 memories and four types of data.
FIG. 29 is a diagram illustrating a first transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 30 is a diagram illustrating a first non-optimal transfer with 16 memories and four types of data after the first transfer.
FIG. 31 is a diagram illustrating a second transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 32 is a diagram showing a second non-optimal transfer with 16 memories and four types of data after the second transfer.
FIG. 33 is a diagram illustrating a third transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 34 is a diagram illustrating a third memory after the third transfer of 16 memories and four types of data that is not optimal.
FIG. 35 is a diagram illustrating a fourth transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 36 is a diagram illustrating a fourth non-optimal transfer with 16 memories and four types of data after the fourth transfer.
FIG. 37 is a diagram illustrating an initial state of non-optimal transfer with 16 memories and four types of data.
FIG. 38 is a diagram illustrating a first transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 39 is a diagram illustrating a first non-optimal transfer with 16 memories and four types of data after the first transfer.
FIG. 40 is a diagram illustrating a second transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 41 is a diagram showing a second non-optimal transfer with 16 memories and four types of data after the second transfer.
FIG. 42 is a diagram illustrating a third transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 43 is a diagram illustrating a third memory after the third transfer of 16 memories and four types of data that is not optimal.
FIG. 44 is a diagram illustrating a fourth transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 45 is a diagram illustrating a fourth non-optimal transfer with 16 memories and four types of data after the fourth transfer.
FIG. 46 is a diagram illustrating an initial state of non-optimal transfer with 16 memories and four types of data.
FIG. 47 is a diagram illustrating a first transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 48 is a diagram showing a first non-optimal transfer with 16 memories and four types of data after the first transfer.
FIG. 49 is a diagram illustrating a second transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 50 is a diagram illustrating a second non-optimal transfer with 16 memories and four types of data after the second transfer.
FIG. 51 is a diagram showing a third transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 52 is a diagram illustrating a third non-optimal transfer with 16 memories and four types of data after the third transfer.
FIG. 53 is a diagram showing a fourth transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 54 is a diagram illustrating a fourth non-optimal transfer with 16 memories and four types of data after the fourth transfer.
FIG. 55 is a diagram illustrating an initial state of non-optimal transfer with 16 memories and four types of data.
FIG. 56 is a diagram illustrating a first transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 57 is a diagram illustrating a first non-optimal transfer with 16 memories and four types of data after the first transfer.
FIG. 58 is a diagram illustrating a second transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 59 is a diagram showing a second non-optimal transfer with 16 memories and four types of data after the second transfer.
FIG. 60 is a diagram illustrating a third transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 61 is a diagram illustrating a third non-optimal transfer with 16 memories and four types of data after the third transfer.
FIG. 62 is a diagram illustrating a fourth transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 63 is a diagram illustrating a fourth non-optimal transfer with 16 memories and four types of data after the fourth transfer.
FIG. 64 is a diagram illustrating an initial state of non-optimal transfer with 16 memories and four types of data.
FIG. 65 is a diagram illustrating a first transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 66 is a diagram illustrating a first non-optimal transfer with 16 memories and four types of data after the first transfer.
FIG. 67 is a diagram illustrating a second transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 68 is a diagram showing a second non-optimal transfer with 16 memories and four types of data after the second transfer.
FIG. 69 is a diagram showing a third transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 70 is a diagram illustrating a third non-optimal transfer with 16 memories and four types of data after the third transfer.
FIG. 71 is a diagram illustrating a fourth transfer of non-optimal transfer with 16 memories and four types of data.
FIG. 72 is a diagram illustrating a fourth non-optimal transfer with 16 memories and four types of data after the fourth transfer.
FIG. 73 is a diagram illustrating an initial state of optimal transfer of 16 memories and 8 types of data.
FIG. 74 is a diagram illustrating a first transfer of optimal transfer of 16 memories and 8 types of data.
FIG. 75 is a diagram illustrating a state after the first transfer of the optimal transfer of 16 memories and 8 types of data.
FIG. 76 is a diagram illustrating a second transfer of optimal transfer of 16 memories and 8 types of data.
FIG. 77 is a diagram showing a state after the second transfer of the optimal transfer of 16 memories and 8 types of data.
FIG. 78 is a diagram showing a third transfer of optimal transfer of 16 memories and 8 types of data.
FIG. 79 is a diagram showing a state after the third transfer of the optimal transfer of 16 memories and 8 types of data.
FIG. 80 is a diagram illustrating a fourth transfer of optimal transfer of 16 memories and 8 types of data.
FIG. 81 is a diagram showing a state after the fourth transfer of the optimal transfer of 16 memories and 8 types of data.
[Explanation of symbols]
1401, 1408 output port
1402, 1407 Input port
1403, 1409 data
1404, 1410 nodes
1405, 1406 Transfer route
1411 and 1412 processors
1501-1504, 1801-1804 Crossbar
1505, 1507, 1509, 1511, 1805, 1807, 1809, 1811 switch
1506, 1508, 1510, 1512, 1806, 1808, 1810, 1812 nodes

Claims (2)

個々のメモリを有するM個(但し、Mは2のべき乗数)のノードを有し、一方のノードのメモリにあるデータを他方のノードのメモリに転送する片側転送と、二つのノードのそれぞれのメモリにあるデータを同時に互いに転送しあう相互転送ができ、且つ前記相互転送における単位時間あたりの転送量が前記片側転送における単位時間あたりの転送量よりも大きいネットワークにおいて、D個(但し、1<D<Mで、DはMの約数)のノードのメモリ中の各データを他の全てのノードに転送するノード間データ転送方法であって、
前記ノード間での前記各データの転送は、log(M/D)回の片側転送行った後、(logD/log2)回の相互転送を行うことを特徴とするノード間転送方法。
One-sided transfer that has M nodes (where M is a power of 2) having individual memories, and transfers data in the memory of one node to the memory of the other node, and each of the two nodes In a network in which data in a memory can be transferred to each other at the same time and the transfer amount per unit time in the mutual transfer is larger than the transfer amount per unit time in the one-side transfer, D (where 1 < A node-to-node data transfer method for transferring each data in the memory of a node of D <M, where D is a divisor of M) to all other nodes,
In the inter-node transfer method, each data is transferred between the nodes by performing log (M / D) one-side transfer and then performing (log D / log 2) mutual transfer.
個々のメモリを有するM個(但し、Mは2のべき乗数)の計算機がハイパークロスバーネットワークにより接続され、それらの計算機間では、一方の計算機のメモリにあるデータを他方の計算機のメモリに転送する片側転送と、二つの計算機のそれぞれのメモリにあるデータを同時に互いに転送しあう相互転送ができる並列計算機において、D個(但し、1<D<Mで、DはMの約数)の計算機のメモリ中の各データを他の全てのノードに転送する計算機間データ転送方法であって、
前記計算機間での前記各データの転送は、log(M/D)回の片側転送行った後、(logD/log2)回の相互転送を行うことを特徴とする計算機間データ転送方法。
M computers (in which M is a power of 2) having individual memories are connected by a hyper crossbar network, and the data in the memory of one computer is transferred to the memory of the other computer between these computers. D computers (where 1 <D <M and D is a divisor of M) in a parallel computer that can perform one-sided transfer and mutual transfer that simultaneously transfers data in the memories of two computers to each other A computer-to-computer data transfer method for transferring each data in the memory to all other nodes,
The computer-to-computer data transfer method is characterized in that each data is transferred between the computers after log (M / D) one-sided transfer and then (logD / log2) mutual transfer.
JP16928398A 1998-06-02 1998-06-02 Data transfer method between nodes and data transfer method between computers Expired - Fee Related JP3703304B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP16928398A JP3703304B2 (en) 1998-06-02 1998-06-02 Data transfer method between nodes and data transfer method between computers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP16928398A JP3703304B2 (en) 1998-06-02 1998-06-02 Data transfer method between nodes and data transfer method between computers

Publications (2)

Publication Number Publication Date
JPH11345220A JPH11345220A (en) 1999-12-14
JP3703304B2 true JP3703304B2 (en) 2005-10-05

Family

ID=15883652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP16928398A Expired - Fee Related JP3703304B2 (en) 1998-06-02 1998-06-02 Data transfer method between nodes and data transfer method between computers

Country Status (1)

Country Link
JP (1) JP3703304B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5146449B2 (en) 2007-04-12 2013-02-20 日本電気株式会社 Array processor type data processor
JP7180424B2 (en) * 2019-02-05 2022-11-30 富士通株式会社 Parallel processing device, data transfer destination determination method and data transfer destination determination program

Also Published As

Publication number Publication date
JPH11345220A (en) 1999-12-14

Similar Documents

Publication Publication Date Title
US5175733A (en) Adaptive message routing for multi-dimensional networks
Arora et al. On-line algorithms for path selection in a nonblocking network
KR100259276B1 (en) Interconnection network having extendable bandwidth
Su et al. Adaptive deadlock-free routing in multicomputers using only one extra virtual channel
EP2189903B1 (en) Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method
Duato et al. Performance evaluation of adaptive routing algorithms for k-ary n-cubes
Li et al. Efficient collective communications in dual-cube
Bolding et al. The case for chaotic adaptive routing
CN115002584B (en) Reconfigurable computing platform using optical network with one-to-many optical switch
JP6809360B2 (en) Information processing equipment, information processing methods and programs
Adda et al. Routing and fault tolerance in Z-fat tree
Yeh et al. Macro-star networks: efficient low-degree alternatives to star graphs
WO2025167061A1 (en) Data routing system and related method
JP4154124B2 (en) Parallel processor system
Suh et al. All-to-all personalized communication in multidimensional torus and mesh networks
Kandlur et al. Reliable broadcast algorithms for HARTS
JP3703304B2 (en) Data transfer method between nodes and data transfer method between computers
US20060268691A1 (en) Divide and conquer route generation technique for distributed selection of routes within a multi-path network
Panda et al. Fast broadcast and multicast in wormhole multistage networks with multidestination worms
JPH11110362A (en) Data communication method between computers
CN118301061A (en) On-chip network data packet transmission method based on recursive partitioning
Jacunski et al. All-to-all broadcast on switch-based clusters of workstations
JP6665607B2 (en) Communication management method, communication management program, and information processing device
Min et al. A comparative study of switching methods in multicomputer networks
Wang et al. Load-balancing routing algorithms for reducing packet latency and avoiding deadlock in datacenter interconnection networks

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040318

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040330

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050322

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050523

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050719

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080729

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090729

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090729

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100729

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100729

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110729

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110729

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120729

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130729

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees