JP6468066B2 - 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム - Google Patents

並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム Download PDF

Info

Publication number
JP6468066B2
JP6468066B2 JP2015098201A JP2015098201A JP6468066B2 JP 6468066 B2 JP6468066 B2 JP 6468066B2 JP 2015098201 A JP2015098201 A JP 2015098201A JP 2015098201 A JP2015098201 A JP 2015098201A JP 6468066 B2 JP6468066 B2 JP 6468066B2
Authority
JP
Japan
Prior art keywords
collective communication
change
communication
collective
predetermined threshold
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.)
Active
Application number
JP2015098201A
Other languages
English (en)
Other versions
JP2016212787A (ja
Inventor
真弘 三輪
真弘 三輪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015098201A priority Critical patent/JP6468066B2/ja
Priority to US15/083,672 priority patent/US9766885B2/en
Publication of JP2016212787A publication Critical patent/JP2016212787A/ja
Application granted granted Critical
Publication of JP6468066B2 publication Critical patent/JP6468066B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、並列演算装置、並列演算システム、集合通信方法及び集合通信プログラムに関する。
並列計算機システムでは、プロセス間の通信にMPI(Message Passing Interface)が利用される。MPIを利用した通信には、2つのプロセス間で行われる1対1通信、2つ以上の複数のプロセスが同じ通信に同時に関与する集合通信等がある。
集合通信の例としてBarrier命令がある。Barrier命令はプロセス間の同期に用いられる命令であり、Barrier命令に参加する全プロセスがBarrier命令に到達するまで待つ。図13は、Barrier命令を説明するための図である。図13は、通信アルゴリズムにDisseminationアルゴリズムが用いられる場合を示す。
図13に示すように、プロセスの数が4の場合、Barrier命令は2ステップで実施される。ステップ#1では、各プロセスは、((自身のランク番号+2^0)%プロセス数)のプロセスにBarrier命令への到達を通知する到達通知を送信する。ここで、「ランク番号」は、プロセスを識別する識別番号であり、4プロセスの場合は、0〜3である。「^」はべき乗演算を表し、「x%y」はxをyで割った余りを表す。ステップ#2では、各プロセスは、((自身のランク番号+2^1)%プロセス数)のプロセスに到達通知を送信する。
例えば、プロセス#0は、ステップ#1でプロセス#3より到達通知を受信し、プロセス#3がBarrier命令に到達していることがわかる。そして、プロセス#0は、ステップ#2でプロセス#2より到達通知を受信し、プロセス#2もBarrier命令に到達していることがわかる。ここで、プロセス#2はステップ#1でプロセス#1から到達通知を受信しているので、プロセス#0は、プロセス#1もBarrier命令に到達していることがわかる。他のプロセスも同様にBarrier命令への到達を認識することができる。したがって、全プロセスがBarrier命令に到達し、Barrier命令は2つのステップで完了する。
なお、マルチプロセッサコアシステムにおけるネットワークI/O要求の処理において、静的構成切替え規則に基づいて割込みモードとポーリングモードとの間でプロセッサコアを切り替えて、処理効率を改善する技術がある。
また、画像処理を行うプロセッサによる処理時間が算出可能な処理は画像処理を制御するCPUからプロセッサへのポーリング処理により制御を行い、それ以外はプロセッサからCPUへの割込みにより制御を行うことで、CPUにかかる負荷を軽減する技術がある。
特表2014−531081号公報 特開2006−268092号公報
図13に示したBarrier命令のように、集合通信では、理想的には全プロセスが同じタイミングで完了することが望ましいが、実際にはノイズ(割込みやデーモンプロセス等の処理)により、特定のプロセスにおいて集合通信の開始が遅れることがある。図14は、集合通信における特定のプロセスの遅れを説明するための図である。図14において、0〜3は、ランク番号が0〜3であるプロセスを表す。
図14(a)に示すように、ノイズなしのケースでは、プロセス#0〜プロセス#3が同時に集合通信を開始し、同時に集合通信を完了する。一方、図14(b)に示すように、ノイズありのケースでは、プロセス#0〜プロセス#3が異なる時刻に集合通信を開始し、異なる時刻に集合通信を完了する。図14(b)では、プロセス#2の集合通信の完了が遅れる。このように、集合通信には、一部のプロセスの通信完了が遅れるという問題がある。一部のプロセスで集合通信の完了が遅れると、集合通信を利用するアプリケーションの性能が低下する。
本発明は、1つの側面では、集合通信における一部のプロセスの遅延を抑えることを目的とする。
本願の開示する並列演算装置は、1つの態様において、判定部と決定部と送信部とを有する。前記判定部は、集合通信の開始から前記集合通信に関する受信までの時間が所定の閾値以下であるか否かを判定する。前記決定部は、前記判定部により前記時間が所定の閾値以下であると判定された場合に、前記集合通信に関する待ち方式を変更する対象演算装置を決定する。前記送信部は、前記決定部により決定された対象演算装置に前記集合通信に関する待ち方式の変更指示を送信する。
1実施態様によれば、集合通信における一部のプロセスの遅延を抑えることができる。
図1は、実施例に係るプロセスによる通信完了待ち方式の変更を説明するための図である。 図2は、実施例に係るPCクラスタシステムの構成を示す図である。 図3は、実施例に係るプロセスの機能構成を示す図である。 図4は、8プロセスの場合の変更対象を説明するための図である。 図5は、RDMAを説明するための図である。 図6は、平均値算出処理のフローを示すフローチャートである。 図7は、変更制御処理のフローを示すフローチャートである。 図8は、対象決定処理のフローを示すフローチャートである。 図9は、通信完了待ち処理のフローを示すフローチャートである。 図10は、Binomial Treeアルゴリズムを説明するための図である。 図11は、Bruck'sアルゴリズムを説明するための図である。 図12は、Recursive Doublingアルゴリズムを説明するための図である。 図13は、Barrier命令を説明するための図である。 図14は、集合通信における特定のプロセスの遅れを説明するための図である。
以下に、本願の開示する並列演算装置、並列演算システム、集合通信方法及び集合通信プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係るプロセスによる通信完了待ち方式の変更について説明する。なお、実施例における通信アルゴリズムは、Disseminationアルゴリズムである。図1は、実施例に係るプロセスによる通信完了待ち方式の変更を説明するための図である。図1において、0〜3は、ランク番号が0〜3であるプロセスを表す。また、t0_1〜t3_1は、プロセス#0〜プロセス#3がそれぞれ集合通信を開始する時刻であり、t0_2〜t3_2は、プロセス#0〜プロセス#3がそれぞれ集合通信の到達通知を受信した時刻である。
図1に示すように、集合通信開始から到達通知を受信するまでの時間ti_2−ti_1(0≦i≦3)が短いプロセスは、他のプロセスと比較して、処理が遅れている。図1では、プロセス#3が集合通信開始から到達通知を受信するまでの時間t3_2−t3_1が他のプロセスと比較して短い。
ステップ#1においてプロセス#3が到達通知を送信するプロセスは、(3+2^0)%4=0であるので、プロセス#0であり、ステップ#2においてプロセス#0が到達通知を送信するプロセスは、(0+2^1)%4=2であるので、プロセス#2である。したがって、プロセス#2の集合通信完了が遅くなる。
そこで、プロセス#3は、集合通信開始から到達通知を受信するまでの時間t3_2−t3_1が所定の閾値以下である場合に、プロセス#2の集合通信完了を早くするために、プロセス#2の通信完了待ち方式を割込み方式からポーリング方式に変更する。ここで、所定の閾値は、集合通信開始から到達通知を受信するまでの時間の平均値に基づく値であり、例えば、平均値の1/3である。
割込み方式は、通信装置が通信を完了するとCPUへの割込みを発生して通信の完了を通知する方式であり、OSに制御が渡るため処理遅延が発生するが消費電力は少ない。一方、ポーリング方式は、定期的に通信完了を調査する方式であり、割込み方式と比較して低遅延であるが、CPUリソースを消費するため消費電力は高い。通常は、消費電力を少なくするため、割込み方式が用いられる。
したがって、通信完了待ち方式を割込み方式からポーリング方式に変更することによって、プロセスは通信完了を早めることができる。図1では、プロセス#2の通信完了時刻が、点線の矢頭で示される時刻から実線の矢頭で示される時刻へ早まる。
このように、実施例に係るプロセスは、集合通信の完了が遅れると思われるプロセスの集合通信の完了待ち方式を割込み方式からポーリング方式に変更することによって、集合通信における一部のプロセスの遅延を抑えることができる。
次に、実施例に係るPCクラスタシステムの構成について説明する。ここで、PCクラスタシステムとは、複数のPCサーバで構成される並列計算機システムである。図2は、実施例に係るPCクラスタシステムの構成を示す図である。図2に示すように、PCクラスタシステム10は、複数のPCサーバ1と、複数のPCサーバ1を接続するスイッチ2とを有する。PCサーバ1間の通信はインフィニバンドが用いられる。
なお、ここでは、1台のスイッチ2のみを示したが、PCクラスタシステム10は、複数のスイッチ2で複数のPCサーバ1を接続してもよい。また、PCサーバ1間の通信方式は、インフィニバンド以外の通信方式でもよい。
PCサーバ1は、HCA(Host Channel Adapter)11と、CPU12と、メモリ13と、LAN(Local Area Network)インタフェース14と、HDD(Hard Disk Drive)15と、ODD(Optical Disk Drive)16とを有する。
HCA11は、他のHCA11又はスイッチ2に接続するための装置である。CPU12は、メモリ13からプログラムを読み出して実行する中央処理装置である。CPU12では、並列プログラムの複数のプロセスのうち1つのプロセスが実行される。メモリ13は、プログラムやプログラムの実行途中結果などを記憶するRAM(Random Access Memory)である。
LANインタフェース14は、PCサーバ1をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD15は、プログラムやデータを格納するディスク装置であり、ODD16は、DVDの読み書きを行う装置である。
PCサーバ1において実行されるプログラムは、DVDに記憶され、ODD16によってDVDから読み出されてPCサーバ1にインストールされる。あるいは、PCサーバ1において実行されるプログラムは、LANインタフェース14を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてPCサーバ1にインストールされる。そして、インストールされたプログラムは、HDD15に記憶され、メモリ13に読み出されてCPU12によって実行される。
次に、実施例に係るプロセスの機能構成について説明する。図3は、実施例に係るプロセスの機能構成を示す図である。図3に示すように、プロセス3は、平均算出部31と、変更制御部32と、完了待部33とを有する。
平均算出部31は、集合通信開始から到達通知を受信するまでの時間の平均値を算出する。並列プログラムが実行される場合には、集合通信が複数回行われる。平均算出部31は、最初に集合通信が行われたときに集合通信開始から到達通知を受信するまでの時間の平均値を算出し、メモリ13に格納する。
変更制御部32は、集合通信開始から到達通知を受信するまでの時間を計測する。そして、変更制御部32は、集合通信開始から到達通知を受信するまでの時間が所定の閾値以下である場合に、集合通信の完了が遅れると思われるプロセスの集合通信の完了待ち方式を割込み方式からポーリング方式に変更する。
変更制御部32は、判定部32aと、対象決定部32bと、指示送信部32cとを有する。判定部32aは、集合通信開始から到達通知を受信するまでの時間を計測し、計測した時間が所定の閾値以下であるか否かを判定する。ここで、所定の閾値は、平均算出部31により算出された平均値の1/3である。なお、所定の閾値は、平均値に基づく値であえば、平均値の1/3以外の値でもよい。あるいは、所定の閾値は、平均値以外に中央値など他の値に基づく値でもよい。
対象決定部32bは、計測した時間が所定の閾値以下であると判定部32aにより判定された場合に、通信完了待ち方式をポーリング方式に変更する変更対象のプロセスを特定する。図1では、プロセス数が4であり、プロセス#2だけが変更対象のプロセスであったが、プロセス数が多い場合には、対象決定部32bは、変更対象として複数のプロセスを特定する。
図4は、8プロセスの場合の変更対象を説明するための図である。図4において、0〜7は、ランク番号が0〜7であるプロセスを表す。また、プロセス数が8の場合は、集合通信は、log(8)=3ステップで集合通信が完了する。logの底は2である。
図4では、プロセス#4の通信完了が遅れる。プロセス#4が遅れるのは、ステップ#3において、プロセス#0の送信が遅れるためであり、プロセス#0が遅れるのは、ステップ#2において、プロセス#6の送信が遅れるためである。また、プロセス#6が遅れるのは、ステップ#1において、プロセス#5の送信が遅れるためである。
そこで、プロセス#5は、例えば、ステップ#1において、ステップ#2のプロセス#0とステップ#3のプロセス#4を変更対象として特定する。あるいは、プロセス#5は、ステップ#1において、ステップ#3のプロセス#4だけを変更対象として特定してもよい。
一般的に、プロセス数をnとし、ステップ数をlog(n)とすると、対象決定部32bは、x(2≦x≦log(n))ステップ以降のステップで遅れるプロセスを変更対象として特定する。xは、アプリケーション、CPU12の消費電力等により決められる数である。x≦i≦log(n)とすると、対象決定部32bは、iステップで遅れるプロセスを、((自身のランク番号+2^(i−1))%n)で特定する。
指示送信部32cは、対象決定部32bが特定したプロセスに、通信完了待ち方式をポーリング方式に変更する指示を送信する。指示送信部32cは、RDMA(Remote Direct Memory Access)により変更指示を送信する。図5は、RDMAを説明するための図である。
図5に示すように、CPU12は、MC(Memory Controller)12aとコア12bとを有する。MC12aは、コア12bがメモリ13にアクセスするための制御装置である。コア12bは、演算処理を行う処理装置である。
コア12bで実行されるプロセス3は、自身が動作するPCサーバ1のHCA11、スイッチ2、変更先PCサーバ1のHCA11、及び、変更先PCサーバ1のMC12aを経由して、変更先PCサーバ1のメモリ13の領域13aにアクセスする。ここで、変更先PCサーバ1とは、変更対象のプロセス3が動作するPCサーバ1である。
完了待部33は、集合通信の完了待ちの処理を行う。具体的には、完了待部33は、方式変更フラグが設定されている場合には、集合通信の完了待ちをポーリング方式に変更し、方式変更フラグが設定されていない場合には、集合通信の完了待ちを割込み方式により行う。なお、方式変更フラグは、図5に示した領域13aに設定される。
次に、平均値算出処理のフローについて説明する。図6は、平均値算出処理のフローを示すフローチャートである。図6に示すように、平均値算出部31は、集合通信開始から最初に到達通知を受信するまでの時間を計測する(ステップS1)。平均値算出部31は、計測した時間のプロセス間の平均値を算出し(ステップS2)、算出した平均値をメモリ13に格納する。
このように、平均値算出部31が、集合通信開始から最初に到達通知を受信するまでの時間を計測し、計測した時間のプロセス間の平均値を算出することで、判定部32aは、判定に用いる所定の閾値を算出することができる。
次に、集合通信の完了待ち方式の変更を制御する変更制御処理のフローについて説明する。図7は、変更制御処理のフローを示すフローチャートである。図7に示すように、変更制御部32は、集合通信開始から到達通知を受信するまでの時間を計測する(ステップS11)。
そして、変更制御部32は、計測した時間は、所定の閾値以下であるか否かを判定し(ステップS12)、所定の閾値以下でない場合には、処理を終了する。一方、所定の閾値以下である場合には、変更制御部32は、変更対象を決定する対象決定処理を行う(ステップS13)。
そして、変更制御部32は、変更対象リストより対象のプロセスの番号を順に取り出し、取り出した番号のプロセスにRDMAにより集合通信の完了待ち方式の変更を指示する(ステップS14)。ここで、変更対象リストは、変更対象のプロセスの番号のリストである。
このように、変更制御部32が、集合通信開始から到達通知を受信するまでの時間に基づいて集合通信の完了待ち方式の変更を制御することで、集合通信における一部のプロセスの遅延を抑えることができる。
次に、対象決定処理のフローについて説明する。図8は、対象決定処理のフローを示すフローチャートである。図8に示すように、対象決定部32bは、集合通信に参加しているプロセスの数nを取得し(ステップS21)、iの値をxとする(ステップS22)。ここで、iは、繰り返し数を記憶する変数であり、xは、集合通信のステップのうち遅れるプロセスを変更対象として特定する最初のステップを示す。
そして、対象決定部32bは、iがlog(n)以下であるか否かを判定し(ステップS23)、iがlog(n)以下でない場合には、処理を終了する。一方、iがlog(n)以下である場合には、対象決定部32bは、iステップ目の到達通知の送信先すなわち(自身のランク番号+2^(i−1))%nを計算する(ステップS24)。そして、対象決定部32bは、計算結果を変更対象リストに追加し(ステップS25)、iに1を加え(ステップS26)、ステップS23へ戻る。
このように、対象決定部32bが変更対象リストを作成することで、変更制御部32は、集合通信の完了待ち方式を変更すべきプロセスへ指示を送信することができる。
次に、集合通信の完了を待つ処理である通信完了待ち処理のフローについて説明する。図9は、通信完了待ち処理のフローを示すフローチャートである。なお、プロセス3は、集合通信の到達通知を送信後にスリープする前に通信完了待ち処理を行う。
図9に示すように、完了待部33は、方式変更フラグをチェックし(ステップS31)、通信完了待ち方式に変更があるか否かを判定する(ステップS32)。その結果、変更がない場合には、処理を終了し、通信完了待ち方式を変更することなく、割込み方式により通信の完了を待つ。一方、通信完了待ち方式に変更がある場合には、ポーリングにより通信完了を検知する(ステップS33)。
このように、通信完了待ち方式に変更がある場合に、完了待部33がポーリングにより通信完了を検知することによって、プロセス3は集合通信の遅れを抑制することができる。
上述してきたように、実施例では、判定部32aが、集合通信開始から到達通知を受信するまでの時間を計測し、計測した時間が所定の閾値以下であるか否かを判定する。そして、計測した時間が所定の閾値以下であると判定部32aにより判定された場合に、対象決定部32bが、通信完了待ち方式をポーリング方式に変更する変更対象のプロセスを特定する。そして、対象決定部32bが特定したプロセス3に、指示送信部32cが、通信完了待ち方式をポーリング方式に変更する指示を送信する。したがって、集合通信の開始が遅れたプロセス3は、開始の遅れに影響を受ける一部のプロセス3の遅延を抑えることができる。
また、実施例では、RDMAにより集合通信の完了待ち方式の変更を指示するので、異なるPCサーバ1のメモリ13に方式変更フラグを設定することができる。ただし、RDMAによる指示では、通信完了待ち方式の変更が間に合わない場合がある。
例えば、図1に示した例では、プロセス#2が到達通知をプロセス#0に送信する前に変更指示が行われるので、プロセス#2はスリープする前に通信完了待ち方式の変更を行うことができる。しかしながら、プロセス#2が到達通知をプロセス#0に送信してスリープした後に変更指示が行われると、プロセス#2はスリープしてしまうため、通信完了待ち方式の変更を行うことができない。
このようなタイミングに起因する問題を避けるには、プロセス3は、RDMAにより集合通信の完了待ち方式の変更を指示する代わりに、割込みにより集合通信の完了待ち方式の変更を指示すればよい。割込みにより集合通信の完了待ち方式の変更を指示することによって、スリープしてしまったプロセス3も通信完了待ち方式をポーリング方式に変更することができる。
また、実施例では、通信アルゴリズムがDisseminationアルゴリズムである場合について説明したが、例えば、Binomial Treeアルゴリズム、Bruck'sアルゴリズム、Recursive Doublingアルゴリズム等、通信アルゴリズムは他のアルゴリズムでもよい。
図10は、Binomial Treeアルゴリズムを説明するための図である。Binomial Treeアルゴリズムは、例えば、Broadcast通信命令で利用される。Broadcast通信命令は、あるプロセスが保持するデータをBroadcast通信命令に参加する他のすべてのプロセスに配布する命令である。Binomial Treeアルゴリズムは、プロセス数がnのとき、log(n)ステップで実施される。
例えば、Broadcast通信命令は、図10に示すように、プロセス#0〜#7の8プロセスで、プロセス#0のデータをプロセス#1〜#7に配布する際に利用される。8プロセスの場合、データはlog(8)=3ステップで実施される。
1ステップ目・・・プロセス#0からプロセス#1へ送信
2ステップ目・・・プロセス#0からプロセス#2へ送信、プロセス#1からプロセス#3へ送信
3ステップ目・・・プロセス#0からプロセス#4へ送信、プロセス#1からプロセス#5へ送信、プロセス#2からプロセス#6へ送信、プロセス#3からプロセス#7へ送信
Binomial Treeアルゴリズムの場合、図8のステップS24における送信先は、Disseminationアルゴリズムと同様に、(自身のランク番号+2^(i−1))%nによって算出される。例えば、
プロセス#0は、1ステップ目で、(0+2^(1−1))=1すなわちプロセス#1へ送信、
プロセス#0は、2ステップ目で、(0+2^(2−1))=2すなわちプロセス#2へ送信、
プロセス#0は、3ステップ目で、(0+2^(3−1))=4すなわちプロセス#4へ送信、
プロセス#1は、2ステップ目で、(1+2^(2−1))=3すなわちプロセス#3へ送信、等である。
図11は、Bruck'sアルゴリズムを説明するための図である。Bruck'sアルゴリズムは、例えば、MPI_Alltoall、MPI_Allgather等の命令で利用される。Bruck'sアルゴリズムは、プロセス数がnのとき、log(n)ステップで実施される。例えば、図11に示すように、8プロセスの場合、Bruck'sアルゴリズムは、log(8)=3ステップで実施される。
1ステップ目・・・プロセス#0は#7へ送信、プロセス#1は#0へ送信、プロセス2は#1へ送信、プロセス#3は#2へ送信、プロセス#4は#3へ送信、プロセス#5は#4へ送信、プロセス#6は#5へ送信、プロセス#7は#6へ送信
2ステップ目・・・プロセス#0は#6へ送信、プロセス#1は#7へ送信、プロセス#2は#0へ送信、プロセス#3は#1へ送信、プロセス#4は#2へ送信、プロセス#5は#3へ送信、プロセス#6は#4へ送信、プロセス#7は#5へ送信
3ステップ目・・・プロセス#0は#4へ送信、プロセス#1は#5へ送信、プロセス#2は#6へ送信、プロセス#3は#7へ送信、プロセス#4は#0へ送信、プロセス#5は#1へ送信、プロセス#6は#2へ送信、プロセス#7は#3へ送信
Bruck'sアルゴリズムの場合、図8のステップS24における送信先は、(自身のランク番号−2^(i−1))%nによって算出される。
図12は、Recursive Doublingアルゴリズムを説明するための図である。Recursive Doublingアルゴリズムは、例えば、MPI_Alltoall、MPI_Allgather等の命令で利用される。Recursive Doublingアルゴリズムは、プロセス数がnのとき、log(n)ステップで実施される。例えば、図12に示すように、8プロセスの場合、データはlog(8)=3ステップで実施される。
1ステップ目・・・プロセス#0とプロセス#1間で交換(プロセス#0はプロセス#1へ、プロセス#1はプロセス#0へ送信)、プロセス#2とプロセス#3間で交換、プロセス#4とプロセス#5間で交換、プロセス#6とプロセス#7間で交換
2ステップ目・・・プロセス#0とプロセス#2間で交換、プロセス#1とプロセス#3間で交換、プロセス#4とプロセス#6間で交換、プロセス#5とプロセス#7間で交換
3ステップ目・・・プロセス#0とプロセス#4間で交換、プロセス#1とプロセス#5間で交換、プロセス#2とプロセス#6間で交換、プロセス#3とプロセス#7間で交換
Recursive Doublingアルゴリズムの場合、図8のステップS24における送信先は、(自身のランク番号+2^(i−1))%(2^i)+(2^i)*[自身のランク番号/(2^i)]によって算出される。ここで、「*」は乗算を表し、[y]はyを超えない最大の整数である。
1ステップ目・・・プロセス#p(pは0〜7)は(p+2^(1−1))%(2^1)+(2^1)*[p/(2^1)]
2ステップ目・・・プロセス#p(pは0〜7)は(p+2^(2−1))%(2^2)+(2^2)*[p/(2^2)]
3ステップ目・・・プロセス#p(pは0〜7)は(p+2^(3−1))%(2^3)+(2^3)*[p/(2^3)]
このように、通信アルゴリズムがDisseminationアルゴリズム以外である場合にも、本発明は同様に適用することができる。
また、実施例では、PCクラスタシステムについて説明したが、本発明はこれに限定されるものではなく、他の並列計算機システムにも同様に適用することができる。また、実施例では、並列プログラムの1つのプロセスがCPU12で実行される場合について説明したが、CPUが複数のコアを有し、1つのプロセスがコアで実行され、1つのCPUで複数のプロセスが実行されてもよい。
1 PCサーバ
2 スイッチ
3 プロセス
10 PCクラスタシステム
11 HCA
12 CPU
12a MC
12b コア
13 メモリ
13a 領域
14 LANインタフェース
15 HDD
16 ODD
31 平均算出部
32 変更制御部
32a 判定部
32b 対象決定部
32c 指示送信部
33 完了待部

Claims (7)

  1. 複数の演算装置が並列に演算を行う並列演算装置において、
    各演算装置は、
    集合通信の開始から前記集合通信に関する受信までの時間が所定の閾値以下であるか否かを判定する判定部と、
    前記判定部により前記時間が所定の閾値以下であると判定された場合に、前記集合通信に関する待ち方式を変更する対象演算装置を決定する決定部と、
    前記決定部により決定された対象演算装置に前記集合通信に関する待ち方式の変更指示を送信する送信部と
    を有することを特徴とする並列演算装置。
  2. 前記送信部は、前記集合通信に関する待ち方式について割込み方式からポーリング方式への変更指示を送信することを特徴とする請求項1に記載の並列演算装置。
  3. 前記送信部は、RDMAを用いて前記変更指示を送信することを特徴とする請求項1又は2に記載の並列演算装置。
  4. 前記決定部は、前記集合通信のアルゴリズムに基づいて前記対象演算装置を決定することを特徴とする請求項1、2又は3に記載の並列演算装置。
  5. 並列に演算を行う複数の演算装置と前記複数の演算装置が接続されたスイッチとを有する並列演算システムにおいて、
    各演算装置は、
    集合通信の開始から前記集合通信に関する受信までの時間が所定の閾値以下であるか否かを判定する判定部と、
    前記判定部により前記時間が所定の閾値以下であると判定された場合に、前記集合通信に関する待ち方式を変更する対象演算装置を決定する決定部と、
    前記決定部により決定された対象演算装置に前記集合通信に関する待ち方式の変更指示を送信する送信部と
    を有することを特徴とする並列演算システム。
  6. 他の演算装置と並列に演算を行う演算装置による集合通信方法において、
    集合通信の開始から前記集合通信に関する受信までの時間が所定の閾値以下であるか否かを判定し、
    前記時間が所定の閾値以下であると判定した場合に、前記集合通信に関する待ち方式を変更する対象演算装置を決定し、
    決定した対象演算装置に前記集合通信に関する待ち方式の変更指示を送信する
    処理を実行することを特徴とする集合通信方法。
  7. 他の演算装置と並列に演算を行う演算装置で実行される集合通信プログラムにおいて、
    集合通信の開始から前記集合通信に関する受信までの時間が所定の閾値以下であるか否かを判定し、
    前記時間が所定の閾値以下であると判定した場合に、前記集合通信に関する待ち方式を変更する対象演算装置を決定し、
    決定した対象演算装置に前記集合通信に関する待ち方式の変更指示を送信する
    処理を前記演算装置に実行させることを特徴とする集合通信プログラム。
JP2015098201A 2015-05-13 2015-05-13 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム Active JP6468066B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015098201A JP6468066B2 (ja) 2015-05-13 2015-05-13 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム
US15/083,672 US9766885B2 (en) 2015-05-13 2016-03-29 System, method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015098201A JP6468066B2 (ja) 2015-05-13 2015-05-13 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム

Publications (2)

Publication Number Publication Date
JP2016212787A JP2016212787A (ja) 2016-12-15
JP6468066B2 true JP6468066B2 (ja) 2019-02-13

Family

ID=57277192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015098201A Active JP6468066B2 (ja) 2015-05-13 2015-05-13 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム

Country Status (2)

Country Link
US (1) US9766885B2 (ja)
JP (1) JP6468066B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153584B (zh) * 2016-12-02 2021-11-09 百度在线网络技术(北京)有限公司 一种用于确定目标网络设备需分配的线程数的方法与设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414858A (en) * 1992-12-11 1995-05-09 International Business Machines Corporation System and method for dynamically varying between interrupt and polling to service requests of computer peripherals
JP4720236B2 (ja) 2005-03-22 2011-07-13 富士ゼロックス株式会社 画像処理装置
US9003413B1 (en) * 2009-09-28 2015-04-07 Xilinx, Inc. Thread synchronization by transitioning threads to spin lock and sleep state
JP5549574B2 (ja) * 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
CN102779075B (zh) 2012-06-28 2014-12-24 华为技术有限公司 一种在多处理器核系统中进行调度的方法、装置及系统
US9652300B2 (en) * 2012-06-28 2017-05-16 Intel Corporation Systems, methods, and computer program products for preemption of threads at a synchronization barrier
JP6070150B2 (ja) * 2012-12-14 2017-02-01 富士通株式会社 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
EP2937783B1 (en) * 2014-04-24 2018-08-15 Fujitsu Limited A synchronisation method

Also Published As

Publication number Publication date
US20160335083A1 (en) 2016-11-17
JP2016212787A (ja) 2016-12-15
US9766885B2 (en) 2017-09-19

Similar Documents

Publication Publication Date Title
JP5568048B2 (ja) 並列計算機システム、およびプログラム
US7953915B2 (en) Interrupt dispatching method in multi-core environment and multi-core processor
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
CN109697122B (zh) 任务处理方法、设备及计算机存储介质
JP2018512678A (ja) 時間ベースのノード選出方法及び装置
US10614542B2 (en) High granularity level GPU resource allocation method and system
US11144366B2 (en) Computing node processor resource optimization method, computing node and server cluster
US9389923B2 (en) Information processing device and method for controlling information processing device
JP2007026095A (ja) 並列演算装置
KR102083289B1 (ko) 마이크로서버 환경의 소프트웨어 이주 방법 및 이를 지원하는 장치
WO2014047902A1 (zh) 负载均衡方法、装置、系统及计算机可读介质
WO2017185615A1 (zh) 一种业务处理设备的业务状态确定方法及调度设备
WO2012113232A1 (zh) 调整时钟中断周期的方法和装置
US20190026142A1 (en) Information processing apparatus, control method and storage medium
JP6468066B2 (ja) 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム
JP5866077B2 (ja) 情報管理方法及びデバイス
TWI625630B (zh) 電腦系統及匯流排仲裁方法
WO2018106392A1 (en) Technologies for multi-core wireless network data transmission
JP5978849B2 (ja) 並列計算機システム、クロスバスイッチ及び並列計算機システムの制御方法
JP2011124677A (ja) パケット処理装置、パケット振り分け装置、制御プログラム及びパケット分散方法
JP6079805B2 (ja) 並列計算装置
JP4089506B2 (ja) ファイル共有システム及びサーバー並びにプログラム
US20110191638A1 (en) Parallel computer system and method for controlling parallel computer system
Takagi et al. Adaptive transport service selection for MPI with InfiniBand network
JP5879159B2 (ja) 複数サーバにおける同期方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181211

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181231

R150 Certificate of patent or registration of utility model

Ref document number: 6468066

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150