WO2024147258A1 - 並列処理プログラム,並列処理装置,並列処理方法及び並列処理システム - Google Patents

並列処理プログラム,並列処理装置,並列処理方法及び並列処理システム Download PDF

Info

Publication number
WO2024147258A1
WO2024147258A1 PCT/JP2023/043950 JP2023043950W WO2024147258A1 WO 2024147258 A1 WO2024147258 A1 WO 2024147258A1 JP 2023043950 W JP2023043950 W JP 2023043950W WO 2024147258 A1 WO2024147258 A1 WO 2024147258A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
tasks
parallel processing
communication path
command
Prior art date
Application number
PCT/JP2023/043950
Other languages
English (en)
French (fr)
Inventor
雅文 山崎
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Publication of WO2024147258A1 publication Critical patent/WO2024147258A1/ja

Links

Abstract

【課題】複数のノードによる複数のタスクの並列実行処理の効率を向上させる。 【解決手段】各々がタスクを実行することで複数の前記タスクを並列実行する、複数のノード2のうちの第1ノード2aは、前記複数のタスクのリスト20を取得し、自ノード2と、前記第1ノード2aから前記複数のノード2の各々を経由し前記第1ノード2aに戻る通信経路1aの第1方向において前記自ノード2に隣接する1つのノード2と、を含む2つのノード2における未実行のタスクの数に基づき前記2つのノード2間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路1aに沿って前記第1方向に伝送させるように、前記通信経路1aの前記第1方向において前記第1ノード2aに隣接する第2ノード2bに送信する。

Description

並列処理プログラム,並列処理装置,並列処理方法及び並列処理システム
 本発明は、並列処理プログラム,並列処理装置,並列処理方法及び並列処理システムに関する。
 複数のタスクを並列実行する並列処理システムでは、クラスタを形成する複数のノードの各々がタスクを実行する。並列処理システムは、例えば、小さい粒度の大量のタスクを大規模なクラスタで並列実行することで、大量のタスクの実行を高速化できる。
 ノードは、コンピュータ,情報処理装置又は並列処理装置の一例である。タスクは、「ジョブ」と称されてもよい。
 並列処理システムにおける並列実行処理を実現するための手法の一例として、マスタ(Master)ノードが複数のワーカ(Worker)ノードにタスクを分配し、各ワーカノードからタスクの実行結果を収集するマスタワーカ方式が知られている。
 また、並列実行処理を実現するため手法の他の例として、固定量(固定数)のタスクを複数のノードに実行させる手法(以下、「固定量分配方式」と表記する場合がある)も知られている。
特開2020-038532号公報 特開2005-346563号公報 米国特許出願公開第2007/0094174号明細書 米国特許出願公開第2013/0275480号明細書
 マスタワーカ方式では、マスタノードが実行する処理の負荷が大きいため、マスタノードとして、ワーカノードとは別のノードが用いられることが多い。このため、複数のタスクを並列実行する場合のノード1台あたりの処理効率が、全てのノードが並列実行処理を行なう場合と比較して低下することがある。また、マスタノードに通信が集中するため、並列処理システムの性能がマスタノードの処理性能,帯域により律速されることがある。
 また、固定量分配方式では、各ノードの処理性能(演算能力,演算量)にノード間で差がある場合、早期にタスクの実行を終了したノードは、他のノードのタスクの実行の終了を待つことになるため、当該ノードの処理資源(計算資源)が無駄になることがある。例えば、処理性能が最も低いノードのタスク終了まで、他の全ノードが待たされ得る。
 このように、並列処理システムにおいて、複数のタスクの並列実行処理が非効率になる場合がある。
 1つの側面では、本発明は、複数のノードによる複数のタスクの並列実行処理の効率を向上させることを目的の1つとする。
 1つの側面では、並列処理プログラムは、各々がタスクを実行することで複数の前記タスクを並列実行する、複数のコンピュータのうちの、第1コンピュータとしてのコンピュータに、前記複数のタスクのリストを取得し、自コンピュータと、前記第1コンピュータから前記複数のコンピュータの各々を経由し前記第1コンピュータに戻る通信経路の第1方向において前記自コンピュータに隣接する1つのコンピュータと、を含む2つのコンピュータにおける未実行のタスクの数に基づき前記2つのコンピュータ間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1コンピュータに隣接する第2コンピュータに送信する、処理を実行させてよい。
 1つの側面では、本発明は、複数のノードによる複数のタスクの並列実行処理の効率を向上させることができる。
比較例に係るシステムの一例を示すブロック図である。 一実施形態に係るシステムの構成例を示すブロック図である。 一実施形態に係る分配処理の実行回数に応じた各ノードの分配数の変化の一例を示す図である。 一実施形態に係るノードの機能を実現するコンピュータのハードウェア(HW)構成例を示すブロック図である。 ノード間を接続するネットワーク構成の一例を示す図である。 ノード間を接続するネットワーク構成の一例を示す図である。 一実施形態に係るノードのソフトウェア構成例を示すブロック図である。 一実施形態に係るノードの分配処理の動作例を説明するフローチャートである。 一実施形態に係るノードのタスク量平均化処理の動作例を説明するフローチャートである。
 以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
 〔A〕並列実行処理の説明
 図1は、比較例に係るシステム100の一例を示すブロック図である。システム100は、図1に例示するように、1つのマスタノード110と、複数(図1では6つ)のワーカノード121~126とを備える。また、システム100は、管理端末200を備えてもよい。以下、ワーカノード121~126を区別しない場合には、ワーカノード120と表記する。
 システム100は、マスタワーカ方式を採用するマルチノード構成のシステムであり、マスタノード110が複数のタスクをワーカノード121~126に分配することで、複数のタスクの並列実行を行なう。
 ここで、複数の(例えば大量の)タスクの一例として、ハイパーパラメタ探索処理が挙げられる。ハイパーパラメタ探索処理は、ディープラーニング(Deep Learning)の機械学習に用いるハイパーパラメタの最適化や、テンソルネットワーク型の量子シミュレータにおける縮約順序の計算等に利用される、パスファインド処理である。
 ハイパーパラメタや縮約順序の最適解を理論的に求めることが困難であることから、ハイパーパラメタ探索処理は、多数のパラメタを調整し(値を変化させ)、目的変数の最大化又は最小化を行なうために、多数のトライアルを行なうヒューリスティックな手法である。ハイパーパラメタ探索処理としては、例えば、optuna,nevergrad等のツールを使用した、グリッドサーチや、ランダムサーチ、ベイズ最適化、遺伝的アルゴリズム等の手法を用いることができる。
 以下、システム100による並列実行対象の処理が、ハイパーパラメタ探索処理である場合を例に挙げて説明する。
 例えば、システム100において、1つのタスクは、或るパラメタの組み合わせとなるパラメタベクトルをシミュレーションモデルに入力し、シミュレーションモデルから結果ベクトルを出力する処理であってよい。シミュレーションモデルは、複数のタスク間で同一、すなわち固定のシミュレーションモデルであってよく、各ワーカノード120に記憶されてよい。
 マスタノード110は、初期ハイパーパラメタの各候補ごとに、「未処理」ステータスとしたタスク(処理)をジョブキューに格納する。初期ハイパーパラメタの複数の候補は、例えば、パラメタの値が互いに異なる複数のパラメタベクトルであってよい。タスクは、例えば、タスクの識別情報(ID:Identifier)と、パラメタベクトルとを含んでよい。
 マスタノード110は、一定時間ごとに、ステータスが「処理済み」となったタスクを収集して、当該タスクに含まれる結果ベクトルに基づき、ハイパーパラメタの候補を生成し、生成した候補のタスク(「未処理」ステータス)をタスクキューに格納する。このような処理を繰り返し、最適化が完了した時点で、マスタノード110は処理を終了する。
 なお、例えば、管理端末200は、マスタノード110に代わり、ハイパーパラメタの候補の生成,マスタノード110のタスクキューへのタスクの登録等の処理を行なってもよい。
 ワーカノード120は、マスタノード110が有するタスクキューの情報を参照し、タスクキューに「未処理」ステータスのタスクが存在すれば、当該タスクのステータスを「処理中」に変更し、タスクを実行する。例えば、ワーカノード120は、当該タスクのパラメタベクトルをシミュレーションモデルに入力し、シミュレーションモデルから結果ベクトルを取得する。そして、ワーカノード120は、結果ベクトルをタスクに格納し、タスクのステータスを「処理済み」に変更する。
 このように、システム100は、シミュレーションモデルに対して、パラメタベクトルを入力し、出力される結果ベクトルを取得する、というタスクをワーカノード120間で独立して複数(多数)回実行しながら、入力パラメタの最適解を求める。
 しかし、マスタワーカ方式を採用するシステム100では、マスタノード110が実行する処理の負荷が大きいため、マスタノード110として、ワーカノード120とは別のノードが用いられることが多い。このため、複数のタスクを並列実行する場合のノード1台あたりの処理効率が、全てのノードが並列実行処理を行なう場合と比較して低下することがある。
 また、マスタワーカ方式では、ワーカノード121~126からの通信がマスタノード110に集中するため、システム100の性能がマスタノード110の処理性能及び通信性能(例えば通信可能な待機等)により律速されることがある。
 一方、複数のノードの各々に固定量(固定数)のタスクを分配する固定量分配方式では、各ノードの処理性能(演算能力,演算量)にノード間で差がある場合、早期にタスクの実行を終了したノードは、他のノードのタスクの実行の終了を待つことになる。すなわち、早期にタスクの実行を終了したノードの処理資源(計算資源)が無駄になることがある。例えば、処理性能が最も低いノードがタスクの実行を終了するまで、他の全てのノードが待たされることになる。
 そこで、一実施形態では、複数のノードによる複数のタスクの並列実行処理の効率を向上させる手法を説明する。
 〔B〕一実施形態に係るシステムの説明
 図2は、一実施形態に係るシステム1の構成例を示すブロック図である。システム1は、並列処理システムの一例であり、図2に例示するように、1つ以上(図2では1つ)の代表ワーカノード2aと、複数(図2では5つ)のワーカノード2b~2fとを備えてよい。また、システム1は、管理端末3を備えてもよい。
 以下、代表ワーカノード2a及びワーカノード2b~2fを区別しない場合には、ワーカノード2又はノード2と表記する。また、代表ワーカノード2aを単に代表ノード2aと表記し、ワーカノード2b~2fを単にノード2b~2fと表記する場合がある。さらに、図2以降及びそれらの説明において、代表ワーカノード2a及びワーカノード2b~2fを、それぞれ、ワーカノード#1~#6と表記する場合がある。
 代表ワーカノード2aを含む複数のワーカノード2は、各々がタスクを実行することで複数のタスクを並列実行する、複数のノードの一例である。各ノード2は、コンピュータ,情報処理装置又は並列処理装置の一例である。
 図2に例示するように、システム1では、複数のノード2が、トーラス状、例えばリング状のネットワークを形成してよい。複数のノード2は、当該ネットワークによって、代表ノード2aから複数のノード2b~2fの各々を経由して代表ノード2aに戻る通信経路1aを確立してよい。以下、通信経路1aにおいて、代表ノード2aから複数のノード2b~2fを経由する方向を第1方向,逆の方向を第2方向と表記する。
 以下、システム1による並列実行対象の処理が、ハイパーパラメタ探索処理である場合を例に挙げて説明する。
 代表ノード2aは、複数のノード2のうちの、タスクリスト20を取得した第1ノードの一例である。例えば、代表ノード2aは、タスクリスト20を生成してよい。
 タスクリスト20は、複数のタスクのリストの一例であり、図2に例示するように、入力パラメタセットの識別情報(ID)と、入力パラメタセットとの組み合わせを未完了タスクとしてセットされたリストであってよい。入力パラメタセットの識別情報は、タスクの識別情報(ID)を意味してよく、例えば、“task#1”~“task#100”である。入力パラメタセットは、例えば、値が互いに異なる複数のパラメタ(“p0”,“p1”,・・・)の組み合わせであってよい。入力パラメタセットは、パラメタベクトルであってもよい。
 代表ノード2aは、タスクリスト20を生成すると、タスクの分配処理の実行を指示するコマンド(第1コマンド)を、通信経路1aに沿って第1方向に伝送させるように、通信経路1aの第1方向において代表ノード2aに隣接するノード2bに送信する。ノード2bは、第2ノードの一例である。
 タスクの分配処理は、自身のノード2(自ノード2)と、通信経路1aの第1方向において自ノード2に隣接する1つのノード2と、を含む2つのノード2における未実行のタスクの数に基づき、2つのノード2間で未実行のタスクを分配させる処理である。
 コマンドは、例えば、当該分配処理の実行を開始するためのトリガであってよく、種々の信号又は制御情報であってよい。また、コマンドは、自ノード2の未実行のタスクの情報と、実行済みのタスクの情報とを含んでよい。実行済みのタスクの情報には、タスクの実行結果、例えば結果ベクトルが含まれてよい。
 ノード2は、例えば、分配処理において、2つのノード2における未実行のタスク数の合計を平均化(2等分)した数(以下、「分配数」と表記する)の未実行のタスクを、2つのノード2の各々に分配してもよい。この場合、2つのノード2のうちの、自ノード2で未実行のタスク数が分配数よりも多いノード2が、当該タスク数から分配数を減じた数(差分)の未実行のタスクを、他方のノード2(隣接ノード2)に分配、例えば送信してよい。
 例えば、一方のノード2(自ノード2)から他方のノード2(隣接ノード2)にタスクを送信する条件は、下記式(1)が満たされる場合であってもよい。
   平均値-[自ノード2における未実行のタスク数]<-1  (1)
 一方、自ノード2が隣接ノード2からタスクを受信する条件は、下記式(2)が満たされる場合であってもよい。
   平均値-[自ノード2における未実行のタスク数]>1   (2)
 なお、下記式(3)が満たされる場合は、タスクの分配を行なっても、タスク数の平準化の効果が小さいため、タスクの分配は抑制されてよい。
   |平均値-[自ノード2における未実行のタスク数]|≦1 (3)
 以下、図2を参照して、タスクの分配処理の一例を説明する。分配処理では、代表ノード2a及びノード2bは、代表ノード2aの未実行のタスク数(例えば100)とノード2bの未実行のタスク数(例えば40)との合計の平均値である70を分配数に決定する。例えば、代表ノード2aは、(100-70=)30の未実行のタスクをノード2bに送信する。
 ノード2bは、代表ノード2aとの分配処理の完了後、通信経路における第1方向にコマンドを送信し、ノード2cとの間で分配処理を実行する。例えば、ノード2b及び2cは、ノード2bの未実行のタスク数(例えば70)とノード2cの未実行のタスク数(例えば20)との合計の平均値である45を分配数に決定する。例えば、ノード2bは、(70-45=)25の未実行のタスクをノード2bに分配する。
 このように、分配処理は、通信経路1a上で第1方向に沿って、コマンドの伝播に伴い順次進行する。図1の例では、ノード2c及び2d間の分配数は25,ノード2d及び2e間の分配数は11となる。
 ノード2fは、通信経路1aの第2方向において代表ノード2aに隣接する第3ノードの一例である。ノード2eは、通信経路1aの第2方向においてノード2fに隣接する第4ノードの一例である。
 ノード2fは、ノード2eからコマンドを受信すると、ノード2eとの間で分配処理を実行し、分配数:7で未実行のタスクの分配を行なう。
 そして、ノード2fは、代表ノード2aにコマンドを送信することで、代表ノード2aとの間で分配処理を行なう。例えば、ノード2f及び代表ノード2aは、ノード2fの未実行のタスク数(例えば7)と代表ノード2aの未実行のタスク数(例えば70)との合計の平均である38(38.5の小数点以下切り捨ての場合)を分配数に決定する。例えば、代表ノード2aは、(70-38=)32の未実行のタスクをノード2fに分配する。
 複数のノード2は、例えば、複数のタスクの並列実行処理を、上述した分配処理と並行して実行してよい。例えば、代表ノード2aは、並列実行処理において、所定時間ごとにコマンドをノード2bに送信することで、所定時間間隔で分配処理を開始させてよい。
 なお、図2を参照した説明では、簡単のために、各ノード2において、第1方向に隣接するノード2との間の分配処理で参照されるタスク数が、第2方向に隣接するノード2との間の分配処理で分配された複数のタスクの数であるものとしている。
 しかし、実際には、上述したように、並列実行処理と分配処理とが並行して実行される。このため、分配処理で参照されるタスク数は、第2方向に隣接するノード2との間の分配処理で分配された複数のタスクのうちの、第1方向に隣接するノード2との間の分配処理の実行時点で未実行であるタスクの数であってよい。
 また、通信経路1aの第1方向における、ノード2bからノード2fまでの複数のノード2の各々は、自ノード2で実行したタスクの実行結果と、第2方向に隣接するノード2から受信したタスクの実行結果とを、第1方向に隣接するノード2に送信してよい。例えば、各ノード2は、分配処理の過程で、これらの実行結果を第1方向に隣接するノード2に送信してよい。一例として、各ノード2は、分配処理においてノード2間で通信する情報(例えば、コマンド)に、これらの実行結果を含めてもよい。
 これにより、代表ノード2aは、ノード2b~2fの各々によるタスクの実行結果を収集することができる。
 例えば、代表ノード2aは、収集した実行結果に基づき、ハイパーパラメタ探索処理の終了判定を行なってよい。終了判定が満たされていない場合、代表ノード2aは、さらにハイパーパラメタ候補を作成し、作成した候補のタスクをタスクリスト20に登録(追加)することで、タスクリスト20を更新してよい。そして、代表ノード2aは、取得(生成)した更新済みタスクリスト20に基づき分配処理の実行を指示するコマンドを、ノード2bに送信してよい。
 管理端末3は、システム1の管理者が利用する端末であり、コンピュータ又は情報処理装置の一例である。管理端末3は、例えば、代表ノード2aに対して、データの配置,タスク(ジョブ)の起動,処理状態の確認等を行なう。
 なお、管理端末3は、代表ノード2aに代わり、ハイパーパラメタの候補の生成,タスクリスト20の生成等の処理を行ない、タスクリスト20を代表ノード2aに送信してもよい。
 以上のように、一実施形態に係るシステム1によれば、各々がタスクを実行するノード2のうちの代表ノード2aが、分配処理の実行を指示するコマンドを、通信経路1aに沿って第1方向に伝送させるように、ノード2bに送信する。
 これにより、未実行のタスクの分配処理を、互いに隣り合うノード2どうしに実行させることができ、分配処理及び並列実行処理の実行による処理負荷及び通信負荷を、複数のノード2間で分散させることができる。
 従って、一実施形態に係るシステム1によれば、図1に例示するシステム100と比較して、マスタノード110の実装を省略できるため、ノード1台あたりの処理効率を向上させることができる。また、特定のノード2(例えば代表ノード2a)がシステム1の性能のボトルネックとなる可能性を軽減できる。
 また、一実施形態に係るシステム1によれば、互いに隣り合うノード2における未実行のタスクの数に基づき、当該ノード2間で未実行のタスクが分配される。これにより、互いに隣り合うノード2間の処理性能の差異により生じる未実行のタスクの数を、当該ノード2間での分配処理の実行の都度、調整することができる。従って、ノード2の処理性能が比較的高いノード2において処理待ちが発生することを抑制できる。
 以上のことから、一実施形態に係るシステム1によれば、複数のノード2による複数のタスクの並列実行処理の効率を向上させることができる。
 図3は、一実施形態に係る分配処理の実行回数に応じた各ノード2の分配数の変化の一例を示す図である。図3には、分配処理の実行回数(分配回数)が0の場合において、代表ノード#1の未実行のタスク数が100の場合を例示する。
 図3に例示するように、分配処理の実行が通信経路1aを1周(1巡)した場合(分配回数6参照)、隣接するノード2間の分配数の差の最大値は、ノード#5及び#6の間の24である。分配処理の実行が通信経路1aを2周した場合(分配回数12参照)には、隣接するノード2間の分配数の差の最大値は、ノード#4及び#5の間の10にまで減少する。分配処理がさらに繰り返されることにより、隣接するノード2間の分配数の差の最大値は、より減少する。
 このように、システム1にタスクが割り当てられていないノード2が存在する場合であっても、分配処理を繰り返し実行する(例えば通信経路1aを2周以上する)ことで、各ノード2の未実行のタスク数を平準化することができる。
 なお、図3の分配回数0の状態は、複数のノード2がいずれも未実行のタスクを有しておらず、且つ、代表ノード2aが新たにタスクリスト20を取得(例えば生成)した状態である。以下、このような状態となるタイミングを、「初回実行タイミング」と表記する。
 代表ノード2aは、初回実行タイミングにおいては、上述したコマンド(第1コマンド)とは異なる、初回分配処理の実行を指示するコマンド(第2コマンド)を、通信経路1aに沿って第1方向に伝送させるように、ノード2bに送信してもよい。
 初回分配処理は、固定の分配数、例えば、タスクリスト20の未実行のタスク数を全てのノード2の数で除算して得た分配数を、複数のノード2の各々に分配する処理である。これにより、未実行のタスクを、複数のノード2に均等に分配することができる。
 例えば、代表ノード2aは、初回実行タイミングとなった場合に、初回分配処理の実行を指示するコマンドを送信してよい。代表ノード2aは、初回分配処理の実行が通信経路1aを1周した場合(代表ノード2aがノード2fとの間で初回分配処理を行なった場合)に、初回分配処理を終了してよい。
 このように、初回実行タイミングとなった場合に初回分配処理を実行することで、図3に示す例と比較して短時間で各ノード2の未実行のタスク数を平準化することができる。
 〔C〕ハードウェア構成例
 図4は、一実施形態に係るノード2の機能を実現するコンピュータ10のハードウェア(HW)構成例を示すブロック図である。
 図4に示すように、コンピュータ10は、HW構成として、例示的に、プロセッサ10a,グラフィック処理装置10b,メモリ10c,記憶部10d,IF(Interface)部10e,IO(Input / Output)部10f,読取部10gを備えてよい。
 プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10jで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
 プロセッサ10aとしては、例えば、CPU,MPU,APU,DSP,ASIC,FPGA等の集積回路(IC)が挙げられる。なお、プロセッサ10aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
 グラフィック処理装置10bは、IO部10fのうちのモニタ等の出力装置に対する画面表示制御を行なう。また、グラフィック処理装置10bは、機械学習モデルを利用した機械学習処理及び推論処理を実行するアクセラレータとしての構成を有してもよい。グラフィック処理装置10bとしては、種々の演算処理装置、例えば、GPU(Graphics Processing Unit),APU,DSP,ASIC又はFPGA等の集積回路(IC)が挙げられる。
 メモリ10cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ10cとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ,PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
 記憶部10dは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部10dとしては、HDD(Hard Disk Drive)等の磁気ディスク装置,SSD等の半導体ドライブ装置,不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ,SCM(Storage Class Memory),ROM(Read Only Memory)等が挙げられる。
 記憶部10dは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10h(並列処理プログラム)を格納してよい。
 例えば、ノード2のプロセッサ10aは、記憶部10dに格納されたプログラム10hをメモリ10cに展開して実行することにより、後述するノード2(例えば、図7に示す制御部26)としての機能を実現できる。
 IF部10eは、ノード2間、又は、ノード2(代表ノード2a)と管理端末3との間、の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10eは、イーサネット(登録商標),インフィニバンド(InfiniBand),ミリネット(Myrinet),PCIe(Peripheral Component Interconnect express)等の種々の通信規格に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。また、当該アダプタは、例えば、FC(Fibre Channel)等の光通信に準拠してもよい。
 例えば、ノード2は、IF部10e及びネットワークを介して、他のノード2又は管理端末3のそれぞれと相互に通信可能に接続されてよい。なお、プログラム10hは、当該通信IFを介して、図示しないネットワークからコンピュータ10にダウンロードされ、記憶部10dに格納されてもよい。
 IO部10fは、入力装置及び出力装置の一方又は双方を含んでよい。入力装置としては、例えば、キーボード,マウス,タッチパネル等が挙げられる。出力装置としては、例えば、モニタ,プロジェクタ,プリンタ等の表示装置が挙げられる。また、IO部10fは、入力装置及び出力装置が一体となったタッチパネル等を含んでもよい。出力装置は、グラフィック処理装置10bに接続されてもよい。
 読取部10gは、記録媒体10iに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10gは、記録媒体10iを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10gとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ,記録ディスクへのアクセスを行なうドライブ装置,SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10iにはプログラム10hが格納されてもよく、読取部10gが記録媒体10iからプログラム10hを読み出して記憶部10dに格納してもよい。
 記録媒体10iとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク,CD(Compact Disc),DVD(Digital Versatile Disc),ブルーレイディスク,HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
 上述したコンピュータ10のハードウェア構成は例示である。従って、コンピュータ10内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、コンピュータ10は、IO部10f及び読取部10g等を省略してもよい。
 図5及び図6は、それぞれ、ノード2間を接続するネットワーク構成の一例を示す図である。
 図5は、システム1における第1のネットワーク構成例を示す。図5に示す第1のネットワーク構成例では、システム1は、ノード2間をトーラス状(リング状)に接続(結合)するネットワーク11を備えてよい。ネットワーク11としては、例えば、イーサネット(登録商標),インフィニバンド,ミリネット,PCIe,FC,Tofu(Torus fusion)インターコネクト等の高速ネットワークが挙げられる。
 各ノード2は、IF部10eとして少なくとも2つのアダプタを備えてよく、複数のノード2がリング状に接続されるように、アダプタを介して他のノード2と結線されることで、ネットワーク11を形成してよい。
 管理端末3は、例えば、少なくとも代表ノード2aのIF部10eと、ネットワーク11を介して接続されてよい。
 第1のネットワーク構成例において、図2に示す通信経路1aは、例えば、物理的に結線されているリング状のネットワーク11によって実現されてよい。例えば、各ノード2は、第1方向に対応するIF部10eのアダプタと、第2方向に対応するIF部10eのアダプタとを識別することで、第1方向の通信と第2方向の通信とを区別してよい。
 図6は、システム1における第2のネットワーク構成例を示す。図6に示す第2のネットワーク構成例では、システム1は、ノード2間をツリー状(或いはスター状)に接続(結合)するネットワーク12を備えてよい。ネットワーク12としては、例えば、イーサネット(登録商標),インフィニバンド,ミリネット,PCIe,FC等の高速ネットワークが挙げられる。
 各ノード2は、IF部10eとして少なくとも1つのアダプタを備えてよく、複数のノード2がツリー状に接続されるように、アダプタを介して他のノード2と結線されることで、ネットワーク12を形成してよい。管理端末3は、例えば、少なくとも代表ノード2aのIF部10eと、ネットワーク12を介して接続されてよい。
 第2のネットワーク構成例において、図2に示す通信経路1aは、例えば、物理的に結線されているツリー状のネットワーク12を、仮想的にリング状のネットワークとして利用することで実現されてよい。例えば、各ノード2は、仮想的なリング状のネットワークにおいて自ノード2が通信(アクセス)可能なノード2を、通信経路1aにおいて第1方向及び第2方向にそれぞれ隣接するノード2に制限してもよい。
 なお、システム1のネットワーク構成例は、図5及び図6に示す構成に限られるものではなく、メッシュ状のネットワーク等の既知の種々の構成であってもよい。
 〔D〕ソフトウェア構成例
 図7は、一実施形態に係るノード2のソフトウェア構成例を示すブロック図である。図7に示すように、ノード2は、例示的に、メモリ部21,通信部22,タスク実行部23及びタスク量平均化処理部24を備えてよい。また、代表ノード2aとして動作するノード2は、タスク更新部25を備えてよい。通信部22,タスク実行部23,タスク量平均化処理部24及びタスク更新部25は、制御部26の一例である。
 なお、代表ノード2aの故障等に備えて各ノード2が代表ノード2aとして動作可能である場合は、各ノード2がタスク更新部25を備えてもよい。また、管理端末3がタスク更新部25として動作する場合は、ノード2はタスク更新部25を省略してもよい。
 メモリ部21は、記憶領域の一例であり、ノード2が利用する種々のデータを記憶する。メモリ部21は、例えば、図4に示すメモリ10c及び記憶部10dのうちの一方又は双方が有する記憶領域により実現されてもよい。
 図7に示すように、メモリ部21は、例示的に、タスク情報21a,未完了タスクリスト21b及び完了タスクリスト21cを記憶可能であってよい。
 タスク情報21aは、タスクの実行に用いられる種々の情報、例えば、シミュレーションモデル及びシミュレーションプログラム等を含んでよい。
 未完了タスクリスト21bは、自ノード2において未実行のタスクのリストである。未完了タスクリスト21bには、タスクリスト20と同様の情報、例えば、入力パラメタセット(タスク)の識別情報(ID)と、入力パラメタセットとの組み合わせであるタスクが含まれてよい。
 完了タスクリスト21cは、自ノード2において実行済みの(完了した)タスクのリストである。完了タスクリスト21cには、例えば、入力パラメタセット(タスク)の識別情報(ID)と、タスクの実行結果とが含まれてよい。実行結果には、結果ベクトルが含まれてよい。
 なお、「未完了」又は「未実行」とは、ノード2が当該タスクの実行を開始していない状態であることを示す。「完了」又は「実行済み」とは、ノード2が当該タスクを実行し、結果ベクトルを取得済みであることを示す。
 通信部22は、IF部10e(図4参照)を介して、通信経路1aにおいて隣接する他のノード2、又は、管理端末3との間で種々の通信を行なう。
 タスク実行部23は、タスク情報21aに含まれるシミュレーションプログラムの実行により、未完了タスクリスト21bに格納されたタスクを順次実行する。例えば、タスク実行部23は、未完了タスクリスト21bに格納されたタスクの入力パラメタセットをタスク情報21aに含まれるシミュレーションモデルに入力し、シミュレーションモデルから出力される結果ベクトルを取得する。
 タスク実行部23は、例えば、タスクの実行状態の変化に応じて、当該タスクの情報を、未完了タスクリスト21bから完了タスクリスト21cに移動してよい。一例として、タスク実行部23は、未完了タスクリスト21b内のタスクの実行を開始すると、当該タスクを未完了タスクリスト21bから削除するとともに、当該タスクの入力パラメタセットの識別情報を完了タスクリスト21cに登録してもよい。そして、タスク実行部23は、当該タスクの実行により結果ベクトルを取得すると、取得した結果ベクトルを、先に登録した識別情報と対応付けて完了タスクリスト21cに登録してもよい。
 タスク量平均化処理部24は、タスク実行部23の動作と並行して、分配処理を実行する。例えば、タスク量平均化処理部24は、以下の(1)~(6)の処理を繰り返し実行する。
 なお、代表ノード2aのタスク量平均化処理部24は、初回実行タイミングとなった場合に限り、分配処理における(1)~(3)の処理の実行を省略し、(4)~(6)の処理を実行してよい。
 (1)タスク量平均化処理部24は、第2方向に隣接するノード2(第2方向の隣接ノード2)からコマンドを受信すると、第2方向の隣接ノード2との間で、自ノード2の未完了タスクリスト21bに含まれるタスクの数、すなわち、自ノード2で未実行のタスク数を交換する。
 (2)タスク量平均化処理部24は、自ノード2及び第2方向の隣接ノード2における未実行のタスク数の平均を算出し、自ノード2で未実行のタスク数と平均との差分の数の未実行のタスクを、自ノード2及び第2方向の隣接ノード2間で調整する。
 例えば、自ノード2で未実行のタスク数が平均よりも多い場合、タスク量平均化処理部24は、差分の数の未実行のタスクを、未完了タスクリスト21bから削除するとともに、第2方向の隣接ノード2に送信する。一方、自ノード2で未実行のタスク数が平均よりも少ない場合、タスク量平均化処理部24は、第2方向の隣接ノード2で未実行のタスク数と平均との差分の数の未実行のタスクを、第2方向の隣接ノード2から受信し、未完了タスクリスト21bに登録する。
 (3)タスク量平均化処理部24は、ノード2bから第2方向の隣接ノード2までの各ノード2で実行されたタスクの結果情報、例えば、入力パラメタセットの識別情報と結果ベクトルとの組み合わせを、第2方向の隣接ノード2から受信する。結果情報は、完了タスクリスト21cの形式であってもよい。なお、タスク量平均化処理部24は、受信した結果情報を、自ノード2の完了タスクリスト21cとは区別可能な態様でメモリ部21に格納してもよいし、自ノード2の完了タスクリスト21cに追加的に登録してもよい。
 (4)タスク量平均化処理部24は、第1方向に隣接するノード2(第1方向の隣接ノード2)にコマンドを送信し、第1方向の隣接ノード2との間で、自ノード2の未完了タスクリスト21bに含まれるタスクの数、すなわち、自ノード2で未実行のタスク数を交換する。
 なお、初回実行タイミングにおいて、代表ノード2aの未完了タスクリスト21bは、上述したタスクリスト20となる。すなわち、代表ノード2aは、取得(例えば生成)したタスクリスト20を未完了タスクリスト21bとしてメモリ部21に格納し、当該未完了タスクリスト21bに含まれるタスクの数を、第1方向の隣接ノード2に送信する。
 (5)タスク量平均化処理部24は、自ノード2及び第1方向の隣接ノード2における未実行のタスク数の平均を算出し、自ノード2で未実行のタスク数と平均との差分の数の未実行のタスクを、自ノード2及び第1方向の隣接ノード2間で調整する。なお、自ノード2における処理(5)は、第1方向の隣接ノード2の視点では、当該隣接ノード2における処理(2)に相当する。
 例えば、自ノード2で未実行のタスク数が平均よりも多い場合、タスク量平均化処理部24は、差分の数の未実行のタスクを、未完了タスクリスト21bから削除するとともに、第1方向の隣接ノード2に送信する。一方、自ノード2で未実行のタスク数が平均よりも少ない場合、タスク量平均化処理部24は、第1方向の隣接ノード2で未実行のタスク数と平均との差分の数の未実行のタスクを、第1方向の隣接ノード2から受信し、未完了タスクリスト21bに登録する。
 (6)タスク量平均化処理部24は、処理(3)において第2方向の隣接ノード2から受信したタスクの結果情報と、自ノード2の完了タスクリスト21c内の結果情報とを、第1方向の隣接ノード2に送信する。代表ノード2aのタスク量平均化処理部24は、第1方向の隣接ノード2に、結果情報としてダミーデータ(例えば空の情報)を送信してよい。なお、結果情報の送信後、タスク量平均化処理部24は、送信した結果情報に対応するエントリを完了タスクリスト21cから削除してもよい。
 タスク更新部25は、代表ノード2aにおいて、タスク更新処理を行なう。例えば、タスク更新部25は、ハイパーパラメタ候補ごとに、入力パラメタセットとその識別情報とを含むタスクを作成し、タスクリスト20(未完了タスクリスト21b)に登録する。
 また、タスク更新部25は、第2方向の隣接ノード2(図2の例ではノード2f)から、自ノード2の処理(3)(隣接ノード2の処理(6))において結果情報を受信すると、当該結果情報に基づき、タスクの並列実行処理の終了判定を行なう。
 なお、タスク更新部25は、結果情報の受信回数、換言すれば、分配処理が通信経路1aを周回した回数が所定回数N(Nは1以上の整数)に達した場合に、終了判定を行なってもよい。
 受信した結果情報が終了条件を満たしている場合、タスク更新部25は、並列実行処理を終了する。例えば、タスク更新部25は、タスクの実行の終了を指示する終了コマンドを、通信経路1aの第1方向又は第2方向に沿って伝送するように、第1方向又は第2方向に隣接するノード2に送信してよい。第1方向又は第2方向の隣接ノード2から終了コマンドを受信したノード2は、メモリ部21からタスク情報21a,未完了タスクリスト21b及び完了タスクリスト21cを削除し、第2方向又は第1方向の隣接ノード2に終了コマンドを送信してよい。
 受信した結果情報が終了条件を満たしていない場合、タスク更新部25は、ハイパーパラメタ候補を作成する。そして、タスク更新部25は、ハイパーパラメタ候補ごとに、入力パラメタセットとその識別情報とを含むタスクを作成し、タスクリスト20(未完了タスクリスト21b)に登録(追加)する。この場合、代表ノード2aのタスク量平均化処理部24は、処理(4)から分配処理を再開する。
 〔E〕動作例
 次に、一実施形態に係るシステム1(ノード2)の動作例を説明する。図8は、一実施形態に係るノード2の分配処理の動作例を説明するフローチャートである。
 なお、各ノード2のタスク実行部23は、図8の処理と並行して、未完了タスクリスト21b内のタスクを実行してよい。また、図8の処理は、代表ノード2aのタスク更新部25が終了コマンドを送信した場合に終了してよい。
 以下の説明では、図8の処理を実行するノード2を自ノード2又は単にノード2と表記し、自ノード2に対して第2方向に隣接するノード2を前ノード2と表記し、自ノード2に対して第1方向に隣接するノード2を次ノード2と表記する。
 図8に例示するように、代表ノード2a以外の各ノード2(ノード2b~2f)のタスク量平均化処理部24は、前ノード2からコマンド(第1コマンド)を受信する(ステップS1)。当該コマンドは、例えば、前ノード2が自ノード2との間で分配処理を実行可能であること(OK)を示すコマンドであってよい。
 タスク量平均化処理部24は、前ノード2を相手ノード2として、図9を参照して後述するタスク量平均化処理を実行する(ステップS2)。
 タスク量平均化処理部24は、前ノード2から結果情報を受信し(ステップS3)、結果情報をメモリ部21に格納する。
 タスク量平均化処理部24は、次ノード2にコマンド(第1コマンド)を送信する(ステップS4)。当該コマンドは、例えば、自ノード2が次ノード2との間で分配処理を実行可能であること(OK)を示すコマンドであってよい。なお、代表ノード2aのタスク量平均化処理部24は、ステップS4から処理を開始する。
 タスク量平均化処理部24は、次ノード2を相手ノード2として、図9を参照して後述するタスク量平均化処理を実行する(ステップS5)。
 タスク量平均化処理部24は、ステップS3において受信した結果情報と、自ノード2の結果情報とを次ノード2に送信し(ステップS6)、処理がステップS1に移行する。例えば、ノード2は、前ノード2から次のコマンドを受信するまで待ち合わせを行なうとともに、タスク実行部23によりタスクを実行する。
 なお、代表ノード2aのタスク量平均化処理部24は、ステップS6において、空の情報を送信してもよいし、結果情報の送信自体を抑制してもよい。
 次に、ステップS2及びS5におけるタスク量平均化処理の動作例を説明する。図9は、一実施形態に係るノード2のタスク量平均化処理の動作例を説明するフローチャートである。
 タスク量平均化処理部24は、相手ノード2のタスク数、すなわち未実行のタスク数を取得し、自ノード2の未実行のタスク数との平均値を算出する(ステップS11)。
 タスク量平均化処理部24は、平均値と、自ノード2の未実行のタスク数とが、上記式(1)、すなわち、平均値-[自ノード2における未実行のタスク数]<-1を満たすか否かを判定する(ステップS12)。
 上記式(1)が満たされる場合(ステップS12でYES)、タスク量平均化処理部24は、自ノード2の未実行のタスク数と平均値との差分のタスクを相手ノード2に送信する(ステップS13)。なお、タスク量平均化処理部24は、送信したタスクを未完了タスクリスト21bから削除し、タスク量平均化処理が終了する。
 上記式(1)が満たされない場合(ステップS12でNO)、タスク量平均化処理部24は、平均値と、自ノード2の未実行のタスク数とが、上記式(2)、すなわち、平均値-[自ノード2における未実行のタスク数]>1を満たすか否かを判定する(ステップS14)。
 上記式(2)が満たされる場合(ステップS14でYES)、タスク量平均化処理部24は、相手ノード2の未実行のタスク数と平均値との差分のタスクを相手ノード2から受信する(ステップS15)。なお、タスク量平均化処理部24は、受信したタスクを未完了タスクリスト21bに追加し、タスク量平均化処理が終了する。
 上記式(2)が満たされない場合(ステップS14でNO)、すなわち、上記式(3)が満たされる場合、タスク量平均化処理部24は、タスクの分配を抑制し、タスク量平均化処理が終了する。
 〔F〕その他
 上述した実施形態に係る技術は、以下のように変形、変更して実施することができる。
 例えば、図7に示すノード2が備える機能ブロック22~25は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
 また、一実施形態では、分配数の決定手法が、互いに隣り合うノード2における未実行のタスク数の平均化であるものとして説明したが、これに限定されるものではない。分配数の決定手法としては、例えば、重み付き平均化,所定数の分配と平均化又は重み付き平均化との組み合わせ,未実行のタスク数と所定の関数とに基づく算出、等の種々の手法が用いられてよい。重み付き平均化では、例えばノード2の処理性能に基づく重みが用いられてもよい。
 〔G〕付記
 以上の実施形態に関し、さらに以下の付記を開示する。
 (付記1)
 各々がタスクを実行することで複数の前記タスクを並列実行する、複数のコンピュータのうちの、第1コンピュータとしてのコンピュータに、
 前記複数のタスクのリストを取得し、
 自コンピュータと、前記第1コンピュータから前記複数のコンピュータの各々を経由し前記第1コンピュータに戻る通信経路の第1方向において前記自コンピュータに隣接する1つのコンピュータと、を含む2つのコンピュータにおける未実行のタスクの数に基づき前記2つのコンピュータ間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1コンピュータに隣接する第2コンピュータに送信する、
処理を実行させる、並列処理プログラム。
 (付記2)
 前記コンピュータに、
  前記通信経路の前記第1方向とは異なる第2方向において前記第1コンピュータに隣接する第3コンピュータから、前記通信経路の前記第1方向における、前記第2コンピュータから前記第3コンピュータまでの各々において実行されたタスクの実行結果を受信し、
  受信した前記実行結果に基づき更新された前記リストを取得し、
  前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2コンピュータに送信する、
処理を実行させる、付記1に記載の並列処理プログラム。
 (付記3)
 前記コンピュータに、
  前記第3コンピュータから前記コマンドを受信し、
  前記第3コンピュータが前記通信経路の前記第2方向において前記第3コンピュータに隣接する第4コンピュータとの間で実行した前記分配処理により前記第3コンピュータに分配された複数のタスクのうちの未実行のタスクと、前記第1コンピュータが前記第2コンピュータとの間で実行した前記分配処理により前記第1コンピュータに分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1コンピュータの未実行のタスクと前記第3コンピュータの未実行のタスクとを前記第1コンピュータ及び前記第3コンピュータ間で分配する、
処理を実行させる、付記2に記載の並列処理プログラム。
 (付記4)
 前記分配処理は、前記2つのコンピュータにおける未実行のタスクの数を前記2つのコンピュータ間で平均化するように、前記2つのコンピュータ間で前記未実行のタスクを分配させる処理である、
付記1~付記3のいずれか1項に記載の並列処理プログラム。
 (付記5)
 各々がタスクを実行することで複数の前記タスクを並列実行する、複数の並列処理装置のうちの、第1並列処理装置としての並列処理装置であって、
 前記複数のタスクのリストを取得し、
 自並列処理装置と、前記第1並列処理装置から前記複数の並列処理装置の各々を経由し前記第1並列処理装置に戻る通信経路の第1方向において前記自並列処理装置に隣接する1つの並列処理装置と、を含む2つの並列処理装置における未実行のタスクの数に基づき前記2つの並列処理装置間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1並列処理装置に隣接する第2並列処理装置に送信する、
制御部を備える、並列処理装置。
 (付記6)
 前記制御部は、
  前記通信経路の前記第1方向とは異なる第2方向において前記第1並列処理装置に隣接する第3並列処理装置から、前記通信経路の前記第1方向における、前記第2並列処理装置から前記第3並列処理装置までの各々において実行されたタスクの実行結果を受信し、
  受信した前記実行結果に基づき更新された前記リストを取得し、
  前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2並列処理装置に送信する、
付記5に記載の並列処理装置。
 (付記7)
 前記制御部は、
  前記第3並列処理装置から前記コマンドを受信し、
  前記第3並列処理装置が前記通信経路の前記第2方向において前記第3並列処理装置に隣接する第4並列処理装置との間で実行した前記分配処理により前記第3並列処理装置に分配された複数のタスクのうちの未実行のタスクと、前記第1並列処理装置が前記第2並列処理装置との間で実行した前記分配処理により前記第1並列処理装置に分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1並列処理装置の未実行のタスクと前記第3並列処理装置の未実行のタスクとを前記第1並列処理装置及び前記第3並列処理装置間で分配する、
付記6に記載の並列処理装置。
 (付記8)
 前記分配処理は、前記2つの並列処理装置における未実行のタスクの数を前記2つの並列処理装置間で平均化するように、前記2つの並列処理装置間で前記未実行のタスクを分配させる処理である、
付記5~付記7のいずれか1項に記載の並列処理装置。
 (付記9)
 各々がタスクを実行することで複数の前記タスクを並列実行する、複数のノードのうちの、前記複数のタスクのリストを取得した第1ノードが、
  自ノードと、前記第1ノードから前記複数のノードの各々を経由し前記第1ノードに戻る通信経路の第1方向において前記自ノードに隣接する1つのノードと、を含む2つのノードにおける未実行のタスクの数に基づき前記2つのノード間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1ノードに隣接する第2ノードに送信する、
並列処理方法。
 (付記10)
 前記通信経路の前記第1方向における、前記第2ノードから、前記通信経路の前記第1方向とは異なる第2方向において前記第1ノードに隣接する第3ノードまでの複数のノードの各々が、
  前記分配処理において、前記自ノードにおいて実行したタスクの実行結果と、前記通信経路の前記第2方向において前記自ノードに隣接するノードから受信する実行結果とを、前記通信経路の前記第1方向において前記自ノードに隣接するノードに送信する、
付記9に記載の並列処理方法。
 (付記11)
 前記第1ノードが、
  前記第3ノードから受信した実行結果に基づき更新された前記リストを取得し、
  前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2ノードに送信する、
付記10に記載の並列処理方法。
 (付記12)
 前記第3ノードが、
  前記通信経路の前記第2方向において前記第3ノードに隣接する第4ノードから前記コマンドを受信すると、前記第4ノードとの間で前記分配処理を実行し、
  前記第1ノードに前記コマンドを送信することで、前記第4ノードとの間で実行した前記分配処理により前記第3ノードに分配された複数のタスクのうちの未実行のタスクと、前記第1ノードが前記第2ノードとの間で実行した前記分配処理により前記第1ノードに分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1ノードの未実行のタスクと前記第3ノードの未実行のタスクとを前記第1ノード及び前記第3ノード間で分配する、
付記10又は付記11に記載の並列処理方法。
 (付記13)
 前記分配処理は、前記2つのノードにおける未実行のタスクの数を前記2つのノード間で平均化するように、前記2つのノード間で前記未実行のタスクを分配させる処理である、
付記9~付記12のいずれか1項に記載の並列処理方法。
 (付記14)
 各々がタスクを実行することで複数の前記タスクを並列実行する、複数のノードを備え、
 前記複数のノードのうちの、前記複数のタスクのリストを取得した第1ノードは、
  自ノードと、前記第1ノードから前記複数のノードの各々を経由し前記第1ノードに戻る通信経路の第1方向において前記自ノードに隣接する1つのノードと、を含む2つのノードにおける未実行のタスクの数に基づき前記2つのノード間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1ノードに隣接する第2ノードに送信する、
並列処理システム。
 (付記15)
 前記通信経路の前記第1方向における、前記第2ノードから、前記通信経路の前記第1方向とは異なる第2方向において前記第1ノードに隣接する第3ノードまでの複数のノードの各々は、
  前記分配処理において、前記自ノードにおいて実行したタスクの実行結果と、前記通信経路の前記第2方向において前記自ノードに隣接するノードから受信する実行結果とを、前記通信経路の前記第1方向において前記自ノードに隣接するノードに送信する、
付記14に記載の並列処理システム。
 (付記16)
 前記第1ノードは、
  前記第3ノードから受信した実行結果に基づき更新された前記リストを取得し、
  前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2ノードに送信する、
付記15に記載の並列処理システム。
 (付記17)
 前記第3ノードは、
  前記通信経路の前記第2方向において前記第3ノードに隣接する第4ノードから前記コマンドを受信すると、前記第4ノードとの間で前記分配処理を実行し、
  前記第1ノードに前記コマンドを送信することで、前記第4ノードとの間で実行した前記分配処理により前記第3ノードに分配された複数のタスクのうちの未実行のタスクと、前記第1ノードが前記第2ノードとの間で実行した前記分配処理により前記第1ノードに分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1ノードの未実行のタスクと前記第3ノードの未実行のタスクとを前記第1ノード及び前記第3ノード間で分配する、
付記15又は付記16に記載の並列処理システム。
 (付記18)
 前記分配処理は、前記2つのノードにおける未実行のタスクの数を前記2つのノード間で平均化するように、前記2つのノード間で前記未実行のタスクを分配させる処理である、
付記14~付記17のいずれか1項に記載の並列処理システム。
 1  システム
 1a  通信経路
 10  コンピュータ
 11,12  ネットワーク
 2,2b~2f  ワーカノード,ノード
 2a  代表ワーカノード,ワーカノード,ノード
 20  タスクリスト
 21  メモリ部
 21a  タスク情報
 21b  未完了タスクリスト
 21c  完了タスクリスト
 22  通信部
 23  タスク実行部
 24  タスク量平均化処理部
 25  タスク更新部
 26  制御部
 3  管理端末

Claims (18)

  1.  各々がタスクを実行することで複数の前記タスクを並列実行する、複数のコンピュータのうちの、第1コンピュータとしてのコンピュータに、
     前記複数のタスクのリストを取得し、
     自コンピュータと、前記第1コンピュータから前記複数のコンピュータの各々を経由し前記第1コンピュータに戻る通信経路の第1方向において前記自コンピュータに隣接する1つのコンピュータと、を含む2つのコンピュータにおける未実行のタスクの数に基づき前記2つのコンピュータ間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1コンピュータに隣接する第2コンピュータに送信する、
    処理を実行させる、並列処理プログラム。
  2.  前記コンピュータに、
      前記通信経路の前記第1方向とは異なる第2方向において前記第1コンピュータに隣接する第3コンピュータから、前記通信経路の前記第1方向における、前記第2コンピュータから前記第3コンピュータまでの各々において実行されたタスクの実行結果を受信し、
      受信した前記実行結果に基づき更新された前記リストを取得し、
      前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2コンピュータに送信する、
    処理を実行させる、請求項1に記載の並列処理プログラム。
  3.  前記コンピュータに、
      前記第3コンピュータから前記コマンドを受信し、
      前記第3コンピュータが前記通信経路の前記第2方向において前記第3コンピュータに隣接する第4コンピュータとの間で実行した前記分配処理により前記第3コンピュータに分配された複数のタスクのうちの未実行のタスクと、前記第1コンピュータが前記第2コンピュータとの間で実行した前記分配処理により前記第1コンピュータに分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1コンピュータの未実行のタスクと前記第3コンピュータの未実行のタスクとを前記第1コンピュータ及び前記第3コンピュータ間で分配する、
    処理を実行させる、請求項2に記載の並列処理プログラム。
  4.  前記分配処理は、前記2つのコンピュータにおける未実行のタスクの数を前記2つのコンピュータ間で平均化するように、前記2つのコンピュータ間で前記未実行のタスクを分配させる処理である、
    請求項1~請求項3のいずれか1項に記載の並列処理プログラム。
  5.  各々がタスクを実行することで複数の前記タスクを並列実行する、複数の並列処理装置のうちの、第1並列処理装置としての並列処理装置であって、
     前記複数のタスクのリストを取得し、
     自並列処理装置と、前記第1並列処理装置から前記複数の並列処理装置の各々を経由し前記第1並列処理装置に戻る通信経路の第1方向において前記自並列処理装置に隣接する1つの並列処理装置と、を含む2つの並列処理装置における未実行のタスクの数に基づき前記2つの並列処理装置間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1並列処理装置に隣接する第2並列処理装置に送信する、
    制御部を備える、並列処理装置。
  6.  前記制御部は、
      前記通信経路の前記第1方向とは異なる第2方向において前記第1並列処理装置に隣接する第3並列処理装置から、前記通信経路の前記第1方向における、前記第2並列処理装置から前記第3並列処理装置までの各々において実行されたタスクの実行結果を受信し、
      受信した前記実行結果に基づき更新された前記リストを取得し、
      前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2並列処理装置に送信する、
    請求項5に記載の並列処理装置。
  7.  前記制御部は、
      前記第3並列処理装置から前記コマンドを受信し、
      前記第3並列処理装置が前記通信経路の前記第2方向において前記第3並列処理装置に隣接する第4並列処理装置との間で実行した前記分配処理により前記第3並列処理装置に分配された複数のタスクのうちの未実行のタスクと、前記第1並列処理装置が前記第2並列処理装置との間で実行した前記分配処理により前記第1並列処理装置に分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1並列処理装置の未実行のタスクと前記第3並列処理装置の未実行のタスクとを前記第1並列処理装置及び前記第3並列処理装置間で分配する、
    請求項6に記載の並列処理装置。
  8.  前記分配処理は、前記2つの並列処理装置における未実行のタスクの数を前記2つの並列処理装置間で平均化するように、前記2つの並列処理装置間で前記未実行のタスクを分配させる処理である、
    請求項5~請求項7のいずれか1項に記載の並列処理装置。
  9.  各々がタスクを実行することで複数の前記タスクを並列実行する、複数のノードのうちの、前記複数のタスクのリストを取得した第1ノードが、
      自ノードと、前記第1ノードから前記複数のノードの各々を経由し前記第1ノードに戻る通信経路の第1方向において前記自ノードに隣接する1つのノードと、を含む2つのノードにおける未実行のタスクの数に基づき前記2つのノード間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1ノードに隣接する第2ノードに送信する、
    並列処理方法。
  10.  前記通信経路の前記第1方向における、前記第2ノードから、前記通信経路の前記第1方向とは異なる第2方向において前記第1ノードに隣接する第3ノードまでの複数のノードの各々が、
      前記分配処理において、前記自ノードにおいて実行したタスクの実行結果と、前記通信経路の前記第2方向において前記自ノードに隣接するノードから受信する実行結果とを、前記通信経路の前記第1方向において前記自ノードに隣接するノードに送信する、
    請求項9に記載の並列処理方法。
  11.  前記第1ノードが、
      前記第3ノードから受信した実行結果に基づき更新された前記リストを取得し、
      前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2ノードに送信する、
    請求項10に記載の並列処理方法。
  12.  前記第3ノードが、
      前記通信経路の前記第2方向において前記第3ノードに隣接する第4ノードから前記コマンドを受信すると、前記第4ノードとの間で前記分配処理を実行し、
      前記第1ノードに前記コマンドを送信することで、前記第4ノードとの間で実行した前記分配処理により前記第3ノードに分配された複数のタスクのうちの未実行のタスクと、前記第1ノードが前記第2ノードとの間で実行した前記分配処理により前記第1ノードに分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1ノードの未実行のタスクと前記第3ノードの未実行のタスクとを前記第1ノード及び前記第3ノード間で分配する、
    請求項10又は請求項11に記載の並列処理方法。
  13.  前記分配処理は、前記2つのノードにおける未実行のタスクの数を前記2つのノード間で平均化するように、前記2つのノード間で前記未実行のタスクを分配させる処理である、
    請求項9~請求項12のいずれか1項に記載の並列処理方法。
  14.  各々がタスクを実行することで複数の前記タスクを並列実行する、複数のノードを備え、
     前記複数のノードのうちの、前記複数のタスクのリストを取得した第1ノードは、
      自ノードと、前記第1ノードから前記複数のノードの各々を経由し前記第1ノードに戻る通信経路の第1方向において前記自ノードに隣接する1つのノードと、を含む2つのノードにおける未実行のタスクの数に基づき前記2つのノード間で前記未実行のタスクを分配させる分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記通信経路の前記第1方向において前記第1ノードに隣接する第2ノードに送信する、
    並列処理システム。
  15.  前記通信経路の前記第1方向における、前記第2ノードから、前記通信経路の前記第1方向とは異なる第2方向において前記第1ノードに隣接する第3ノードまでの複数のノードの各々は、
      前記分配処理において、前記自ノードにおいて実行したタスクの実行結果と、前記通信経路の前記第2方向において前記自ノードに隣接するノードから受信する実行結果とを、前記通信経路の前記第1方向において前記自ノードに隣接するノードに送信する、
    請求項14に記載の並列処理システム。
  16.  前記第1ノードは、
      前記第3ノードから受信した実行結果に基づき更新された前記リストを取得し、
      前記更新されたリストに基づき前記分配処理の実行を指示するコマンドを、前記通信経路に沿って前記第1方向に伝送させるように、前記第2ノードに送信する、
    請求項15に記載の並列処理システム。
  17.  前記第3ノードは、
      前記通信経路の前記第2方向において前記第3ノードに隣接する第4ノードから前記コマンドを受信すると、前記第4ノードとの間で前記分配処理を実行し、
      前記第1ノードに前記コマンドを送信することで、前記第4ノードとの間で実行した前記分配処理により前記第3ノードに分配された複数のタスクのうちの未実行のタスクと、前記第1ノードが前記第2ノードとの間で実行した前記分配処理により前記第1ノードに分配された複数のタスクのうちの未実行のタスクとの数に基づき、前記第1ノードの未実行のタスクと前記第3ノードの未実行のタスクとを前記第1ノード及び前記第3ノード間で分配する、
    請求項15又は請求項16に記載の並列処理システム。
  18.  前記分配処理は、前記2つのノードにおける未実行のタスクの数を前記2つのノード間で平均化するように、前記2つのノード間で前記未実行のタスクを分配させる処理である、
    請求項14~請求項17のいずれか1項に記載の並列処理システム。
PCT/JP2023/043950 2023-01-06 2023-12-08 並列処理プログラム,並列処理装置,並列処理方法及び並列処理システム WO2024147258A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2023-001325 2023-01-06

Publications (1)

Publication Number Publication Date
WO2024147258A1 true WO2024147258A1 (ja) 2024-07-11

Family

ID=

Similar Documents

Publication Publication Date Title
US12001681B2 (en) Distributed storage system and data processing method
CN108170590B (zh) 一种区块链系统的测试系统和方法
KR100423225B1 (ko) 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜
JP4621999B2 (ja) 情報処理システム
US20120297056A1 (en) Extensible centralized dynamic resource distribution in a clustered data grid
US10084860B2 (en) Distributed file system using torus network and method for configuring and operating distributed file system using torus network
US9916215B2 (en) System and method for selectively utilizing memory available in a redundant host in a cluster for virtual machines
US9542122B2 (en) Logical block addresses used for executing host commands
KR102028428B1 (ko) 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 구성 및 운영 방법
JP6617461B2 (ja) 制御装置、制御プログラム、及び制御方法
JP6079065B2 (ja) 情報処理装置,処理方法及びプログラム
CN113835899A (zh) 针对分布式图学习的数据融合方法及装置
JP2009087282A (ja) 並列計算システムおよび並列計算方法
WO2024147258A1 (ja) 並列処理プログラム,並列処理装置,並列処理方法及び並列処理システム
JP7440739B2 (ja) 情報処理装置および並列演算プログラム
US7299265B2 (en) Distributed computing system selecting a service master for each service by an elected global master for managing requests for that service
JP6036848B2 (ja) 情報処理システム
KR20190120057A (ko) 로드 균형을 위한 확률 기반 적응형 라우팅 알고리즘
US10061624B2 (en) Parallel computing system, job management device, and job management method
JP2016091069A (ja) ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置
WO2018173300A1 (ja) I/o制御方法およびi/o制御システム
KR20190116034A (ko) 네트워크 인터페이스 장치 및 그 네트워크 인터페이스 장치의 데이터 처리 방법
US20230252306A1 (en) Asynchronous architecture for evolutionary computation techniques
US20230266907A1 (en) Storage system and data transfer method for storage system
JP7235295B2 (ja) 仮想マシン管理装置、仮想マシン管理方法、及びプログラム