JP6930139B2 - 並列プロセス実行方法 - Google Patents

並列プロセス実行方法 Download PDF

Info

Publication number
JP6930139B2
JP6930139B2 JP2017039936A JP2017039936A JP6930139B2 JP 6930139 B2 JP6930139 B2 JP 6930139B2 JP 2017039936 A JP2017039936 A JP 2017039936A JP 2017039936 A JP2017039936 A JP 2017039936A JP 6930139 B2 JP6930139 B2 JP 6930139B2
Authority
JP
Japan
Prior art keywords
communication
processing
parallel
processes
state
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
JP2017039936A
Other languages
English (en)
Other versions
JP2018147126A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2017039936A priority Critical patent/JP6930139B2/ja
Publication of JP2018147126A publication Critical patent/JP2018147126A/ja
Application granted granted Critical
Publication of JP6930139B2 publication Critical patent/JP6930139B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明は、並列プロセス実行方法、情報処理装置、およびプログラムに関する。
分散並列プログラムの実行において、非同期データ転送機能を利用し、演算処理と通信処理をオーバーラップさせ、実行性能を改善する手法が知られている。
しかし、演算処理と通信処理をオーバーラップさせるためには、データ転送専用のハードウェアを備える必要がある。また、転送対象となるデータ配置に制約(例えば、特殊なメモリ領域に配置する必要がある、連続領域のみに限定される、など)が存在することもある。そのため、実際にはオーバーラップ動作を実現できないことがある。
そこで、分散並列型プログラムの実行において、プロセス間通信の処理中に発生する通信待合せに着目し、性能改善の手法を講じた先行技術として特許文献1および特許文献2に記載の技術がある。
特許文献1に記載の技術では、全ての計算機に分散されているデータを1つ或いは全ての計算機に集めるGather通信、1つの計算機のデータを分割してそれぞれ他の計算機に分配するScatter通信、それぞれの計算機にあるデータを分割しそれぞれ全ての計算機に分配するAlltoall通信など、全プロセスが参加して行う集団通信を対象として、通信待合せ自体を発生させない様に通信相手を適切に選択(スケジューリング)するようにしている。
また特許文献2に記載の技術では、並列プログラムを構成する複数のプロセスを同時に実行開始し、また同時に実行終了するようにスケジューリングすることにより、データ交換のための同期待ち時間の増加を防止している。
特開平11−110362号公報 特開2003−256221号公報
特許文献1および特許文献2に記載の技術は、特殊なスケジューラ等を使用してプロセス間通信における通信待合せ自体を防止することによって実行性能を改善している。そのため、特殊なスケジューラ等の使用を避けた汎用の情報処理装置では、プロセス間通信における通信待合せが発生し、実行性能が低下する。
本発明の目的は、上述した課題を解決する並列プロセス実行方法、情報処理装置、及びプログラムを提供することにある。
本発明の一形態に係る並列プロセス実行方法は、
並列プログラムを構成する複数のプロセスを、1以上のプロセッサで並列実行する並列プロセス実行方法であって、
それぞれの前記プロセスは、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスを探索し、前記探索した前記他プロセスの仕掛り状態の通信処理を前記他プロセスに代わって実行する。
本発明の他の形態に係る情報処理装置は、
並列プログラムを構成する複数のプロセスを並列実行する1以上のプロセッサを有する情報処理装置であって、
それぞれの前記プロセスは、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスを探索し、前記探索した前記他プロセスの仕掛り状態の通信処理を前記他プロセスに代わって実行するように構成されている。
本発明の他の形態に係るプログラムは、
1以上のプロセッサを有するコンピュータに、
並列プログラムを構成する複数のプロセスを並列実行させるためのプログラムであって、それぞれの前記プロセスは、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスを探索し、前記探索した前記他プロセスの仕掛り状態の通信処理を前記他プロセスに代わって実行する。
本発明は上述した構成を有するため、プロセス間通信における通信待合せが発生した場合であっても、実行性能を改善することができる。
本発明の第1の実施形態に係る情報処理装置のブロック図である。 本発明の第1の実施形態における初期化処理の一例を示すフローチャートである。 本発明の第1の実施形態における通信開始処理の一例を示すフローチャートである。 本発明の第1の実施形態におけるプロセス状態変更処理の一例を示すフローチャートである。 本発明の第1の実施形態における通信完了処理の一例を示すフローチャートである。 本発明の第1の実施形態における他プロセスのデータ転送処理の代理実行の一例を示すフローチャートである。 本発明の第1の実施形態における効果を説明するための模式図である。 本発明の第1の実施形態における他の効果を説明するための模式図である。 本発明の第2の実施形態に係る情報処理装置のブロック図である。
[第1の実施形態]
次に本発明の第1の実施形態について図面を参照して詳細に説明する。
<本実施形態が解決しようとする課題>
分散並列プログラムの実行性能改善のため、非同期通信機能(例えば、MPI(Message Passing Interface)のMPI_IsendやMPI_Irecv等のAPI)を利用し、通信処理と計算処理(演算処理)を同時実行(オーバーラップ)させる手法がある。
通信処理と計算処理をオーバーラップさせるためには、システムの構成要素として、CPUとは独立して動作するデータ転送専用のハードウェア(インタコネクト装置、ネットワークインタフェースアダプタ、DMA機構など)を備え、そのデータ転送専用ハードウェアのみで(CPUによる処理を必要としない)、データ転送処理を行う必要がある。
データ転送専用のハードウェアが利用できない場合は、CPUを用いて通信を行わなければならず、通信処理の実行中は演算処理を同時に行うことができない(オーバーラップ出来ない)。
また、データ転送専用ハードウェアが利用可能であっても、転送対象データが適切に配置されていない等の理由により、データ転送専用ハードウェアのみでデータ転送が完結できない場合は、送信側プロセスと受信側プロセスとの間でハンドシェークを行いながら、通信バッファを利用した通信処理を行わなければならない。この場合も通信処理と演算処理のオーバーラップを実現することができない。
通信と演算のオーバーラップが実現できない場合の対策として、ユーザプログラムの実行と並行して動作し、通信処理のみを行う専用のプロセス、あるいは、スレッドを動作させる方法が考えられる。この方式によれば、ユーザプログラムの演算処理と、通信処理専用プロセスあるいはスレッドの通信処理との同時実行が可能となり、オーバーラップ相当の動作は可能となる。
ただし、それら通信処理専用プロセスあるいはスレッドを動作させるためにはCPU資源を別途割当てなければならず、ユーザプログラムで利用可能なCPU数が減少する。その結果として、ユーザプログラムの演算処理性能が低下し、ついては、プログラム全体の実行性能低下の要因となる。
<本実施形態による解決手段>
分散並列プログラムの実行において、自プロセスの通信処理中に通信待合せが発生し、その通信待合せ時間が一定時間を超えた場合、メモリを共有する他プロセスの状態を参照し、その状態が「演算処理中」かつ「仕掛り状態の通信処理有り」の場合、その仕掛り状態の通信処理を代理実行する。
<本実施形態の構成>
図1は本発明の第1の実施形態に係る情報処理装置のブロック図である。図1を参照すると、分散並列プログラムは複数のプロセス1−1から構成されており、各プロセス1−1はノード間通信経路1−2で接続された複数のノード1−3上に分散配置される。また、各ノード1−3上には複数のプロセス1−1が配置される。ここで、各ノード1−3は、1以上のCPUとメモリとを少なくとも有する計算機である。
各プロセス1−1は、プロセス固有メモリ領域1−4とプロセス間共有メモリ領域1−5とを備える。
プロセス固有メモリ領域1−4は、そのプロセス固有メモリ領域1−4を備えるプロセス1−1のみがアクセス可能なメモリ領域である。プロセス1−1は、他プロセス1−1に備わるプロセス固有メモリ領域1−4へはアクセスすることができない。一方、プロセス間共有メモリ領域1−5は、同一ノード1−3上の複数のプロセス1−1がアクセス可能なメモリ領域である。
プロセス間共有メモリ領域1−5には、通信対象とするユーザデータ1−6と、通信処理で利用する通信制御データ1−7とを配置する。
さらに、通信制御データ1−7には、その通信制御データ1−7を備えるプロセス1−1の状態を保持するプロセス状態変数1−8と、複数のプロセス1−1からの同時アクセスをガードするためのロック変数1−9と、その他の通信制御データとを含む。以下、「通信制御データ1−7」と記載する場合、通信制御データ1−7に含まれる、プロセス状態変数1−8およびロック変数1−9以外のその他の通信制御データを意味するものとする。
<本実施形態の動作>
次に本実施形態に係る情報処理装置の動作を説明する。
図2は初期化処理の動作の一例を示すフローチャートである。以下、図2を参照して、初期化処理の動作を説明する。
図2を参照すると、プロセス1−1は、初期化処理では、通信制御データ1−7の初期化処理2−1を行い、続いて、ロック変数1−9の初期化2−2、および、プロセス状態変数1−8の初期化2−3を行う。
ロック変数−9の初期化2−2では、ロック変数1−9を『ロック解放』にする。また、プロセス状態変数1−8の初期化2−3では、プロセス状態変数1−8を『演算処理中』にする。通信制御データ1−7の初期化処理2−1は、例えば、MPI_IsendやMPI_Irecv等のAPIの初期化に相当する。
例えば、MPI_Irecvには、受信データ数を設定する引数、データ型を設定する引数、送信元を指定する引数、データの識別子を指定する引数、受信状態が設定される引数など幾つかの引数がある。また、例えば、MPI_Isendには、送信データ数を設定する引数、データ型を設定する引数、送信先を指定する引数、データの識別子を指定する引数、現在処理中の要求の種別を示す引数など幾つかの引数がある。APIの初期化では、これらの引数の初期化が行われる。なお、その他の通信制御データの初期化の処理内容については、対象とするシステムにより異なり、また、本発明の内容と独立した処理となるため、それ以上の説明は省略する。
初期化処理の最後のステップでは、全プロセス1−1のバリア同期処理2−4を行う。このバリア同期処理2−4の目的は、処理が先行するプロセス1−1が、他プロセス1−1の未初期化のロック変数1−9やプロセス状態変数1−8を参照するのを防止するためである。バリア同期の成立後、それぞれのプロセス1−1は通信開始処理を実行する。
図3は通信開始処理の動作の一例を示すフローチャートである。以下、図3を参照して、通信開始処理の動作を説明する。
図3を参照すると、プロセス1−1は、通信開始処理では、まず初めに自プロセス1−1の状態を『通信処理中』に変更する(3−1)。この操作により、自プロセス1−1が通信処理中に、他プロセス1−1が通信処理の代理実行を開始することを防止する。
次に、プロセス1−1は、自プロセス1−1の通信制御データ1−7を参照して、実際のデータ転送処理3−2を実施する(3−2)。このデータ転送処理3−2は、例えば、MPI_IsendやMPI_Irecv等のAPIを実行する処理に相当する。データ転送処理の内容は、対象とするシステムにより異なり、また、本案の内容とは独立した処理となるため、それ以上の説明は省略する。
プロセス1−1は、データ転送処理3−2から戻った後、当該データ転送が完了か未完了かを判断する(3−3)。ここで、データ転送が未完了の場合、自プロセスの状態に『仕掛り通信処理有り』を追加する(3−4)。
プロセス1−1は、通信処理の最後では、自プロセスの情報を『演算処理中』に戻す(3−5)。
図4はプロセス状態の変更動作の一例を示すフローチャートである。以下、図4を参照して、プロセス状態の変更動作を説明する。
プロセス1−1は、プロセス状態を変更する際は、他プロセス1−1の処理との競合を防止するため、自プロセス1−1のロック変数1−9を用いて、ロックを取得し(4−1−1、および、4−2−1)、ロック区間でプロセス状態変数1−8の値を『通信処理中』に変更(4−1−2)、あるいは、『演算処理中』に変更する(4−2−2)。そして、プロセス1−1は、プロセス状態変更後にロックを解放する(4−1−3、および、4−2−3)。
図5は通信完了処理の動作の一例を示すフローチャートである。以下、図5を参照して、通信完了処理の動作を説明する。通信完了処理では、先の通信開始処理で開始した通信処理を完了させる。
図5を参照すると、初めに、プロセス1−1は、自プロセス1−1の状態を『通信処理中』に設定し(5−1)、他プロセス1−1が同時に代理実行を行うのを防止する。
次にプロセス1−1は、通信制御データ1−7を参照してデータ転送処理がすべて完了しているか否か(仕掛り通信があるか否か)を判定し(5−2)、完了している場合は、自プロセス1−1の状態を『演算処理中』に戻し(5−3)、処理を終える。
もし、データ転送処理が未完了の場合は、プロセス1−1は、通信制御データ1−7を参照して、仕掛り状態のデータ転送処理を試みる。
仕掛状態のデータ転送処理では、プロセス1−1は、後続処理で通信待合せ時間を判定するため、現在時刻を参照し保存する(5−4)。
次に、プロセス1−1は、データ転送処理の継続が可能かどうかを判定する(5−5)。これは、通信相手プロセス1−1との間でハンドシェークを行いながらデータ転送処理を行う際、通信相手プロセスからの応答(ACK)が返信されていない場合は、データ転送処理を保留する必要があるためである。
データ転送処理の継続が可能な場合は、プロセス1−1は、通信制御データ1−7を参照して、自プロセス1−1のデータ転送処理を自ら行う(5−6)。このデータ転送処理中で、データ転送がすべて完了した場合、プロセス1−1は、自プロセス1−1のプロセス状態変数1−8から『仕掛り通信あり』の状態を削除する。その後、プロセス1−1は、データ転送処理がすべて完了したか否か、すなわち、仕掛り通信があるか否かを再度判断する(5−2)。
プロセス1−1は、データ転送処理が継続可能か否かの判定(5−5)において、データ転送処理の継続が不可能な場合、通信待合せとなる。
プロセス1−1は、通信待合せ処理においては、通信待合せ開始からの経過時間を判定し(5−7)、その経過時間が一定時間を超過した場合、他プロセスのデータ転送処理を代理実行する処理5−9に移行する。その際、自プロセス1−1のプロセス状態情報1−8を『通信処理中』から『演算処理中』に一時的に戻す(5−8)。この処理により、プロセス1−1が他プロセス1−1のデータ転送処理を代理実行している間、自プロセス1−1のデータ転送処理が継続可能となった場合、さらに別プロセス1−1が、自プロセス1−1のデータ転送処理を代理実行することが可能となる。
プロセス1−1は、データ転送処理の代理実行の処理5−9から戻った後、通信完了処理の先頭に戻り、自プロセス1−1の状態を『通信処理中』に戻し(5−1)、自プロセスのデータ転送処理が完了しているか否かの判定処理から再開する。
図6はプロセス1−1が他プロセスのデータ転送処理を代行実行する動作の一例を示すフローチャートである。以下、図6を参照して、プロセス1−1が他プロセスのデータ転送処理を代理実行する動作を説明する。
プロセス1−1は、データ転送処理の代理実行処理では、代理実行可能な仕掛り通信を持つプロセスを検出するため、自プロセス1−1と同一ノード1−3内の他プロセス1−1について、1プロセスずつロック変数1−9によるロックを取得しながらプロセス状態変数1−8を参照する(6−1、6−2、6−5)。
プロセス1−1は、他プロセス1−1のプロセス状態変数1−8を参照(6−2)した結果、プロセス状態が『演算処理中』かつ『仕掛り通信処理有り』となっている仕掛り通信を持つ他プロセス1−1を検出した場合、ロック区間中に、その通信処理を代理実行する(6−3)。この際、プロセス1−1は、他プロセス1−1の通信制御データ1−7を参照して、他プロセス1−1の仕掛り状態のデータ転送処理を遂行する。その後、プロセス1−1は、ロック変数1−9によるロックを解放し(6−4)、図6の処理を終了する。
<本実施形態の効果>
図7は、2プロセス(プロセスAとプロセスB)が演算と通信を行った場合の本実施形態の効果を図示したものである。
図7の左図は、従来の動作である。演算処理時間の違いから、プロセスBがプロセスAに先行して通信完了処理を開始するが、通信相手プロセスAが演算処理中であるため、データ転送処理を継続できず、通信待合せ状態となる。プロセスBが通信処理を行えるのは、プロセスAが演算処理を終え、通信完了処理を開始したタイミングとなる。その結果、両プロセスとも、演算処理と通信処理が同時に行われている(オーバーラップしている)区間は存在しない。
図7の右図は、本実施形態の動作である。プロセスBが先行して通信完了処理を開始し、通信待合せとなる状況は、図7の左図の従来の動作と同様である。しかし、図7の右図では、プロセスBは通信待合せ処理中にプロセスAの通信処理を代理実行することができる。その結果、プロセスAの観点では、演算処理と通信処理がオーバーラップしていることになり、演算処理に続く完了確認の段階では、すでにデータ転送処理が完了した状態であり、実行時間が短縮(改善)されている。
図8は、2プロセス(プロセスAとプロセスB)が演算と通信を行った場合の本実施形態の別の効果を図示したものである。図8の左図は、図7の左図と同一の状態を示す。図8の右図は、プロセスAとプロセスBとの間で通信を行った場合の本実施形態の効果である。
図8の右図を参照すると、図7の右図の場合と同様に、先に完了確認を開始したプロセスBは、プロセスAの通信処理を代理実行する。この時、プロセスAとプロセスBが互いに通信相手である場合、プロセスAの通信処理を代理実行することにより、結果として、自プロセス(プロセスB)の通信処理も同時に行っていることになる。したがって、このケースでは、プロセスAとプロセスBの両プロセスで実行時間を短縮(改善)することができる。
以上の様に、従来は通信処理と演算処理をオーバーラップさせることが出来なかったケースについても、本実施形態により、分散並列プログラムの実行性能改善が可能となる。
また、通信処理と計算処理のオーバーラップを実現するための通信専用プロセスや専用スレッドを実行する必要が無いため、ユーザプログラムの実行に割当てるCPU数は減少せず、ユーザプログラムの演算性能は低下しない。
さらに、自プロセスの通信待合せ処理中に他プロセスの通信処理を代理実行するため、他プロセスの状態判断や代理実行の処理は、実行性能低下の要因とはならない。
[第2の実施形態]
図9を参照すると、本発明の第2の実施形態に係る情報処理装置9−1は、並列プログラムを構成する複数のプロセス9−3を並列実行する1以上のプロセッサ9−2を有している。また、それぞれのプロセス9−3は、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセス9−3であってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセス9−3を探索するように構成されている。さらに、それぞれのプロセス9−3は、上記探索した他プロセス9−3の仕掛り状態の通信処理を他プロセス9−3に代わって実行するように構成されている。
このように構成された本実施形態に係る情報処理装置9−1は、以下のように動作する。即ち、プロセッサ9−2は、並列プログラムを構成する複数のプロセス9−3を並列実行する。その際、それぞれのプロセス9−3は、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセス9−3であってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセス9−3を探索し、上記探索した他プロセス9−3の仕掛り状態の通信処理を他プロセス9−3に代わって実行する。
このように本実施形態によれば、プロセス間通信における通信待合せが発生した場合であっても、実行性能を改善することができる。その理由は、それぞれのプロセス9−3は、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセス9−3であってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセス9−3を探索し、上記探索した他プロセス9−3の仕掛り状態の通信処理を他プロセス9−3に代わって実行するためである。
本発明は、分散並列プログラムの実行において、非同期データ転送を利用して演算処理と通信処理とをオーバーラップさせて性能を改善するために利用できる。
1−1…プロセス
1−2…ノード間通信経路
1−3…ノード
1−4…プロセス固有メモリ領域
1−5…プロセス間共有メモリ領域
1−6…ユーザデータ
1−7…通信制御データ
1−8…プロセス状態変数
1−9…ロック変数
9−1…情報処理装置
9−2…プロセッサ
9−3…プロセス

Claims (8)

  1. 並列プログラムを構成する複数のプロセスを、1以上のプロセッサで並列実行する並列プロセス実行方法であって、
    それぞれの前記プロセスに基づいて、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスを探索し、前記探索した前記他プロセスの仕掛り状態の通信処理を前記他プロセスに代わって実行する、
    並列プロセス実行方法。
  2. それぞれの前記プロセスに基づいて、初期化処理を実行し、
    前記初期化処理では、
    プロセス間共有メモリ領域に配置した通信制御データ、ロック変数、およびプロセス状態変数を初期化した後、全プロセスのバリア同期の処理を行う、
    請求項1に記載の並列プロセス実行方法。
  3. それぞれの前記プロセスに基づいて、前記バリア同期の成立後に通信開始処理を実行し、
    前記通信開始処理では、
    前記プロセス状態変数を「通信処理中」に設定してデータ転送を開始し、前記データ転送が完了したか否かを確認し、データ転送が完了していれば、前記プロセス状態変数を「演算処理中」に設定し、データ転送が完了していなければ前記プロセス状態変数を「演算処理中」かつ「仕掛り通信処理有り」に設定する、
    請求項2に記載の並列プロセス実行方法。
  4. それぞれの前記プロセスに基づいて、前記プロセス状態変数を「通信処理中」あるいは「演算処理中」に変更する前に、前記ロック変数によるロックを取得し、前記プロセス状態変数を「通信処理中」あるいは「演算処理中」に変更した後に、前記ロック変数によるロックを解放する、
    請求項3に記載の並列プロセス実行方法。
  5. それぞれの前記プロセスに基づいて、前記通信開始処理の実行後に演算処理を実行し、前記演算処理を終えると、通信完了処理を実行し、
    前記通信完了処理では、
    前記プロセス状態変数を「通信処理中」に設定した後、仕掛り通信があるか否かを判定し、仕掛り通信がなければ前記プロセス状態変数を「演算処理中」に設定して前記通信完了処理を終了し、
    仕掛り通信があれば、現在時刻を取得して保持した後、仕掛り通信のデータ転送処理を、継続可能か否かを判定し、継続可能であれば仕掛り通信のデータ転送処理を実施した後、再び仕掛り通信があるか否かの前記判定に戻り、
    仕掛り通信のデータ転送処理を継続可能でない状態が前記取得した現在時刻から一定時間以上続いた場合、前記プロセス状態変数を「演算処理中」に設定した後、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスの探索を開始する、
    請求項3または4に記載の並列プロセス実行方法。
  6. それぞれの前記プロセスに基づいて、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスの探索では、
    前記他プロセスの前記ロック変数によるロックを取得した後、前記他プロセスの前記プロセス状態変数が「演算処理中」かつ「仕掛り通信処理有り」であるか否かを判定し、
    前記他プロセスの前記プロセス状態変数が「演算処理中」かつ「仕掛り通信処理あり」であれば、前記他プロセスの前記仕掛り状態の通信処理を前記他プロセスに代わって実行した後、前記他プロセスの前記ロック変数によるロックを解放し、
    前記他プロセスの前記プロセス状態変数が「演算処理中」かつ「仕掛り通信処理あり」でなければ、前記他プロセスの前記ロック変数によるロックを解放する、
    請求項5に記載の並列プロセス実行方法。
  7. 並列プログラムを構成する複数のプロセスを並列実行する1以上のプロセッサを有する情報処理装置であって、
    それぞれの前記プロセスに基づいて、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスを探索し、前記探索した前記他プロセスの仕掛り状態の通信処理を前記他プロセスに代わって実行するように構成されている、
    情報処理装置。
  8. 1以上のプロセッサを有するコンピュータに、
    並列プログラムを構成する複数のプロセスを並列実行させるためのプログラムであって、それぞれの前記プロセスに基づいて、プロセス間通信処理中に待ち合わせが発生した場合、メモリを共有する他プロセスであってプロセス状態が「演算処理中」かつ「仕掛り通信処理有り」である他プロセスを探索し、前記探索した前記他プロセスの仕掛り状態の通信処理を前記他プロセスに代わって実行する、
    プログラム。
JP2017039936A 2017-03-03 2017-03-03 並列プロセス実行方法 Active JP6930139B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017039936A JP6930139B2 (ja) 2017-03-03 2017-03-03 並列プロセス実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017039936A JP6930139B2 (ja) 2017-03-03 2017-03-03 並列プロセス実行方法

Publications (2)

Publication Number Publication Date
JP2018147126A JP2018147126A (ja) 2018-09-20
JP6930139B2 true JP6930139B2 (ja) 2021-09-01

Family

ID=63591248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017039936A Active JP6930139B2 (ja) 2017-03-03 2017-03-03 並列プロセス実行方法

Country Status (1)

Country Link
JP (1) JP6930139B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7100260B2 (ja) * 2018-11-21 2022-07-13 富士通株式会社 情報処理装置および情報処理プログラム

Also Published As

Publication number Publication date
JP2018147126A (ja) 2018-09-20

Similar Documents

Publication Publication Date Title
JP5479802B2 (ja) ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、およびプログラム
US7953915B2 (en) Interrupt dispatching method in multi-core environment and multi-core processor
JP3636871B2 (ja) 並列プロセッサシステム
RU2568292C2 (ru) Система и способ выбора синхронного или асинхронного межпроцессного взаимодействия
US8255909B2 (en) Synchronizing access to resources in a hybrid computing environment
CN106844017B (zh) 用于网站服务器处理事件的方法和设备
US8635318B1 (en) Message broadcast protocol which handles configuration changes in a cluster of virtual servers
US20080127202A1 (en) Stateless asynchronous message transmission
JP6197791B2 (ja) 分散処理装置及び分散処理システム並びに分散処理方法
WO2013185571A1 (zh) 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
KR20110047753A (ko) 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템
Si et al. Direct MPI library for Intel Xeon Phi co-processors
JP6336602B2 (ja) パケットフロー制御方法、関連装置、及びコンピューティングノード
JP6930139B2 (ja) 並列プロセス実行方法
US20180024865A1 (en) Parallel processing apparatus and node-to-node communication method
JP2007172611A (ja) 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法)
JP4414447B2 (ja) 情報処理装置、情報処理システムおよび情報処理方法
WO2012113224A1 (zh) 多节点计算系统下选择共享内存所在节点的方法和装置
US7962656B1 (en) Command encoding of data to enable high-level functions in computer networks
US20110191437A1 (en) Implementing asyncronous collective operations in a multi-node processing system
US20160328276A1 (en) System, information processing device, and method
JP5623187B2 (ja) マルチノードにわたるデータの送受信をバリア同期無しで行う並列計算処理
Aji et al. Synchronization and ordering semantics in hybrid MPI+ GPU programming
JP4833911B2 (ja) プロセッサユニットおよび情報処理方法
CN112306703A (zh) 一种numa系统中的临界区执行方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210402

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210726

R150 Certificate of patent or registration of utility model

Ref document number: 6930139

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150