(57)【要約】      （修正有）【課題】並列処理が可能な情報処理装置において、特定の制御装置にバリア同期のための処理を集中させること無くバリア同期制御のターンアラウンドタイムを短縮する。【解決手段】ジョブを複数の処理単位に分割し、前記複数の処理単位の各々を、複数の並列計算機のそれぞれに割当てて演算処理を実行する並列計算装置において、前記複数の並列計算機の各々に備えられた演算処理装置は、割当てられた前記処理単位の演算処理完了に応答して、同期要求命令を出力する。さらに、前記複数の演算処理装置の演算処理状態を記憶する記憶回路を備える。そして、前記対応する演算処理装置に割当てられた前記処理単位の演算処理完了に応答して、処理完了情報を記憶するフラグ保持装置と、前記同期要求命令に応答して前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定する同期監視装置とを具備する並列計算装置を構成する。【選択図】        図１
2005316679.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによる情報処理が可能なジョブを複数の処理単位に分割し、前記複数の処理単位の各々を、複数の並列計算機のそれぞれに割当てて演算処理を実行する並列計算装置において、
前記複数の並列計算機の各々に備えられ、前記複数の処理単位の中の少なくとも一つの処理単位を演算処理する演算処理装置と、前記演算処理装置は、割当てられた前記処理単位の演算処理完了に応答して、同期要求命令を出力し、
前記複数の並列計算機の各々に備えられ、前記複数の演算処理装置の演算処理状態を記憶する記憶回路と、
前記複数の並列計算機の各々に備えられ、前記複数の演算処理装置の中の一つに対応し、前記対応する演算処理装置に割当てられた前記処理単位の演算処理完了に応答して、処理完了情報を記憶するフラグ保持装置と、
前記複数の並列計算機の各々に備えられ、前記複数の演算処理装置の中の一つに対応し、前記同期要求命令に応答して前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定する同期監視装置と
を具備し、
前記同期監視装置は、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置に対応する演算処理装置に同期成立を通知し、
前記演算処理装置は、前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行する
並列計算装置。
【請求項２】
請求項１に記載の並列計算装置において、
前記同期監視装置は、前記通知に応答して同期成立パケットを生成し、前記同期成立パケットを他の演算処理装置に備えられた他の同期監視装置に送信し、
前記同期成立パケットを受信した前記他の同期監視装置は、前記同期成立パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置に対応する演算処理装置に同期成立を通知し、
前記他の演算処理装置は、前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行する
並列計算装置。
【請求項３】
請求項２に記載の並列計算装置において、
前記同期監視装置は、前記監視に対応して前記処理単位の演算処理が未完了である他の演算処理装置を抽出し、前記抽出の完了に応答して、同期要求パケットを生成し、前記同期要求パケットを他の演算処理装置に備えられた他の同期監視装置に送信し、
前記同期要求パケットを受信した前記他の同期監視装置は、前記同期要求パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置に対応する演算処理装置に同期成立を通知し、
前記他の演算処理装置は、前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行する
並列計算装置。
【請求項４】
請求項３に記載の並列計算装置において、
前記同期監視装置は、前記他の同期監視装置から送信された同期要求パケットの受信に応答して前記フラグ保持装置に記憶される情報を検索し、前記検索の結果、前記フラグ保持装置に前記処理完了情報が記憶されている場合、前記同期監視装置に対応する演算処理装置に同期成立を通知し、
前記演算処理装置は、前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行する
並列計算装置。
【請求項５】
請求項４に記載の並列計算装置において、
前記複数の並列計算機の各々は、タイマーを備え、
前記タイマーは、演算処理装置に割当てられた前記処理単位の演算処理完了に応答して、前記処理完了情報が記憶されるた時刻から所定の時間が経過したかどうかを計測し、前記計測の結果、前記所定の時間が経過した場合、前記記憶回路と前記フラグ保持装置とに記憶された値を初期状態にする
並列計算装置。
【請求項６】
コンピュータによる情報処理が可能なジョブを複数の処理単位に分割し、前記複数の処理単位の各々を、複数の並列計算機のそれぞれに割当てて演算処理を実行する並列計算装置を動作させるコンピュータプログラムにおいて、
前記複数の処理単位の中の少なくとも一つの処理単位を演算処理するステップと、
前記処理単位の演算処理完了に応答して、同期要求命令を出力するステップと、
前記複数の並列計算機の各々に備えられ記憶回路から、前記複数の演算処理装置の演算処理状態を読み出すステップと、
前記複数の並列計算機の各々に備えられたフラグ保持装置から、処理完了情報を示すフラグを読み出すステップと、
前記同期要求命令に応答して前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定するステップと、
前記複数の処理単位の演算処理完了に応答して、同期成立を通知するステップと、
前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行するステップ
を具備するコンピュータで実行可能なプログラム。
【請求項７】
請求項６に記載のプログラムにおいて、
前記通知に応答して同期成立パケットを生成し、前記同期成立パケットを送信するステップと、
前記同期成立パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、同期成立を通知するステップと、
前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行するステップと
を具備するコンピュータで実行可能なプログラム。
【請求項８】
請求項７に記載のプログラムにおいて、
前記監視に対応して前記処理単位の演算処理が未完了である他の演算処理装置を抽出し、前記抽出の完了に応答して、同期要求パケットを生成し、前記同期要求パケットを送信するステップと、
前記同期要求パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、同期成立を通知するステップと、
前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行するステップ
を具備するコンピュータで実行可能なプログラム。
【請求項９】
請求項８に記載の並列計算装置において、
前記同期要求パケットの受信に応答して前記フラグ保持装置に記憶される情報を検索し、前記検索の結果、前記フラグ保持装置に前記処理完了情報が記憶されている場合、同期成立を通知するステップと、
前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行するステップ
を具備するコンピュータで実行可能なプログラム。
【請求項１０】
請求項９に記載のプログラムにおいて、
前記処理完了情報が記憶される時刻から所定の時間が経過したかどうかを計測するステップと、
前記計測の結果、前記所定の時間が経過した場合、前記記憶回路と前記フラグ保持装置とに記憶された値を初期状態にするステップ
を具備するコンピュータで実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は並列演算処理装置に関し、特に並列演算処理装置のバリア同期の技術に関する。
【背景技術】
【０００２】
一つのジョブ（コンピュータに実行させるための仕事）をプロセスと呼ばれる複数の処理単位に分割し、その複数のプロセスを複数の演算処理装置にそれぞれ割当てて演算処理を実行することにより、当該ジョブの処理速度を向上させる技術が知られている。そのような技術は一般的に並列演算処理と呼ばれ、並列演算処理を実現するためにネットワークを介して接続された複数の演算処理装置によってシステムを構成する技術が知られている。そのような並列演算処理においては、あるジョブに対応する複数のプロセスの全ての処理が完了してから、次のジョブの処理に移行するという処理動作が行われている。そのため、複数のプロセスの処理状況を監視して、そのジョブに対応する全てのプロセスの処理完了を待ち合わせするバリア同期という技術が知られている。
【０００３】
従来の並列演算処理システムにおいて、複数の演算処理装置の各々に割当てられたプロセスの処理状況を監視する同期制御装置を備え、その同期制御装置が複数のプロセスの処理状況を監視することにより、バリア同期を実現する技術が知られている（例えば、特許文献１参照。）。
【０００４】
従来のプロセッサ間バリア同期装置は、バリア同期用のカウンタを設け、各プロセッサはこのカウンタにアクセスできるような構成である。バリア同期開始前に、ある1つのプロセッサによって、カウンタに対して初期値がセットされる。この場合の初期値は、バリア同期を行うプロセッサ数と同じ数である。ジョブ処理が開始され、複数のプロセスの処理が行われていき、各プロセッサが同期ポイント（プロセス完了ポイント）に到達すると、カウンタがデクリメントされる。そして、すべてのプロセッサが同期ポイントに達し、カウンタの値が0となったならばバリア同期完了となる。各プロセッサは同期ポイントに達し、カウンタのデクリメントを行った後には、カウンタを読み込み、カウンタの値が0かどうかをスピンロックにて確認する。カウンタの値が0ならばバリア同期が成立し、各プロセッサは次の処理に移行する。
【０００５】
この従来技術では、多数のプロセッサがバリア同期を行う場合、全プロセッサからのカウンタのデクリメント要求、及び、読み込み要求が1つのカウンタに対して集中し、デクリメント及び読み込みのアクセス時間が増大することがある。これにより、バリア同期に必要となるターンアラウンドタイムも増加することがあり、並列計算機システムにおいて、適切な情報処理性能を提供することが困難になる場合がある。バリア同期が適切に実行できる技術が望まれている。
【０００６】
【特許文献１】特開２０００−２１５１８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、並列処理が可能な情報処理装置において、特定の制御装置にバリア同期のための処理を集中させること無く、バリア同期制御のターンアラウンドタイムを短縮することができる技術を提供することにある。
【０００８】
さらに、本発明が解決しようとする他の課題は、バリア同期成立に関連するパケットの送信先に対する制約が無く、任意のネットワークを使用しても適切にバリア同期を実行することが可能な並列処理システムを構成することができる技術を提供することにある。
【０００９】
さらに、本発明が解決しようとする他の課題は、バリア同期成立に関連するパケットをネットワーク内に複数存在させることで、あるパケットに不具合が発生していたとしてもバリア同期の一貫性に与える影響を低くし、それにより、ネットワーク障害に対する対故障性能を向上させることができる技術を提供することにある。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための最良の形態］で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
コンピュータによる情報処理が可能なジョブを複数の処理単位に分割し、前記複数の処理単位の各々を、複数の並列計算機（１−ｎ）のそれぞれに割当てて演算処理を実行する並列計算装置において、
前記複数の並列計算機（１−ｎ）の各々に備えられ、前記複数の処理単位の中の少なくとも一つの処理単位を演算処理する演算処理装置（１１、２１）を備える。その演算処理装置（１１、２１）は、割当てられた前記処理単位の演算処理完了に応答して、同期要求命令を出力するものとする。そしてさらに、前記複数の並列計算機（１−ｎ）の各々に備えられ、前記複数の演算処理装置（１１、２１）の演算処理状態を記憶する記憶回路（１４、２４）と、前記複数の並列計算機（１−ｎ）の各々に備えられ、前記複数の演算処理装置（１１、２１）の中の一つに対応し、前記対応する演算処理装置（１１、２１）に割当てられた前記処理単位の演算処理完了に応答して、処理完了情報を記憶するフラグ保持装置（１６、２６）と、前記複数の並列計算機（１−ｎ）の各々に備えられ、前記複数の演算処理装置（１１、２１）の中の一つに対応し、前記同期要求命令に応答して前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定する同期監視装置（１３、２３）とを備えるように並列計算機の各々を構成する。ぞのうえで、前記同期監視装置（１３、２３）は、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知し、前記演算処理装置（１１、２１）は、前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行する。このような並列計算装置を構成し、その並列計算装置を動作させることで並列処理を実行する。
これによって、複数の並列計算機で分割された複数の処理単位（タスク）を演算処理する場合、最後にその処理単位の演算を完了させた並列計算機を速やかに把握することが可能になる。
【００１２】
その並列演算処理装置（１１、２１）において、前記同期監視装置（１３、２３）は、前記通知に応答して同期成立パケットを生成し、前記同期成立パケットを他の演算処理装置（１１、２１）に備えられた他の同期監視装置（１３、２３）に送信する。
前記同期成立パケットを受信した前記他の同期監視装置（１３、２３）は、前記同期成立パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知する。そして、前記他の演算処理装置（１１、２１）は、前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行する。このような並列計算装置を構成し、その並列計算装置を動作させることで並列処理を実行する。
これによって、複数の並列計算機で分割された複数の処理単位（タスク）を演算処理する場合、最後にその処理単位の演算を完了させた並列計算機が、他の並列計算機にバリア同期成立を速やかに通知することが可能になる。
【００１３】
その並列計算装置において、前記同期監視装置（１３、２３）は、前記監視に対応して前記処理単位の演算処理が未完了である他の演算処理装置（１１、２１）を抽出し、前記抽出の完了に応答して、同期要求パケットを生成し、前記同期要求パケットを他の演算処理装置（１１、２１）に備えられた他の同期監視装置（１３、２３）に送信する。
前記同期要求パケットを受信した前記他の同期監視装置（１３、２３）は、前記同期要求パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知する。そして、前記他の演算処理装置（１１、２１）は、前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行する。このような並列計算装置を構成し、その並列計算装置を動作させることで並列処理を実行する。
これによって、複数の並列計算機で分割された複数の処理単位（タスク）を演算処理する場合、まだ処理単位の演算を完了させていない並列計算機に、処理単位の演算が完了した他の並列計算機の存在を通知することが可能になり、それに伴って、バリア同期を速やかに実行することが可能になる。
【００１４】
その並列計算装置において、前記同期監視装置（１３、２３）は、前記他の同期監視装置（１３、２３）から送信された同期要求パケットの受信に応答して前記フラグ保持装置（１６、２６）に記憶される情報を検索し、前記検索の結果、前記フラグ保持装置（１６、２６）に前記処理完了情報が記憶されている場合、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知する。通知を受けた前記演算処理装置（１１、２１）は、前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行する。このような並列計算装置を構成し、その並列計算装置を動作させることで並列処理を実行する。
これにより、複数の並列計算機で分割された複数の処理単位（タスク）を演算処理する場合、自分自身に対応する演算処理装置に割当てられた処理単位の演算処理が完了したことを記憶することが可能になる。それによって、他の演算処理装置から送信されたバリア同期要求パケットや、バリア同期成立パケットを受信した場合、その受信に対応する情報処理を適切に実行することが可能になる。
【００１５】
その並列計算装置において、前記複数の並列計算機（１−ｎ）の各々は、タイマー（１５、２５）を備える構成にする。そして、前記タイマー（１５、２５）は、演算処理装置（１１、２１）に割当てられた前記処理単位の演算処理完了に応答して、前記処理完了情報が記憶されるた時刻から所定の時間が経過したかどうかを計測し、前記計測の結果、前記所定の時間が経過した場合、前記記憶回路（１４、２４）と前記フラグ保持装置（１６、２６）とに記憶された値を初期状態にする。このような並列計算装置を構成し、その並列計算装置を動作させることで並列処理を実行する。
これにより、複数の並列計算機で分割された複数の処理単位（タスク）を演算処理する場合、所定の時間が経過したときにシステムを初期状態にすることが可能になり、現ジョブのバリア同期制御から、次ジョブのバリア同期制御への移行を適切に行うことが可能になる。
【００１６】
コンピュータによる情報処理が可能なジョブを複数の処理単位に分割し、前記複数の処理単位の各々を、複数の並列計算機（１−ｎ）のそれぞれに割当てて演算処理を実行する並列計算装置を動作させるコンピュータプログラムにおいて、
前記複数の並列計算機（１−ｎ）の各々に備えられた演算処理装置（１１、２１）が、前記複数の処理単位の中の少なくとも一つの処理単位を演算処理するステップと、割当てられた前記処理単位の演算処理完了に応答して、同期要求命令を出力するステップと、前記複数の並列計算機（１−ｎ）の各々に備えられ記憶回路（１４、２４）が、前記複数の演算処理装置（１１、２１）の演算処理状態を記憶するステップと、前記記憶回路（１４、２４）に記憶された前記演算処理状態を読み出すステップと、前記複数の並列計算機（１−ｎ）の各々に備えられ、前記複数の演算処理装置（１１、２１）の中の一つに対応するフラグ保持装置（１６、２６）が、前記対応する演算処理装置（１１、２１）に割当てられた前記処理単位の演算処理完了に応答して、処理完了情報を記憶するステップと、前記複数の並列計算機（１−ｎ）の各々に備えられ、前記複数の演算処理装置（１１、２１）の中の一つに対応する同期監視装置（１３、２３）が、前記同期要求命令に応答して前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定するステップと、前記同期監視装置（１３、２３）が、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知するステップと、前記演算処理装置（１１、２１）が、前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行するステップ
を具備するコンピュータで実行可能なプログラムを複数のコンピュータに搭載する。そしてそのコンピュータを動作させることで並列処理を実行する。
【００１７】
そのプログラムにおいて、前記同期監視装置（１３、２３）が、前記通知に応答して同期成立パケットを生成し、前記同期成立パケットを他の演算処理装置（１１、２１）に備えられた他の同期監視装置（１３、２３）に送信するステップと、前記同期成立パケットを受信した前記他の同期監視装置（１３、２３）が、前記同期成立パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知するステップと、前記他の演算処理装置（１１、２１）が、前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行するステップとを具備するコンピュータで実行可能なプログラムを複数のコンピュータに搭載する。そして、そのコンピュータを動作させることで並列処理を実行する。
【００１８】
そのプログラムにおいて、前記同期監視装置（１３、２３）が、前記監視に対応して前記処理単位の演算処理が未完了である他の演算処理装置（１１、２１）を抽出し、前記抽出の完了に応答して、同期要求パケットを生成し、前記同期要求パケットを他の演算処理装置（１１、２１）に備えられた他の同期監視装置（１３、２３）に送信するステップと、前記同期要求パケットを受信した前記他の同期監視装置（１３、２３）が、前記同期要求パケットの受信に対応して、前記演算処理状態を監視し、前記監視に基づいて前記複数の処理単位の演算処理が完了したかどうかを判定し、前記判定の結果、前記複数の処理単位の演算処理が完了している場合、前記複数の処理単位の演算処理完了に応答して、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知するステップと、前記他の演算処理装置（１１、２１）が、前記通知に応答して、前記新たなジョブに対応する新たな処理単位の演算処理を実行するステップを具備するコンピュータで実行可能なプログラムを複数のコンピュータに搭載する。そしてそのコンピュータを動作させることで並列処理を実行する。
【００１９】
その並列計算装置において、前記同期監視装置（１３、２３）が、前記他の同期監視装置（１３、２３）から送信された同期要求パケットの受信に応答して前記フラグ保持装置（１６、２６）に記憶される情報を検索し、前記検索の結果、前記フラグ保持装置（１６、２６）に前記処理完了情報が記憶されている場合、前記同期監視装置（１３、２３）に対応する演算処理装置（１１、２１）に同期成立を通知するステップと、前記演算処理装置（１１、２１）は、前記通知に応答して、新たなジョブに対応する新たな処理単位の演算処理を実行するステップを具備するコンピュータで実行可能なプログラムを複数のコンピュータに搭載する。そしてそのコンピュータを動作させることで並列処理を実行する。
【００２０】
そのプログラムにおいて、前記複数の並列計算機（１−ｎ）の各々は、タイマー（１５、２５）を備える構成にする。そして、前記タイマー（１５、２５）が、前記タイマー（１５、２５）を含む並列計算機に対応する演算処理装置（１１、２１）に割当てられた前記処理単位の演算処理完了に応答して、前記処理完了情報が記憶されるた時刻から所定の時間が経過したかどうかを計測するステップと、前記計測の結果、前記所定の時間が経過した場合、前記記憶回路（１４、２４）と前記フラグ保持装置（１６、２６）とに記憶された値を初期状態にするステップを具備するコンピュータで実行可能なプログラムを複数のコンピュータに搭載する。そしてそのコンピュータを動作させることで並列処理を実行する。
【発明の効果】
【００２１】
本発明のよると、特定の制御装置にバリア同期のための処理を集中させることが無いため、バリア同期制御のターンアラウンドタイムを短縮することができる。
【００２２】
さらに、本発明によると、バリア同期成立に関連するパケットの送信先に対する制約が無いので、並列処理システムを構成するネットワークに任意のネットワークを使用することが可能であり、柔軟性の高いシステム構築が可能になる。
【００２３】
さらに、本発明によると、バリア同期成立に関連するパケットをネットワーク内に複数存在させることができる。そのため、あるパケットに不具合が発生していたとしてもバリア同期の一貫性に与える影響が低く、それにより、ネットワーク障害に対する対故障性能を向上させることが可能になる。
【発明を実施するための最良の形態】
【００２４】
［実施の形態の構成］
以下に、図面を使用して本発明を実施するための最良の形態について述べる。図１は、本発明を実施するための形態における並列演算処理システムの構成を示すブロック図である。図１を参照すると、本実施に実施の形態における並列演算処理システムは、セル間ネットワーク１０と、そのセル間ネットワーク１０に接続される複数のセル（１−１〜１−ｎ：ｎは任意の自然数）を備えていることが示されている。（以下の説明では複数のセルが演算処理装置であることを前提に説明を行っていく。）セル間ネットワーク１０に接続されている複数の並列演算処理装置（１−１〜１−ｎ）の各々は、同様のモジュールで構成されている。したがって、以下の演算処理装置（セル）の構成に関する説明では、並列演算処理装置１−１に対応させて説明を行っていくものとする。また、図１に示されている複数の並列演算処理装置（１−１〜１−ｎ）の接続形態は、セル間ネットワーク１０を介して直線型に接続されているが、これは、本実施の形態における複数の並列演算処理装置（１−１〜１−ｎ）の接続形態を限定するものではない。
【００２５】
並列演算処理装置１−１は、複数の処理単位（以下、プロセスと呼ぶ）に分割された特定のジョブ（コンピュータで情報処理可能な仕事）の中の、少なくとも一つのプロセスを割当てられ、そのプロセスに対応する情報処理を実行する情報処理装置である。また、並列演算処理装置１−１は、自分自身が特定のジョブの分割する場合、その分割処理を実行して複数のプロセスを生成する。生成された複数のプロセスは、並列演算処理装置１−１によって任意の並列演算処理装置に振分けられる。本実施の形態の並列処理システムは、各々のプロセスが割当てられたそれぞれの並列演算処理装置が、そのプロセスに対応する情報処理を実行することで並列処理を実現する。複数の並列演算処理装置（１−１〜１−ｎ）の各々は、それぞれ演算処理能力が異なる場合や、複数のプロセスの処理完了にかかる修理時間が異なる場合に、複数の並列演算処理装置（１−１〜１−ｎ）の各々のプロセス処理完了の待ち合わせ（以下、本実施の形態において、上記の待ち合わせのことを“バリア同期”と呼ぶ。）を行うことで適切に現ジョブから次ジョブへ移行する。
【００２６】
図１に示されているように、並列演算処理装置１−１は、プロセッサ１１と、そのプロセッサ１１に接続されているバリア同期制御装置１２とで構成されている。プロセッサ１１は、並列演算処理装置１−１に備えられた情報処理機能である。プロセッサ１１は、一般的に、ＣＰＵ（Central  Processing  Unit：中央演算処理装置）や、ＭＰＵ（Microprocessor  Unit：マイクロプロセッサ）と呼ばれている半導体集積回路で構成されている。以下の説明では、本実施の形態におけるプロセッサ１１が、上記のような半導体集積回路である場合を前提に説明を行っていくが、これは本発明におけるプロセッサ１１の構成を限定するものではない。
【００２７】
バリア同期制御装置１２は、セル間ネットワーク１０に接続される複数の並列演算処理装置（１−１〜１−ｎ）の各々に備えられ、その複数の並列演算処理装置（１−１〜１−ｎ）の各々に割当てられたプロセスのバリア同期を制御する情報処理機能である。バリア同期制御装置１２は、複数のプロセスに分割されたジョブの実行状況を監視し、現ジョブに対応するプロセスの処理が完了かどうかを監視し、その監視動作に基づいて、次のジョブの処理を実行することが可能かどうかを判断する。
【００２８】
図１を参照すると、バリア同期制御装置１２には、パケット転送制御装置１３と、ビットマップレジスタ１４と、バリア同期フラグ１６と、タイマー１５とが備えられていることが示されている。パケット転送制御装置１３は、プロセッサ１１に接続され、プロセッサ１１からの命令に応答してパケットを生成する情報生成機能である。パケット転送制御装置１３は、さらに、プロセッサ１１からの命令に応答して転送データをパケット化し、データ線１７を介してセル間ネットワーク１０に出力する。セル間ネットワーク１０に出力された上記転送データは、他の並列演算処理装置のパケット転送制御装置（例えば並列演算処理装置１−２のパケット転送制御装置２３）に送信される。また、パケット転送制御装置１３は、他の並列演算処理装置のパケット転送制御装置（例えば並列演算処理装置１−２のパケット転送制御装置２３）から送信された、並列処理の実行に必要なパケットの受信を行う。ここで、本実施の形態では、パケット転送制御装置１３によって、同期要求パケットと、同期成立パケットとの二つが生成されるものとする。バリア同期要求パケットは、プロセッサ１１のプロセス処理完了に応答して生成されるパケットであり、バリア同期成立パケットは、バリア同期の成立に応答して生成されるパケットである。
【００２９】
ビットマップレジスタ１４は、システムを構成する複数の並列演算処理装置（１−１〜１−ｎ）に一対一に対応する記憶領域を備える記憶回路である。ビットマップレジスタ１４に格納される情報は、セル間ネットワーク１０を介して送信されたパケットの情報に基づいて更新される。プロセッサ１１は、ビットマップレジスタ１４に格納される情報に基づいて複数の並列演算処理装置（１−１〜１−ｎ）のプロセス処理の実行状況を監視する。
【００３０】
バリア同期フラグ１６は、１ビットの記憶領域で構成される記憶回路である。バリア同期フラグ１６は、プロセッサ１１においてバリア同期が成立した場合に、そのフラグをバリア同期完了を示す値にして格納する。以下の説明では、バリア同期が成立した場合に、バリア同期フラグ１６の所定の記憶領域には値 “１”が格納され、その値がバリア同期完了を示す値がであるものとする。
【００３１】
タイマー１５は、ビットマップレジスタ１４とバリア同期フラグ１６とに格納されている値をリセットする時期をカウントするタイマである。本実施の形態の並列処理システムは、バリア同期成立後に、現ジョブから次ジョブに移行する場合に、ビットマップレジスタ１４とバリア同期フラグ１６とに格納されている値のクリアが要求される。タイマー１５は、バリア同期フラグ１６にバリア同期完了を示す値“１”が格納されたことに応答して、カウントを開始する。タイマー１５は、そのカウント開始時刻から、システムにおける最大パケット転送時間経過後に、ビットマップレジスタ１４とバリア同期フラグ１６との値をクリアにする。
【００３２】
上述のように、図１に示されている並列演算処理装置１−２は、並列演算処理装置１−１と同様の構成である。以下に、簡単に並列演算処理装置１−２の構成について説明を行う。図１に示されているように、並列演算処理装置１−２は、プロセッサ２１と、バリア同期制御装置２２とで構成されている。バリア同期制御装置２２は、さらに、パケット転送制御装置２３と、ビットマップレジスタ２４と、タイマー２５と、バリア同期成立フラグとを備えている。
【００３３】
［実施の形態の動作］
以下に、添付図面を使用して、本発明を実施するための形態に示す並列処理システムの動作について述べる。図２Ａから図２Ｃは、本実施の形態の並列処理システムの動作を示すフローチャートである。以下の動作の説明では、本実施の形態における並列処理システムの動作に対する理解を容易にするために、図１に示されている並列演算処理装置１−１と並列演算処理装置１−２とが並列処理を実行する場合に対応させて説明を行う。
【００３４】
また、図２Ａから図２Ｃに示されているフローチャートのステップＳ０１、Ｓ０９、Ｓ１９はパケット転送制御装置１３（またはパケット転送制御装置２３）の動作を示すステップである。本実施の形態の動作は、パケット転送制御装置１３（またはパケット転送制御装置２３）がプロセッサ１１（またはプロセッサ２１）からの命令や、セル間ネットワーク１０を介して受信されるパケットを常時監視することにより実現される。また、Ｓ２７は、タイマー１５（または、バリア同期成立フラグ）の動作を示すステップである。以下に述べる説明では、並列演算処理装置１−１に備えられた各処理モジュールの動作に対応してシステムの動作説明を行っていくものとする。なお、以下の説明に対応する処理フローは、システムが稼働している間は、セル間ネットワーク１０に接続された複数の並列演算処理装置（１−１〜１−ｎ）で、同様の処理が行われているものとする。
【００３５】
プロセッサ１１は、自分自身に対して割当てられたプロセス（以下、自己プロセスと呼ぶ。）の処理が完了すると、同期要求命令を生成し、生成したその同期要求命令をパケット転送制御装置１３に出力する。ステップＳ０１において、パケット転送制御装置１３は、プロセッサ１１から同期要求命令が出力されたどうかを監視する。ステップＳ０１での監視動作に対応して、プロセッサ１１から出力された同期要求命令を検出したパケット転送制御装置１３は、自己プロセスの処理が完了したことを記憶するためにビットマップレジスタ１４にアクセスする。
【００３６】
ステップＳ０２において、パケット転送制御装置１３は、ビットマップレジスタ１４に備えられた記憶領域の中から、パケット転送制御装置１３に対応する領域（以下、自己領域と呼ぶ。）を選択する。パケット転送制御装置１３は、その自己領域に、自己プロセスの処理が完了したことを示す情報を書きこむ。ここにおいて、ビットマップレジスタ１４に記憶される情報の形式は、どのような形式であっても本実施の形態を限定するものではない。したがって、以下の説明では、ビットマップレジスタ１４の所定領域に値 “１”が書きこまれた場合、その書きこまれた領域に対応する並列演算処理装置が、自己プロセスの処理が完了したものであるとする。
【００３７】
ステップＳ０３において、パケット転送制御装置１３は、ビットマップレジスタ１４に格納される情報から、セル間ネットワーク１０に接続される全ての並列演算処理装置の各々が、それぞれ自己プロセスを完了したかどうかの判断を実行する。その判断は、ビットマップレジスタ１４に備えられた、複数の並列演算処理装置に対応する記憶領域の全てに値 “１”が書きこまれているかどうかによって行われる。その判断の結果、上記の記憶領域の全てに値 “１”が書きこまれていない場合、処理はステップＳ０４に進み、全てに値 “１”が書きこまれている場合、処理はステップＳ０５に進む。
【００３８】
ステップＳ０４において、パケット転送制御装置１３はビットマップレジスタ１４に記憶領域に値 “０”が書きこまれている領域を抽出する。パケット転送制御装置１３は、その値 “０”が書きこまれている領域の抽出完了に応答して、同期要求パケットを生成する。このとき生成される同期要求パケットには、ビットマップレジスタ１４の値が添付される。生成された同期要求パケットは、パケット転送制御装置１３によって抽出された領域に対応する並列演算処理装置のアドレスに送信される。このときに、ステップＳ０４で送信された同期要求パケットを受信した他の並列演算処理装置（例えば、並列演算処理装置１−２）は、その同期要求パケットの受信に応答してステップＳ０９からの処理を実行する。
【００３９】
ステップＳ０５において、ビットマップレジスタ１４の複数の並列演算処理装置に対応する記憶領域の全てに値 “１”が書きこまれている場合、パケット転送制御装置１３は、プロセッサ１１に同期成立通知を出力する。上記のように、記憶領域の全てに値 “１”が書きこまれている場合、バリア同期が全ての並列演算処理装置で成立していることになる。ステップＳ０５における動作は、並列演算処理装置１−１の内部での処理に対応してバリア同期が成立したことを、並列演算処理装置１−２に通知するための動作である。
【００４０】
ステップＳ０６において、プロセッサ１１に対して同期成立を通知したパケット転送制御装置１３は、ビットマップレジスタ１４の自己領域の値を“１”から “０”に更新する。さらにステップＳ０７において、パケット転送制御装置１３は、バリア同期フラグ１６のフラグを書きこむ領域に、値“１”を書きこむ。バリア同期フラグ１６は、その書きこまれた値“１”を保持する。
【００４１】
ステップＳ０８において、パケット転送制御装置１３は、バリア同期フラグ１６の書きこみ完了に応答して、同期成立パケットを生成する。このとき生成される同期成立パケットには、自己領域の値を“１”から “０”に更新された後のビットマップレジスタ１４の値が添付される。パケット転送制御装置１３は、その同期成立パケットの生成が完了したことに応答して、値“１”が書きこまれているビットマップレジスタ１４の記憶領域に対応する並列演算処理装置のアドレスに同期成立パケットを送信する。このときに、ステップＳ０８で送信された同期成立パケットを受信した他の並列演算処理装置（例えば、並列演算処理装置１−２）は、その同期成立パケットの受信に応答してステップＳ１９からの処理を実行する。
【００４２】
ステップＳ０９において、パケット転送制御装置１３は、セル間ネットワーク１０を介して同期要求パケットを受信したかどうかを監視する。以下の説明では、並列演算処理装置１−１が、並列演算処理装置１−２のパケット転送制御装置２３から送信された同期要求パケットを受信した場合を例に、動作の説明を行う。また、このときに受信する同期要求パケットは、ステップＳ０４の動作によって生成された同期要求パケットであるものとする。ステップＳ０９で同期要求パケットを受信したことにより、処理は、ステップＳ１０に進む。
【００４３】
ステップＳ１０おいて、パケット転送制御装置１３は、タイマー２５から送信された同期要求パケットの受信に応答して、バリア同期フラグ１６のフラグの状態を確認する。この動作により、他の並列演算処理装置から送信された同期要求パケットを受信する前に、ステップＳ０５からステップＳ０８の動作が実行されたかどうかの判断が行われる。ここでバリア同期フラグ１６に値“１”が格納されていた場合、現ジョブに対応する複数のプロセスの全ての処理が完了していることになるので、処理は戻り、その後、ステップＳ２７に進む。ステップＳ１０で、ここでバリア同期フラグ１６に値“０”が格納されていた場合、処理はステップＳ１１に進む。
【００４４】
ステップＳ１１において、パケット転送制御装置１３は、受信した同期要求パケットに添付された値（タイマー２５の値）とバリア同期フラグ１６との論理和をとり、その結果をバリア同期フラグ１６に書きこむことでバリア同期フラグ１６の値を更新する。パケット転送制御装置１３は、その更新されたバリア同期フラグ１６から、自己領域の値を抽出し、処理はステップＳ１２に進む。
【００４５】
ステップ１２において、パケット転送制御装置１３は、ステップＳ１１で抽出された自己領域の値が値“１”であるかどうかの判断を行う。ここで、受信した同期要求パケットに添付されているビットマップレジスタ２４の値には、並列演算処理装置１−１に対応する領域には“０”が書きこまれている。そのビットマップレジスタ２４の値とビットマップレジスタ１４の値との論理和をとった結果、並列演算処理装置１−１に対応する領域の値が値“１”になるには、ビットマップレジスタ１４の並列演算処理装置１−１に対応する領域に値“１”が書きこまれている場合である。したがって、この動作により、同期要求パケット受信前に、プロセッサ１１からの同期要求命令を受信したかどうかの判断を行うことが可能になる。ステップＳ１２の判断の結果、自己領域の値が値“０”の場合、プロセッサ１１から同期要求が出力されていない、つまり、割当てられたプロセスの処理が完了していないことになる。そのため、ステップＳ１２の判断の結果、自己領域の値が値“０”の場合、処理は戻り、監視動作を継続する。
【００４６】
ステップＳ１２での判断の結果、自己領域の値が値“１”の場合、ステップ１３に進む。ステップ１３において、パケット転送制御装置１３は、ビットマップレジスタ１４に格納される情報から、セル間ネットワーク１０に接続される全ての並列演算処理装置の各々が、それぞれ自己プロセスを完了したかどうかの判断を実行する。その判断は、上記論理和をとった結果が書きこまれたビットマップレジスタ１４の、複数の並列演算処理装置に対応する記憶領域の全てに値 “１”が書きこまれているかどうかによって行われる。その判断の結果、上記の記憶領域の全てに値 “１”が書きこまれていない場合、処理はステップＳ１４に進み、全てに値 “１”が書きこまれている場合、処理はステップＳ１５に進む。
【００４７】
ステップＳ１４において、パケット転送制御装置１３はビットマップレジスタ１４に記憶領域に値 “０”が書きこまれている領域を抽出する。パケット転送制御装置１３は、その値 “０”が書きこまれている領域の抽出完了に応答して、同期要求パケットを生成する。このとき生成される同期要求パケットには、ステップＳ１１で更新されたビットマップレジスタ１４の値が添付される。生成された同期要求パケットは、ステップＳ１４でパケット転送制御装置１３によって抽出された領域に対応する並列演算処理装置のアドレスに送信される。このときに、ステップＳ１４で送信された同期要求パケットを受信した他の並列演算処理装置（例えば、並列演算処理装置１−２）は、その同期要求パケットの受信に応答してステップＳ０９からの処理を実行する。
【００４８】
ステップＳ１５において、ビットマップレジスタ１４の複数の並列演算処理装置に対応する記憶領域の全てに値 “１”が書きこまれている場合、パケット転送制御装置１３は、プロセッサ１１に同期成立通知を出力する。上記のように、記憶領域の全てに値 “１”が書きこまれている場合、バリア同期が全ての並列演算処理装置で成立していることになる。ステップＳ１５における動作は、並列演算処理装置１−１の内部での処理に対応してバリア同期が成立したことを、並列演算処理装置１−２に通知するための動作である。
【００４９】
ステップＳ１６において、プロセッサ１１に対して同期成立を通知したパケット転送制御装置１３は、ビットマップレジスタ１４の自己領域の値を“１”から “０”に更新する。さらにステップＳ１７において、パケット転送制御装置１３は、バリア同期フラグ１６のフラグを書きこむ領域に、値“１”を書きこむ。バリア同期フラグ１６は、その書きこまれた値“１”を保持する。
【００５０】
ステップＳ１８において、パケット転送制御装置１３は、バリア同期フラグ１６の書きこみ完了に応答して、同期成立パケットを生成する。このとき生成される同期成立パケットには、自己領域の値を“１”から “０”に更新された後のビットマップレジスタ１４の値が添付される。パケット転送制御装置１３は、その同期成立パケットの生成が完了したことに応答して、値“１”が書きこまれているビットマップレジスタ１４の記憶領域に対応する並列演算処理装置のアドレスに同期成立パケットを送信する。このときに、ステップＳ１８で送信された同期成立パケットを受信した他の並列演算処理装置（例えば、並列演算処理装置１−２）は、その同期成立パケットの受信に応答してステップＳ１９からの処理を実行する。
【００５１】
ステップＳ１９において、パケット転送制御装置１３は、セル間ネットワーク１０を介して同期成立パケットを受信したかどうかを監視する。以下の説明では、並列演算処理装置１−１が、並列演算処理装置１−２のパケット転送制御装置２３から送信された同期成立パケットを受信した場合を例にして、動作の説明を行う。また、このときに受信する同期成立パケットは、ステップＳ０８の動作によって生成された同期成立パケットであるものとするが、ステップＳ１８の動作によって生成された同期成立パケットにおいても、本字しいの形態のシステムは同様に動作する。ここで、ステップＳ１９で同期要求パケットを受信したことにより、処理はステップＳ２０に進む。
【００５２】
ステップＳ２０において、パケット転送制御装置１３は、同期成立パケットの受信に応答してバリア同期フラグ１６のフラグの値を確認する。その確認の結果、バリア同期フラグ１６に保持されている値が値“１”である場合、処理はステップＳ２４に進み、バリア同期フラグ１６に保持されている値が値“０”である場合、処理はステップ２１に進む。上記のように、同期成立パケットを受信し、バリア同期フラグ１６に保持されている値が値“１”である場合、バリア同期が全ての並列演算処理装置で成立していることになり、このときのビットマップレジスタ１４の自己領域は値“０”が保持されている。
【００５３】
ステップＳ２１において、バリア同期フラグ１６に保持されている値が値“０”である場合、パケット転送制御装置１３は、プロセッサ１１に同期成立通知を出力する。上記のように、同期成立パケットを受信し、バリア同期フラグ１６に保持されている値が値“０”である場合というのは、同期要求パケットを送信後、同期成立パケット受信前であり、そのような場合にバリア同期フラグ１６はこのような値をとる。このときのビットマップレジスタ１４の自己領域は値“１”が保持されている。
【００５４】
ステップＳ２２、プロセッサ１１に対して同期成立を通知したパケット転送制御装置１３は、ビットマップレジスタ１４の自己領域の値を“１”から “０”に更新する。さらにステップＳ２３において、パケット転送制御装置１３は、バリア同期フラグ１６のフラグを書きこむ領域に、値“１”を書きこむ。バリア同期フラグ１６は、その書きこまれた値“１”を保持する。
【００５５】
ステップＳ２４において、パケット転送制御装置１３は、受信した同期成立パケットに添付されるビットマップレジスタ２４の値と、ビットマップレジスタ１４の値との論理積をとり、その結果に対応してビットマップレジスタ１４の値を更新する。ステップＳ２５において、パケット転送制御装置１３は、更新されたビットマップレジスタ１４の値から、複数の並列演算処理装置に対応する記憶領域の全てに値 “０”が書きこまれているかどうかの判断を行う。その判断の結果、複数の並列演算処理装置に対応する記憶領域の全てに値 “０”が書きこまれている場合、処理は戻り、監視動作を実行後ステップＳ２７に進む。複数の並列演算処理装置に対応する記憶領域の全てに値 “０”が書きこまれていない場合、ステップＳ２６にすすむ。ステップＳ２６において、値“１”が書きこまれているビットマップレジスタ１４の記憶領域に対応する並列演算処理装置のアドレスに同期成立パケットを送信し、監視動作を継続する。
【００５６】
ステップＳ２７において、タイマー１５は、バリア同期フラグ１６を監視を実行する。その監視の結果、バリア同期フラグ１６に保持される値が値“０”であるならば、待機状態に戻る。その監視の結果、バリア同期フラグ１６の値が値“１”の場合、処理はステップＳ２８に進む。ステップＳ２８において、タイマー１５は、バリア同期フラグ１６の値が“１”になったことに応答して、カウント動作を開始する。タイマー１５は、そのカウント開始に対応して、予め設定された時間が経過したかどうかの監視を行う。本実施の形態においては、その予め設定された時間が、システムにおける最大パケット転送時間である場合を例に述べるが、これは本発明のカウント時間を限定するものではない。
【００５７】
ステップＳ２８において、所定の時間が経過していない場合（ステップＳ２８における“ＮＯ”の場合）、タイマー１５は、バリア同期フラグ１６に対する監視動作を継続する。所定の時間が経過した場合、処理はステップＳ２９に進む。ステップＳ２９において、タイマー１５は、ビットマップレジスタ１４の値のリセットをパケット転送制御装置１３に要求し、パケット転送制御装置１３は、その要求に応答してビットマップレジスタ１４の全ての記憶領域に“０”を書きこむ。ステップＳ３０において、ステップＳ２９と同様に、タイマー１５は、バリア同期フラグ１６の値のリセットをパケット転送制御装置１３に要求し、パケット転送制御装置１３は、その要求に応答してバリア同期フラグ１６の記憶領域に“０”を書きこむ。
【００５８】
なお、上記の動作において、各並列演算処理装置から送信される同期要求パケットおよび同期成立パケットは、少なくとも一つの送信対象に対して送信されることで、本発明のバリア同期の制御を実現することが可能である。したがって、各並列演算処理装置の備えられたパケット転送制御装置１３は、セル間ネットワーク１０の伝送状況を監視し、適切な数のパケットを送信する構成を備えることで、より効率の良いバリア同期を実現することが可能になる。
【図面の簡単な説明】
【００５９】
【図１】図１は、本実施の形態の構成を示すブロック図である。
【図２Ａ】図２Ａは、本実施の形態の動作を示すフローチャートである。
【図２Ｂ】図２Ｂは、本実施の形態の動作を示すフローチャートである。
【図２Ｃ】図２Ｃは、本実施の形態の動作を示すフローチャートである。
【符号の説明】
【００６０】
１−１〜１−ｎ…並列演算処理装置
１０…セル間ネットワーク
１１、２１…プロセッサ
１２、２２…バリア同期制御装置
１３、２３…パケット転送制御装置
１４、２４…ビットマップレジスタ
１５、２５…タイマー
１６、２６…バリア同期フラグ
【図１】
2005316679.tif 000003
【図２Ａ】
2005316679.tif 000004
【図２Ｂ】
2005316679.tif 000005
【図２Ｃ】
2005316679.tif 000006