JP2012048515A - マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理 - Google Patents

マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理 Download PDF

Info

Publication number
JP2012048515A
JP2012048515A JP2010190290A JP2010190290A JP2012048515A JP 2012048515 A JP2012048515 A JP 2012048515A JP 2010190290 A JP2010190290 A JP 2010190290A JP 2010190290 A JP2010190290 A JP 2010190290A JP 2012048515 A JP2012048515 A JP 2012048515A
Authority
JP
Japan
Prior art keywords
thread
procedure
threads
node
processing
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.)
Granted
Application number
JP2010190290A
Other languages
English (en)
Other versions
JP5623187B2 (ja
Inventor
Atsushi Doi
淳 土井
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2010190290A priority Critical patent/JP5623187B2/ja
Publication of JP2012048515A publication Critical patent/JP2012048515A/ja
Application granted granted Critical
Publication of JP5623187B2 publication Critical patent/JP5623187B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

【課題】
マルチノードにわたり分散して並行に処理されている複数のプロシージャを調和させるにあたり、マルチスレッドを構成するスレッド間でのバリア同期を完全に取り除き、ノード間のデータの送受信(非同期通信)を実現すること。
【解決手段】
非同期送信前のバリア同期を取り除き、送信カウンタ (send counter) を導入し、カウンタの値が所定の値に達したときに、送信カウンタが準備完了とする。受信待ち後のバリア同期を取り除き、マルチスレッドを構成するそれぞれのスレッドが自分の必要なデータが受信されるまで待つようにする。マルチスレッドを構成するスレッドの間で依存性のある処理を行う場合に、整合性をとるためにフェーズ・カウンタ (phase counter) を導入し、依存しあうスレッド間でタイムステップを保証する。
【選択図】 図6

Description

本発明は、マルチノードにわたるコンピュータ計算の並列処理に関し、より詳しくは、1のノードにおいて複数のプロシージャを並行に処理しながら、かつ、その処理結果のデータを1のノードから他のノードへ送信しながら、マルチノードにわたり分散して並行に処理されている複数のプロシージャとの間で調和を図ることに関する。
図1は、各ノード間がインターコネクトされたマルチノードシステムを示す模式図である。各ノードは、単数または複数のCPU(ここでは、4つのCPU、例えば、4つのMulti−core Processors)と、単数または複数のCPUによって共有されるメモリ(処理速度を速めるためにdata cacheに分かれている場合を含む)と、他のノードとの間をインターコネクトする通信コントローラ(CC:Communication Controller)とを有している。
マルチノードを形成している各ノード間は、通信コントローラ(CC)を介して接続されている。あるノードにおける処理結果のデータが、他のノードへと送信される。実際に送信を行う主体は、通信コントローラであってもよいし、複数のCPUのうちの何れかのCPUであってもよく、かかる場合には通信コントローラは必須の構成ではない。また、(何れかの)CPUは命令を発するだけで、その命令に通信コントローラが従うという構成にしてもよい。
図2は、CPUからの送信命令に従って、マルチノードにわたって1のノードから他のノードへデータの非同期送信を行うことを示す模式図である。ノ−ド1のCPUから通信コントローラに対して「(ノード1の)メモリ中のアレイ1から、ノード2のメモリ中のアレイ2へ、データを送信せよ」という送信命令が発せられると、通信コントローラ1がその送信命令に従い、メモリ中のアレイ1から送信データを呼び出し、インターコネクトされている通信コントローラ1と通信コントローラ2を通じて、通信コントローラ2がノード2のメモリ中のアレイ2へ受信データを記憶する。
この際、ノード2の側では、ノード1から送信されてきたデータについて、受信したデータのバイト数を、または、データを受信した回数を、ノード2に用意されている受信カウンタがカウントすることができる。このように、マルチノードにわたり分散して並行に処理されながらも、適宜ノード間で送受信がされながら、調和が図られている。
図3は、従来技術における非同期送信を使った場合のノード間(1のノードと他のノードとの間)でデータの交換を行うSMP(Shared Memory Multi−thread/Multi−core Processors)プログラムの同期の方法の例を示す模式図である。
この図が示すように、1のノード内においては、そのノード内に用意されたマルチスレッドの各々にわたって複数のプロシージャが並行なスケジューリングとして割り当てられる。マルチスレッドを構成する各スレッドに分けて処理を並行に処理して、それらの処理結果のデータをまとめる。スレッド自体がそこにスケジューリングされているプロシージャを処理する主体、送受信する主体になり得る。
ここでは、マルチスレッド(Multi−thread)として4つのスレッドであり、4つのMulti−core Processorsである、という例をもって説明する。しかし、ハードウエアとして複数のCPUの数が4つであるからといって、マルチスレッドの数が同じ4つであるとは限らない。ハードウエアとソフトウエアとを組み合わせて利用した(仮想的な)CPU利用の単位として、任意の所定の数のスレッドから構成されるマルチスレッドに設定することができることが知られている。
この図の例では、ベースとなるCPU動作クロック等のタイムステップにペースをあわせて、左から右へと処理が進んでいく。スレッド(Thread)1〜4において、プロシージャ(Procedure)1が、並行なスケジューリングとして割り当てられて処理が進行している状況にある。スレッド1〜4においてスケジューリングされているプロシージャ1は、データを作成する処理を行っているが、処理結果であるデータ(data)1〜4は、送信バッファ(send buffer)内におけるスレッドIDに対応する位置に書き込み保存される。
従来技術においては、すべてのスレッド1〜4が送信バッファにデータを書き込んだことを保証するために、すべてのマルチスレッドを構成するすべてのスレッド1〜4との間でのスレッド・バリア(thread barrier)を張るというバリア同期を行う。そして、この例では、スレッド1が、1のノードのスレッド1〜4を代表して、非同期通信を開始している。送信(Send)の命令によって、送信バッファに保存されているマルチスレッドにわたる処理結果のデータの全てを、他のノードに送信する。送信(Send)の命令を、スレッド1が自ら実行するにしても、その命令に通信コントローラを従わせるにしても、送信の処理のためには一定の時間がかかってしまう。
また、従来技術においては、他のノードにおける処理結果であるデータ(data)1〜4が、他のノードから受信され、その受信が完了したことを各スレッド1〜4が知るために、スレッド1〜4との間でのスレッド・バリア(thread barrier)を張るというバリア同期を行っている。この図の例では、スレッド1がプロシージャ2の処理を最も早く終わっているので、データが受信されているかどうかの問い合わせを、スレッド1が実行している。この間、スレッド1は処理を待たなければならず、その待ち時間が受信待ち(Wait for Receive)として示されている。
このため、たとえ、他のスレッド2〜4がプロシージャ2の処理をし終わっていても、スレッド1においてはプロシージャ2の処理が終了していないという状況が起り得る。この図の例では、スレッド1が送信の処理を行う時間と、スレッド1が受信待ちをする時間とを足した分の時間だけ、他のスレッド2〜4には、アイドリングの状態(Threads are idling)が生まれてしまい、並行処理を有効に活用できていない状況が生まれてしまっている。
また、この1のノードが他のノードから処理結果のデータを受信するという側の立場になる場合がある。例えば、プロシージャ3が他のノードから受信したデータを利用して計算を行うプロシージャである場合、すなわち、受信データに依存するプロシージャである場合には、必要となるデータ(の部分)が受信バッファ(receive buffer)に現れるまで待つ必要がある。このような依存(依存する)・非依存(依存しない)は、典型的には、次に説明するような計算の場合に現れる。
図4は、有限差分法(Finite Difference Method)において、スレッド間同期を必要とする処理と、スレッド間同期を必要としない処理とを示す、計算例を示す図である。ここでは、X方向とY方向とに2次元に離散化された格子のうち、1つのノードに4(X方向)×4(Y方向)の格子を割り当て、隣接する格子点間で差分を取る分散処理並列化を行うものとすると、図4(A)のように、ノード1とノード2という隣接する2つのノード同士で、グレーの格子に相当する境界部分のデータを交換して利用しあう必要がある。グレー格子に相当する境界部分のデータが相互に依存関係にあるということになる。
図4(B)のように、X方向の処理とY方向の処理とを進めるものとする。Y方向にデータを分割してSMP並列化を行うものとする。図3にあてはめて考えると、このときのX方向の処理は、図3におけるプロシージャ1が、境界データを送信バッファにコピーする処理に相当する。図3におけるプロシ−ジャ2が、白い格子点において差分をとる処理に相当する。図3におけるプロシージャ3が、隣のノード(他のノード)からのデータを受信する処理に相当し、他のノードから受信したデータを利用して計算を行うプロシージャとして、隣接する2つのノード同士での境界データの差分をとる処理に相当する。
このようにX方向で差分をとる処理は、スレッド1〜4の間でデータ独立であるので同期を取る必要はない。一方で、Y方向で差分をとる処理は、スレッド1〜4の間でバリア同期をとらないと、同じ時間ステップのデータで正しく差分がとれている保証ができないことになる。この点、従来技術の手法では、通信のたびにバリア同期を行っているため、特に意識しなくても正しいタイムステップになっていたものである。
特許文献1は、並列処理でスレッド間のバリア同期を行う従来技術の一例である。この他にも、バリア同期を行う技術は数多い。
その他、従来技術には、スレッド・レベルにおける投機的(Speculative)な同期処理を行っている技術がある。しかし、マルチスレッドを構成する複数のスレッド全体でのスレッド間バリア同期に相当するものを完全に取り除くことを実現している技術は見当たらない。
特許第4448784号公報
本発明の目的は、マルチノードにわたり分散して並行に処理されている複数のプロシージャを調和させるにあたり、マルチスレッドを構成するスレッド間でのバリア同期を完全に取り除き、複数のノード間のデータの送受信(非同期通信)を実現することにある。
非同期送信前のバリア同期を取り除き、送信カウンタ (send counter) を導入し、カウンタの値が所定の値に達したときに、送信カウンタが準備完了とする。
受信待ち後のバリア同期を取り除き、マルチスレッドを構成するそれぞれのスレッドが自分の必要なデータが受信されるまで待つようにする。
マルチスレッドを構成するスレッドの間で依存性のある処理を行う場合に、整合性をとるためにフェーズ・カウンタ (phase counter) を導入し、依存しあうスレッド間でタイムステップを保証する。
あるスレッドにおいて非同期送信を開始させる処理のオーバーヘッドを、他のスレッドの処理時間の後ろに隠すことができる。
受信待ちの処理時間を、各スレッドに必要な最小限の時間に短縮することができる。
スレッド間で依存性のあるデータを参照する場合には、スレッドの全体でスレッド間バリア同期を取ることなく、必要な最小限のオーバーヘッドで済むようにすることができる。
図1は、各ノード間がインターコネクトされたマルチノードシステムを示す模式図である。 図2は、CPUからの送信命令に従って、マルチノードにわたって1のノードから他のノードへデータの非同期送信を行うことを示す模式図である。 図3は、従来技術における非同期送信を使った場合のノード間(1のノードと他のノードとの間)でデータの交換を行うSMP(Shared Memory Multi−thread/Multi−core Processors)プログラムの同期の方法の例を示す模式図である。 図4は、有限差分法(Finite Difference Method)において、スレッド間同期を必要とする処理と、スレッド間同期を必要としない処理とを示す、計算例を示す図である。 図5は、本発明を実行するための、各ノード間がインターコネクトされたマルチノードシステムであって、メモリ内に用意されている記憶領域の構成を示す模式図である。 図6は、本発明の非同期送信を使った場合のノード間(1のノードと他のノードとの間)でデータの交換を行うSMPプログラムの同期の方法を示す模式図である。 図7は、スレッド間依存データを処理するべく、依存しあうスレッド間でタイムステップを保証するための、フェーズ・カウンタを利用した同期の方法を示す模式図である。 図8は、データを送信する処理を示すフローチャートである。 図9は、受信データを待つ処理を示すフローチャートである。 図10は、フェーズ・カウンタを利用する処理を示すフローチャートである。 図11は、本発明の効果を示す実験例をまとめたものである。
図5は、本発明を実行するための、各ノード間がインターコネクトされたマルチノードシステムであって、メモリ内に用意されている記憶領域の構成を示す模式図である。
メモリ内には、送信カウンタ、受信カウンタ、フェーズ・カウンタ、ローカル変数を保存する領域、送信バッファ、受信バッファという構成が用意されている。本発明の全てにおいて、これら構成の全てが必要なわけではない。特許請求の範囲の各請求項における独立項、従属項、において、必要に応じて個別に記載されている。
図6は、本発明の非同期送信を使った場合のノード間(1のノードと他のノードとの間)でデータの交換を行うSMPプログラムの同期の方法を示す模式図である。図3において説明した従来技術の内容から、スレッド・バリア(thread barrier)を張るバリア同期を取り除いたものであるため、図6の特徴を理解するにあたっては、図3と比較すると理解し易い。
処理結果であるデータ(data)1〜4が、送信バッファ(send buffer)内におけるスレッドIDに対応する位置に書き込み保存されることは、図3と同様である。1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、1のプロシージャの処理結果のデータを、その1のスレッドからメモリ内に用意されている送信バッファ (send buffer) 内におけるスレッドIDに対応する位置に書き込み、保存する。これらの構成は図3と同様であるので、煩雑さを回避するために、ここでは図解を省略する。
しかし、本発明の方法では、1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、その1のスレッドからメモリ内に用意されている送信カウンタ (send counter) に完了の通知をする、という構成を採用している。
また、本発明の方法では、さらに、各スレッドからの完了の通知によって、送信カウンタにおけるカウントの数を増加する、という構成を採用している。このような単純なカウンタを採用しなくても、マルチスレッドを構成するスレッドの全てのプロシージャが完了したことを把握できるようになっていればよく、当業者であれば、本発明の技術的思想の範囲内において、様々な変更を採用することができるであろう。
送信(Send)の命令によって、送信バッファに保存されているマルチスレッドにわたる処理結果のデータの全てを、他のノードに送信することは、図3と同様であるので、ここでは図解を省略する。
しかし、本発明の方法では、マルチスレッドを構成しているスレッドのうちでも最後に完了の通知を行ったスレッドが、次のプロシージャを処理する前に、送信バッファに保存されているマルチスレッドにわたる処理結果のデータの全てを、他のノードに送信する、という構成を採用している。
本発明の方法では、1のプロシージャにおいて、処理結果のデータを送信バッファに書き込みを完了し、かつ、送信カウンタに完了の通知をしたら、(全てのマルチスレッドとの間での従来技術のようなバリア同期を待つことなく、または、送信バッファにマルチスレッドにわたる処理結果のデータの全てが書き込まれるという状態に至る前に)スケジューリングされている次のプロシージャが受信データに依存しない(非依存)プロシージャの場合には、そのプロシージャの処理を開始することができる。
この例では、スレッド1〜3は、プロシージャ1の処理について、処理結果のデータを送信バッファに書き込みを完了し、かつ、送信カウンタに完了の通知をしたら、直ちに、次の処理であるプロシージャ2の処理を開始することができる。
ただし、次のプロシージャが受信データに依存するプロシージャである場合には、他のノードから送信されてくる受信データを待つ(Wait)必要がある。それぞれのスレッド1〜4が自分に必要なデータが受信バッファ (receive buffer) に現れるまで待つ(次の処理を開始しない)ことになる。この際、受信カウンタ(receive counter)を利用して、受信バッファに受信したバイト数を知ることができるので、自分に必要なデータが現れているかどうかを把握することができる。
この例では、各スレッドにおいてプロシージャ3の処理が開始する箇所が、スレッド1〜4にわたって右斜め下に向かって階段状になっているが、スレッド1が最初に、スレッド2がその次に、スレッド3がその次に、スレッド4が最後に、受信バッファにおいて順にデータを受信するように設計されている一例を示しているにすぎない。スレッド1〜4が受信する方式は、スレッド1〜4がばらばらに分けて受信できるように設計にして、自分に必要なデータがいち早く現れるように設計してもよく、当業者であれば様々な方式を設計して採用することができる。
スレッド2におけるプロシージャ2が終了する箇所と、スレッド1におけるプロシージャ4が開始する箇所とは点線の矢印で結ばれている。さらには、スレッド4におけるプロシージャ2が終了する箇所と、スレッド1におけるプロシージャ4が開始する箇所とも点線の矢印で結ばれている。これらの点線は、スレッド間依存関係のあることを示すものである。
すなわち、この例では、プロシージャ4はスレッド間依存のデータであって、スレッド1におけるプロシージャ4は、スレッド2におけるプロシージャ2の結果を使用するため、続いて図7において説明するところの、フェーズ・カウンタ(phase counter)を利用して同期をとる。
図7は、スレッド間依存データを処理するべく、依存しあうスレッド間でタイムステップを保証するための、フェーズ・カウンタを利用した同期の方法を示す模式図である。ここでも「同期」という表現を用いるが、実際には、「同期」というよりも、確実に正しいデータが参照できるように整合性を保証するためのものである。このために、待ち時間やオーバーヘッドはほとんど発生しない。
これは、図4の(B)において既に説明したところの、有限差分法の例におけるY方向で差分をとる処理(隣接する上と隣接する下とを参照するような関係に相当する)に相当しており、スレッド1〜4の間で、同じ時間ステップのデータで正しく差分がとれている保証をするものである。
1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、まず、以降の時間の進行において、スレッド間でデータ依存のある処理で使うデータをメモリに保存する。次に、メモリ内に用意されているところの、その1のスレッドのためのフェーズ・カウンタ (phase counter)におけるカウントの数を増加する。ここでは、まずスレッド1がプロシージャ2を終了して、カウントの数を増加(+1)する。次に、少し遅れてからスレッド2が、さらに遅れてからスレッド4がプロシージャ2を終了して、それぞれでカウントの数を増加(+1)する。
スレッド1では、増加したカウントの数を、プロシージャ2の終了時点におけるカウントの数として、各スレッドに対応して用意されているローカル変数を保存する領域に書き込み保存する。
あるスレッドにおいて、ローカル変数を保存する領域に書き込まれている値と、そのあるスレッドに依存するスレッドのフェーズ・カウンタの値とを比較する。比較の結果、フェーズ・カウンタの値と同じになるか、または、フェーズ・カウンタの値の方が大きくなるまで待つ(そのあるスレッドにおいてスケジューリングされている次の処理を開始しない)。
図8は、データを送信する処理を示すフローチャートである。今までの処理をここにまとめておく。100において、データを送信する処理に入る。110において、送信カウンタの値を増加する。120において、送信カウンタの値がマルチスレッドを構成するスレッドの所定の数に達したかどうかを判断する。もし、所定の数に達していた場合には、130において、送信命令を発して、送信バッファに保存されているデータを送信する。150において、次のプロシージャへ進む。
図9は、受信データを待つ処理を示すフローチャートである。210において、受信データを待つ処理を開始する。220において受信カウンタにおいて必要となるデータの部分が現れたかどうかを判断する。もし現れた場合には、230において、次のプロシージャへ進む。
図10は、フェーズ・カウンタを利用する処理を示すフローチャートである。310において、フェーズ・カウンタを利用する処理を開始する。320において、スレッド間依存プロシージャの処理を行う。330において、このスレッドのフェーズ・カウンタの値を増加する。340において、フェーズ・カウンタの値をtとしてローカル変数を保存する領域に書き込む。350において、スレッド間非依存プロシージャの処理を行う。360において、ある依存スレッドの数にわたってループを繰り返すことを始めるが、370において、依存するスレッドについてのフェーズ・カウンタの値i≧tであるかどうかを判断し、そうである場合は、380において次の依存スレッドについて、360〜380のループを繰り返す。390において、次のプロシージャへ進む。
図11は、本発明の効果を示す実験例をまとめたものである。条件としては、格子(lattice)QCDシミュレーションにおける反復計算の例(BiCG Stab Solver)であり、4次元格子としてXYZ方向を分散メモリ並列化して、T方向をSMP並列化している。並列計算機は、Blue Gene/P(IBM Corporationの商標)の512ノードを使用した。XYZ方向に境界データを交換して、T方向の差分をとる場合にスレッド間のデータ依存性があるものである。バリア同期のある従来技術に比較して、本発明の手法を用いると、処理時間について、30.6%、20.1%という改善が図られている。

Claims (7)

  1. 1のノードにおいて複数のプロシージャを並行に処理しながら、かつ、その処理結果のデータを1のノードから他のノードへ送信しながら、マルチノードにわたり分散して並行に処理されている複数のプロシージャと調和させる方法であって、
    各ノードは、単数または複数のCPUと、単数または複数のCPUによって共有されるメモリと、他のノードとの間をインターコネクトする通信コントローラとを有していて、単数または複数のCPUまたは通信コントローラが、各ノード内に用意された所定の数のスレッドから構成されるマルチスレッドの各々にわたって複数のプロシージャを並行なスケジューリングとして割り当てるものであって、前記方法は、
    1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、1のプロシージャの処理結果のデータを、その1のスレッドからメモリ内に用意されている送信バッファ (send buffer) 内におけるスレッドIDに対応する位置に書き込み、保存するステップと、
    1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、その1のスレッドからメモリ内に用意されている送信カウンタ (send counter) に完了の通知をするステップと、
    完了の通知のたびに、送信カウンタにおけるカウントの数を増加するステップと、
    送信カウンタにおけるカウントの数が、マルチスレッドを構成するスレッドの所定の数に達した場合には、マルチスレッドを構成しているスレッドのうちでも最後に完了の通知を行った1つのスレッドが、次のプロシージャを処理する前に、送信バッファに保存されているマルチスレッドにわたる処理結果のデータの全てを、他のノードに送信するステップとを有する、
    方法。
  2. 1のプロシージャにおいて、処理結果のデータを送信バッファに書き込みを完了し、かつ、送信カウンタに完了の通知をしたら、(全てのマルチスレッドとの間でのバリア同期を待つことなく、または、送信バッファにマルチスレッドにわたる処理結果のデータの全て書き込まれる前に)スケジューリングされている次のプロシージャが受信データに依存しない(非依存)プロシージャである場合には、次のプロシージャの処理を開始するステップとを有する、
    請求項1に記載の方法。
  3. 次のプロシージャが受信データに依存するプロシージャである場合には、当該受信データに依存するプロシージャのために必要となるデータの部分が受信バッファ (receive buffer) に現れるまで待つ(次の処理を開始しない)、
    請求項1に記載の方法。
  4. 1のプロシージャにおいて、処理結果のデータを送信バッファに書き込みを完了し、かつ、フェーズ・カウンタに完了の通知をしたら、(全てのマルチスレッドとの間でのバリア同期を待つことなく、または、送信バッファにマルチスレッドにわたる処理結果のデータの全て書き込まれる前に)次のプロシージャが受信データに依存しない(非依存)プロシージャである場合には、次のプロシージャの処理を開始するステップとを有する、
    請求項1に記載の方法。
  5. 1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、メモリ内に用意されているところのその1のスレッドのためのフェーズ・カウンタ (phase counter)におけるカウントの数を増加するステップと、
    増加したカウントの数を、1のプロシージャの完了時点におけるカウントの数として、各スレッドに対応して用意されているところのローカル変数を保存する領域に書き込み保存するステップと、
    あるスレッドにおいてローカル変数を保存する領域に書き込まれている値と、そのあるスレッドに依存するスレッドのフェーズ・カウンタの値とを比較するステップと、
    比較の結果、フェーズ・カウンタの値と同じになるか、または、フェーズ・カウンタの値の方が大きくなるまで待つ、(そのあるスレッドにおいてスケジューリングされている次の処理を開始しない)、
    請求項1に記載の方法。
  6. 1のノードにおいて複数のプロシージャを並行に処理しながら、かつ、その処理結果のデータを1のノードから他のノードへ送信しながら、マルチノードにわたり分散して並行に処理されている複数のプロシージャと調和させるシステムであって、
    各ノードは、単数または複数のCPUと、単数または複数のCPUによって共有されるメモリと、他のノードとの間をインターコネクトする通信コントローラとを有していて、単数または複数のCPUまたは通信コントローラが、各ノード内に用意された所定の数のスレッドから構成されるマルチスレッドの各々にわたって複数のプロシージャを並行なスケジューリングとして割り当てるものであって、前記システムは、
    1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、1のプロシージャの処理結果のデータを、その1のスレッドからメモリ内に用意されている送信バッファ (send buffer) 内におけるスレッドIDに対応する位置に書き込み、保存し、
    1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、その1のスレッドからメモリ内に用意されている送信カウンタ (send counter) に完了の通知をし、
    完了の通知のたびに、送信カウンタにおけるカウントの数を増加し、
    送信カウンタにおけるカウントの数が、マルチスレッドを構成するスレッドの所定の数に達した場合には、マルチスレッドを構成しているスレッドのうちでも最後に完了の通知を行った1つのスレッドが、次のプロシージャを処理する前に、送信バッファに保存されているマルチスレッドにわたる処理結果のデータの全てを、他のノードに送信する、
    システム。
  7. 1のノードにおいて複数のプロシージャを並行に処理しながら、かつ、その処理結果のデータを1のノードから他のノードへ送信しながら、マルチノードにわたり分散して並行に処理されている複数のプロシージャと調和させる処理を、コンピュータに実行させるためのプログラムであって、
    各ノードは、単数または複数のCPUと、単数または複数のCPUによって共有されるメモリと、他のノードとの間をインターコネクトする通信コントローラとを有していて、単数または複数のCPUまたは通信コントローラが、各ノード内に用意された所定の数のスレッドから構成されるマルチスレッドの各々にわたって複数のプロシージャを並行なスケジューリングとして割り当てるものであって、前記プログラムは、
    1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、1のプロシージャの処理結果のデータを、その1のスレッドからメモリ内に用意されている送信バッファ (send buffer) 内におけるスレッドIDに対応する位置に書き込み、保存するステップと、
    1のスレッドにおいてスケジューリングされている1のプロシージャが完了した場合には、その1のスレッドからメモリ内に用意されている送信カウンタ (send counter) に完了の通知をするステップと、
    完了の通知のたびに、送信カウンタにおけるカウントの数を増加するステップと、
    送信カウンタにおけるカウントの数が、マルチスレッドを構成するスレッドの所定の数に達した場合には、マルチスレッドを構成しているスレッドのうちでも最後に完了の通知を行った1つのスレッドが、次のプロシージャを処理する前に、送信バッファに保存されているマルチスレッドにわたる処理結果のデータの全てを、他のノードに送信するステップとを、コンピュータに実行させる、
    プログラム。
JP2010190290A 2010-08-27 2010-08-27 マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理 Expired - Fee Related JP5623187B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010190290A JP5623187B2 (ja) 2010-08-27 2010-08-27 マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010190290A JP5623187B2 (ja) 2010-08-27 2010-08-27 マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理

Publications (2)

Publication Number Publication Date
JP2012048515A true JP2012048515A (ja) 2012-03-08
JP5623187B2 JP5623187B2 (ja) 2014-11-12

Family

ID=45903299

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010190290A Expired - Fee Related JP5623187B2 (ja) 2010-08-27 2010-08-27 マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理

Country Status (1)

Country Link
JP (1) JP5623187B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017162266A (ja) * 2016-03-10 2017-09-14 日本電気株式会社 並列処理装置、並列処理方法及びプログラム
CN115826885A (zh) * 2023-02-21 2023-03-21 浪潮电子信息产业股份有限公司 一种数据迁移方法、装置及电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH052568A (ja) * 1990-09-14 1993-01-08 Hitachi Ltd プロセツサ間の同期処理装置
JPH05173990A (ja) * 1991-12-24 1993-07-13 Mitsubishi Electric Corp データ処理システム
JP2001051966A (ja) * 1999-08-16 2001-02-23 Nec Corp ノード装置、並列処理システム、並列処理方法、および、並列処理プログラムを記録した記録媒体
JP2002163121A (ja) * 2000-11-22 2002-06-07 Toshiba Corp 仮想マルチスレッドプロセッサ及びスレッド実行方法
JP2005208756A (ja) * 2004-01-20 2005-08-04 Sony Corp 分散処理システム及び方法、分散処理プログラム、データ処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH052568A (ja) * 1990-09-14 1993-01-08 Hitachi Ltd プロセツサ間の同期処理装置
JPH05173990A (ja) * 1991-12-24 1993-07-13 Mitsubishi Electric Corp データ処理システム
JP2001051966A (ja) * 1999-08-16 2001-02-23 Nec Corp ノード装置、並列処理システム、並列処理方法、および、並列処理プログラムを記録した記録媒体
JP2002163121A (ja) * 2000-11-22 2002-06-07 Toshiba Corp 仮想マルチスレッドプロセッサ及びスレッド実行方法
JP2005208756A (ja) * 2004-01-20 2005-08-04 Sony Corp 分散処理システム及び方法、分散処理プログラム、データ処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017162266A (ja) * 2016-03-10 2017-09-14 日本電気株式会社 並列処理装置、並列処理方法及びプログラム
CN115826885A (zh) * 2023-02-21 2023-03-21 浪潮电子信息产业股份有限公司 一种数据迁移方法、装置及电子设备和存储介质

Also Published As

Publication number Publication date
JP5623187B2 (ja) 2014-11-12

Similar Documents

Publication Publication Date Title
Tan et al. Coupling task progress for mapreduce resource-aware scheduling
KR101332840B1 (ko) 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법
US10706009B2 (en) Techniques to parallelize CPU and IO work of log writes
US8209690B2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
JP2882475B2 (ja) スレッド実行方法
US20140181831A1 (en) DEVICE AND METHOD FOR OPTIMIZATION OF DATA PROCESSING IN A MapReduce FRAMEWORK
KR20170137061A (ko) 대규모 병렬 실행 가능 객체를 생성하는 방법, 디바이스 및 시스템
WO2013185571A1 (zh) 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
US20130231912A1 (en) Method, system, and scheduler for simulating multiple processors in parallel
WO2013127132A1 (zh) 用于分布式共享存储的任务同步方法、装置及系统
CN105094840A (zh) 一种基于缓存一致性原理的原子操作实现方法及装置
WO2015024432A1 (zh) 一种指令调度方法及装置
Fotohi et al. A cluster based job scheduling algorithm for grid computing
JP5623187B2 (ja) マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理
US20180335957A1 (en) Lock-free datapath design for efficient parallel processing storage array implementation
JP7122299B2 (ja) 処理タスクを実行するための方法、装置、デバイス、および記憶媒体
Chu et al. Dynamic kernel fusion for bulk non-contiguous data transfer on GPU clusters
WO2016008317A1 (zh) 数据处理方法和中心节点
CN110955461B (zh) 计算任务的处理方法、装置、系统、服务器和存储介质
Chakraborty et al. Non-blocking PMI extensions for fast MPI startup
Pumma et al. Alleviating load imbalance in data processing for large-scale deep learning
KR101332839B1 (ko) 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
TWI442323B (zh) 用於多核心/眾核心的工作排程與分配管理架構及其方法
JP2010020683A (ja) スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130501

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140603

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140812

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140924

R150 Certificate of patent or registration of utility model

Ref document number: 5623187

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees