(57)【要約】【課題】プロセッサの能力が異なるマルチプロセッサシステムで、ループの繰返しを割付ける際、利用可能なプロセッサの中から処理能力の低いものが選ばれることがあった。【解決手段】記憶装置２１〜２４に、ループを含む演算処理部、実行を制御する処理制御部を含むプログラムモジュール３１〜３４をロードし、未処理繰返し記憶部５１〜５４と、処理能力と処理未割付／否状態を記憶するプロセッサ状態記憶部４１〜４４を設ける。処理制御部３１１は処理未割付状態になるとプロセッサ状態記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内最も処理能力の高いプロセッサになったことを確認し、未処理繰り返し記憶部から予め決められた数分の処理を演算処理部に渡し、全プロセッサの、未処理繰返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、残りの未処理繰返し情報、処理割付済み状態を設定する。【選択図】      図１
2006011912.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方式であって、
各プロセッサに結合された各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、処理能力情報と処理未割付／否かの状態を全プロセッサについて記憶するプロセッサ状態記憶部を設け、
前記処理制御部は属するプロセッサを通じて、処理未割付状態になると前記プロセッサ状態記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、演算処理部がプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定することを特徴とするマルチプロセッサシステムにおけるループの並列実行方式。
【請求項２】
マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方式であって、
各プロセッサに結合された各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、全プロセッサの処理能力情報を保持する処理能力記憶部と、全プロセッサの処理未割付／否かの状態を記憶するプロセッサ状態記憶部を設け、
前記処理制御部は属するプロセッサを通じて、処理未割付状態になると、前記プロセッサ状態記憶部や処理能力記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、演算処理部がプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定することを特徴とするマルチプロセッサシステムにおけるループの並列実行方式。
【請求項３】
前記処理能力情報を各プロセッサの処理能力値とすることを特徴とする請求項１、又は２に記載のマルチプロセッサシステムにおけるループの並列実行方式。
【請求項４】
前記処理能力情報を各プロセッサの処理能力の順位とすることを特徴とする請求項１、又は２に記載のマルチプロセッサシステムにおけるループの並列実行方式。
【請求項５】
複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方式であって、
各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、処理能力情報と処理未割付／否かの状態を全ノードについて記憶するノード状態記憶部を設け、
前記処理制御部は各計算機ノードで一つのプロセッサを通じて、自計算機ノードが処理未割付状態になると前記ノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、前記渡した繰り返し処理を自計算機ノードの複数のプロセッサに配分し、演算処理部が複数のプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定することを特徴とするマルチプロセッサシステムにおけるループの並列実行方式。
【請求項６】
複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方式であって、
各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、全計算機ノードの処理能力情報を保持する処理能力記憶部と、全計算機ノードの処理未割付／否かの状態を記憶するノード状態記憶部を設け、
前記処理制御部は各計算機ノードで一つのプロセッサを通じて、自計算機ノードが処理未割付状態になると、前記ノード状態記憶部や処理能力記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、前記渡した繰り返し処理を自計算機ノードの複数のプロセッサに配分し、演算処理部が複数のプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定することを特徴とするマルチプロセッサシステムにおけるループの並列実行方式。
【請求項７】
前記処理能力情報を各計算機ノードの処理能力値とすることを特徴とする請求項５、又は６に記載のマルチプロセッサシステムにおけるループの並列実行方式。
【請求項８】
前記処理能力情報を各計算機ノードの処理能力の順位とすることを特徴とする請求項５、又は６に記載のマルチプロセッサシステムにおけるループの並列実行方式。
【請求項９】
処理未割付状態になると、全プロセッサについて処理能力情報と処理未割付／否かの状態を記憶するプロセッサ状態記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取込む手順と、
全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
取り込んだ繰返し処理を実行する手順と、
実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順とをコンピュータに実行させるためのプログラム。
【請求項１０】
処理未割付状態になると、全プロセッサについて処理未割付／否かの状態を記憶するプロセッサ状態記憶部や、全プロセッサの処理能力情報を保持する記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取込む手順と、
全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
取り込んだ繰返し処理を実行する手順と、
実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順とをコンピュータに実行させるためのプログラム。
【請求項１１】
自計算機ノードが処理未割付状態になると、全計算機ノードについて処理能力情報と処理未割付／否かの状態を記憶するノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、
全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、
自分に配分した繰返し処理を実行する手順と、
前記実行を終了すると、自計算機ノードの他プロセッサの実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とをコンピュータに実行させるためのプログラム。
【請求項１２】
自計算機ノードが処理未割付状態になると、全計算機ノードについて処理未割付／否かの状態を記憶するノード状態記憶部や、全計算機ノードの処理能力情報を保持する記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、
全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、
自分に配分した繰返し処理を実行する手順と、
前記実行を終了すると、自計算機ノードの他プロセッサの実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とをコンピュータに実行させるためのプログラム。
【請求項１３】
マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方法であって、
各プロセッサに結合された各記憶装置に、プロセッサ状態記憶部を設け、これに各プロセッサの処理能力情報を設定し、また各プロセッサの状態を処理未割付に初期設定する手順と、
前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、
前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、
前記処理制御部は、処理未割付状態になるとプロセッサ状態記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込み、演算処理部に渡す手順と、
全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
演算制御部の繰返し処理の実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順を有することを特徴とするマルチプロセッサシステムにおけるループの並列実行方法。
【請求項１４】
マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方法であって、
各プロセッサに結合された各記憶装置に処理能力状態記憶部を設け、これに各プロセッサの処理能力情報を設定する手順と、
前記各記憶装置にプロセッサ状態記憶部を設け、各プロセッサの状態を処理未割付に初期設定する手順と、
前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、
前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、
前記処理制御部は、処理未割付状態になるとプロセッサ状態記憶部や処理能力記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込み、演算処理部に渡す手順と、
全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
演算制御部の繰返し処理の実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順を有することを特徴とするマルチプロセッサシステムにおけるループの並列実行方法。
【請求項１５】
複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方法であって、
各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、ノード状態記憶部を設け、これに各計算機ノードの処理能力情報を設定し、また各計算機ノードの状態を処理未割付に初期設定する手順と、
前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、
前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、
前記処理制御部は、自計算機ノードが処理未割付状態になるとノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、
全ての、未処理繰り返し記憶部と計算機ノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、
自計算機ノードの全プロセッサの繰り返し処理の実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とを有することを特徴とするマルチプロセッサシステムにおけるループの並列実行方法。
【請求項１６】
複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方法であって、
各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、処理能力状態記憶部を設け、これに各計算機ノードの処理能力情報を設定する手順と、
前記各記憶装置にノード状態記憶部を設け、各計算機ノードの状態を処理未割付に初期設定する手順と、
前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、
前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、
前記処理制御部は、自計算機ノードが処理未割付状態になると計算機ノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、
未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、
全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、
取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、
自計算機ノードの全プロセッサの繰り返し処理の実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とを有することを特徴とするマルチプロセッサシステムにおけるループの並列実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステムにおけるループの並列実行方式及び方法並びにプログラムに関し、特に、処理能力が均一でない複数のプロセッサから構成されるマルチプロセッサシステムにおけるループの並列実行方式及び方法並びにプログラムに関する。
【背景技術】
【０００２】
従来、プログラム中のループ構造を複数のプロセッサを用いて実行する場合、各プロセッサに対する処理の割当ては、未実行のループの繰り返しを、処理が割り当てられていないプロセッサに動的に順番に割り当てていくセルフスケジューリングで行われていた。
【０００３】
例えば、各プロセッサ上で動作するプログラムは、処理が未割当て状態のとき、未実行繰返し記憶部に保持された未実行のループの繰返し情報を取り出し、その繰返し情報から、予め定められた、１つのプロセッサで１回に処理する繰返しの数だけ演算処理を行うといった方法である（非特許文献１参照。）。
【０００４】
【非特許文献１】Ｈａｎｓ  Ｚｉｍａ／Ｂａｒｂａｒａ  Ｃｈａｐｍａｎ共著  村岡  洋一  訳「スーパーコンパイラ」  オーム社、１９９５年４月２５日、ｐ．３０３−３０６
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記従来の方法ではプロセッサの処理能力の差についての考慮がないため、プロセッサの処理能力が均一でないマルチプロセッサシステムにおいて、ループの繰返しをプロセッサに割付ける際に、利用可能なプロセッサの中から処理能力の低いものが選ばれてしまう可能性があるという問題があった。
【０００６】
特に、ループの繰り返しの分割数よりプロセッサ数が多い場合、高い処理能力をもつプロセッサに処理が割り付けられない可能性があり、本来そのシステムがもつ処理能力を十分に利用することができないという問題があった。
【課題を解決するための手段】
【０００７】
本発明の第１のマルチプロセッサシステムにおけるループの並列実行方式は、マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方式であって、各プロセッサに結合された各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、処理能力情報と処理未割付／否かの状態を全プロセッサについて記憶するプロセッサ状態記憶部を設け、前記処理制御部は属するプロセッサを通じて、処理未割付状態になると前記プロセッサ状態記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、演算処理部がプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定することを特徴とする。
【０００８】
本発明の第２のマルチプロセッサシステムにおけるループの並列実行方式は、マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方式であって、各プロセッサに結合された各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、全プロセッサの処理能力情報を保持する処理能力記憶部と、全プロセッサの処理未割付／否かの状態を記憶するプロセッサ状態記憶部を設け、前記処理制御部は属するプロセッサを通じて、処理未割付状態になると、前記プロセッサ状態記憶部や処理能力記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、演算処理部がプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定することを特徴とする。
【０００９】
本発明の第３のマルチプロセッサシステムにおけるループの並列実行方式は、前記第１、又は第２のマルチプロセッサシステムにおけるループの並列実行方式であって、前記処理能力情報を各プロセッサの処理能力値とすることを特徴とする。
【００１０】
本発明の第４のマルチプロセッサシステムにおけるループの並列実行方式は、前記第１、又は第２のマルチプロセッサシステムにおけるループの並列実行方式であって、前記処理能力情報を各プロセッサの処理能力の順位とすることを特徴とする。
【００１１】
本発明の第５のマルチプロセッサシステムにおけるループの並列実行方式は、複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方式であって、各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、処理能力情報と処理未割付／否かの状態を全ノードについて記憶するノード状態記憶部を設け、前記処理制御部は各計算機ノードで一つのプロセッサを通じて、自計算機ノードが処理未割付状態になると前記ノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、前記渡した繰り返し処理を自計算機ノードの複数のプロセッサに配分し、演算処理部が複数のプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定することを特徴とする。
【００１２】
本発明の第６のマルチプロセッサシステムにおけるループの並列実行方式は、複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方式であって、各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードし、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部と、全計算機ノードの処理能力情報を保持する処理能力記憶部と、全計算機ノードの処理未割付／否かの状態を記憶するノード状態記憶部を設け、前記処理制御部は各計算機ノードで一つのプロセッサを通じて、自計算機ノードが処理未割付状態になると、前記ノード状態記憶部や処理能力記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認し、前記未処理繰り返し記憶部の未処理繰返し情報から予め決められた数分の処理を取り込み、前記演算処理部に渡し、全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定し、前記渡した繰り返し処理を自計算機ノードの複数のプロセッサに配分し、演算処理部が複数のプロセッサを通じ渡された繰返し処理を実行し終わると、前記処理制御部が全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定することを特徴とする。
【００１３】
本発明の第７のマルチプロセッサシステムにおけるループの並列実行方式は、前記第５、又は第６のマルチプロセッサシステムにおけるループの並列実行方式であって、前記処理能力情報を各計算機ノードの処理能力値とすることを特徴とする。
【００１４】
本発明の第８のマルチプロセッサシステムにおけるループの並列実行方式は、前記第５、又は第６のマルチプロセッサシステムにおけるループの並列実行方式であって、前記処理能力情報を各計算機ノードの処理能力の順位とすることを特徴とする。
【００１５】
本発明の第１のプログラムは、処理未割付状態になると、全プロセッサについて処理能力情報と処理未割付／否かの状態を記憶するプロセッサ状態記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、取り込んだ繰返し処理を実行する手順と、実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順とをコンピュータに実行させる。
【００１６】
本発明の第２のプログラムは、処理未割付状態になると、全プロセッサについて処理未割付／否かの状態を記憶するプロセッサ状態記憶部や、全プロセッサの処理能力情報を保持する記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、取り込んだ繰返し処理を実行する手順と、実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順とをコンピュータに実行させる。
【００１７】
本発明の第３のプログラムは、自計算機ノードが処理未割付状態になると、全計算機ノードについて処理能力情報と処理未割付／否かの状態を記憶するノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取込む手順と、全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、自分に配分した繰返し処理を実行する手順と、前記実行を終了すると、自計算機ノードの他プロセッサの実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とをコンピュータに実行させる。
【００１８】
本発明の第４のプログラムは、自計算機ノードが処理未割付状態になると、全計算機ノードについて処理未割付／否かの状態を記憶するノード状態記憶部や、全計算機ノードの処理能力情報を保持する記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、自分に配分した繰返し処理を実行する手順と、前記実行を終了すると、自計算機ノードの他プロセッサの実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とをコンピュータに実行させる。
【００１９】
本発明の第１のマルチプロセッサシステムにおけるループの並列実行方法は、マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方法であって、各プロセッサに結合された各記憶装置に、プロセッサ状態記憶部を設け、これに各プロセッサの処理能力情報を設定し、また各プロセッサの状態を処理未割付に初期設定する手順と、前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、前記処理制御部は、処理未割付状態になるとプロセッサ状態記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込み、演算処理部に渡す手順と、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、演算制御部の繰返し処理の実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順を有することを特徴とする。
【００２０】
本発明の第２のマルチプロセッサシステムにおけるループの並列実行方法は、マルチプロセッサシステムを構成する各プロセッサがループ処理を分担して並列実行する方法であって、各プロセッサに結合された各記憶装置に処理能力状態記憶部を設け、これに各プロセッサの処理能力情報を設定する手順と、前記各記憶装置にプロセッサ状態記憶部を設け、各プロセッサの状態を処理未割付に初期設定する手順と、前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、前記処理制御部は、処理未割付状態になるとプロセッサ状態記憶部や処理能力記憶部を参照し、処理未割付の他プロセッサが無いか、或いは自プロセッサが処理未割付プロセッサの内、最も処理能力の高いプロセッサになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込み、演算処理部に渡す手順と、全ての、未処理繰り返し記憶部とプロセッサ状態記憶部の自プロセッサ状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、演算制御部の繰返し処理の実行終了を受け、全てのプロセッサ状態記憶部の自プロセッサ状態を処理未割付状態に設定する手順を有することを特徴とする。
【００２１】
本発明の第３のマルチプロセッサシステムにおけるループの並列実行方法は、複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方法であって、各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、ノード状態記憶部を設け、これに各計算機ノードの処理能力情報を設定し、また各計算機ノードの状態を処理未割付に初期設定する手順と、前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、前記処理制御部は、自計算機ノードが処理未割付状態になるとノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、全ての、未処理繰り返し記憶部と計算機ノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、自計算機ノードの全プロセッサの繰り返し処理の実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とを有することを特徴とする。
【００２２】
本発明の第４のマルチプロセッサシステムにおけるループの並列実行方法は、複数の計算機ノードがノード間通信手段で接続され、各計算機ノードが複数のプロセッサを含むシステムにおいて、ループ処理を前記各計算機ノードで分担して並列実行する方法であって、各計算機ノードにおいて複数のプロセッサに結合された記憶装置に、処理能力状態記憶部を設け、これに各計算機ノードの処理能力情報を設定する手順と、前記各記憶装置にノード状態記憶部を設け、各計算機ノードの状態を処理未割付に初期設定する手順と、前記各記憶装置に、前記ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする手順と、前記各記憶装置に、前記ループの未処理の繰返し情報を記憶する未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定する手順とを備え、前記処理制御部は、自計算機ノードが処理未割付状態になると計算機ノード状態記憶部を参照し、処理未割付の他計算機ノードが無いか、或いは自計算機ノードが処理未割付計算機ノードの内、最も処理能力の高い計算機ノードになったことを確認する手順と、未処理繰り返し記憶部を参照し、この未処理繰返し情報から予め決められた数分の処理を取り込む手順と、全ての、未処理繰り返し記憶部とノード状態記憶部の自計算機ノード状態に、それぞれ残りの未処理繰返し情報、処理割付済み状態を設定する手順と、取り込んだ繰り返し処理を自計算機ノードの複数のプロセッサに配分する手順と、自計算機ノードの全プロセッサの繰り返し処理の実行終了を確認し、全てのノード状態記憶部の自計算機ノード状態を処理未割付状態に設定する手順とを有することを特徴とする。
【発明の効果】
【００２３】
第１の効果は、プロセッサの処理能力が均一でないマルチプロセッサシステムにおいて、ループの繰り返しの分割数よりプロセッサ数が多い場合、本来そのシステムがもつ処理能力を効率的に利用できることにある。
【００２４】
即ち、ループの繰り返しの分割数（ループカウント／１つのプロセッサ或いはノードが１回当たりに取り込むカウント）よりプロセッサ数或いはノード数が多い場合、高い処理能力をもつプロセッサ或いはノードに優先して処理が割り付けられる。
【００２５】
ループの繰り返しの分割数が、プロセッサ数或いはノード数より大きい場合には、高い処理能力をもつプロセッサ或いはノードの取込回数が多くなり、決して処理能力の低いプロセッサ或いはノードの取込回数未満にはならない。
【００２６】
その理由は、本発明の並列実行方法によれば、処理能力の大きいプロセッサから順番に処理を割り当てるためである。
【発明を実施するための最良の形態】
【００２７】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２８】
図１は、本発明のマルチプロセッサシステムにおけるループの並列実行方式の第１実施形態を含むマルチプロセッサシステムの構成を示すブロック図である。
【００２９】
図１を参照し、本発明の第１の実施形態に係わるマルチプロセッサシステムは、複数のプロセッサ（中央処理装置；コンピュータ；データ処理装置）１１〜１４とそれぞれに結合された記憶装置２１〜２４とプロセッサ間を結合するネットワーク７を含む。
【００３０】
記憶装置２１〜２４にはそれぞれプログラムモジュール３１〜３４が格納され、またプロセッサ状態記憶部４１〜４４、未処理繰返し記憶部５１〜５４が設けられている。
【００３１】
プロセッサ１１〜１４はそれぞれプログラムモジュール３１〜３４により制御され動作する。
【００３２】
プログラムモジュール３１〜３４はそれぞれ処理制御部３１１〜３４１および演算処理部３１２〜３４２を備える。
【００３３】
演算処理部３１２，３２２，・・３４２は並列処理対象のループ処理プログラムやその制御パラメータ等であり、これらは少なくともプログラム部分は同じ内容である。
【００３４】
プロセッサ状態記憶部４１，４２，・・４４のそれぞれには、プロセッサ１１，１２，・・１４の処理能力値及び処理の割付け状態を保持する。
【００３５】
各記億部の内容は同じ内容に同期して更新されるが、全プロセッサの処理能力値はシステムの初期設定等で一度設定すると更新しない様にしてもよい。
【００３６】
未処理繰返し記憶部５１，５２，・・５４は、それぞれプログラムモジュール３１，３２，・・３４に含まれるループの未処理の繰返し情報を保持する。各記億部の内容は同じ内容に同期して更新される。
【００３７】
プログラムモジュール３１はプロセッサ１１を通じて概略次の様に動作する。
【００３８】
処理制御部３１１はプロセッサ状態記憶部４１を参照し、自プロセッサが、処理未割付となっているプロセッサの中で処理能力が最大のプロセッサとなる迄待つ。
【００３９】
次に、未処理繰返し記憶部５１を参照し、自プロセッサが処理すべき繰返しの値を演算処理部３１２に渡すと共に、残りの未処理繰返しを全プロセッサの未処理繰返し記憶部５１，５２，・・５４に設定する。
【００４０】
更に、全プロセッサのプロセッサ状態記憶部４１，４２，・・４４の自プロセッサの状態を処理割付済みとする。
【００４１】
その後、演算処理部３１２は処理制御部３１１から渡された繰返しの処理を実行する。
【００４２】
プログラムモジュール３２，３３の動作も、上で説明したプログラムモジュール３１と同様である。
【００４３】
次に、図１のブロック図及び図２のフローチャートを参照して本発明の第１の実施形態の動作について詳細に説明する。
【００４４】
先ず、プロセッサ１１〜１４がそれぞれの記憶装置２１〜２４に、ループ処理を含む演算処理部とこれの実行を制御する処理制御部を含むモジュールをロードする。
【００４５】
次に、プロセッサ１１〜１４が処理制御部３１１〜３４１の初期設定ルーチンに従って、それぞれの記憶装置２１〜２４に未処理繰返し記憶部を設け、これに並列実行の対象とするループの繰返し情報を初期設定し、プロセッサ状態記憶部を設け、これに各プロセッサの処理能力を設定し、また各プロセッサの状態を処理未割付に初期設定する（図２のステップＡ１）。
【００４６】
準備処理を終えると、プロセッサ１１において、プログラムモジュール３１内の処理制御部３１１はプロセッサ状態記憶部４１を参照し、プロセッサ１１以外に処理未割付となっているプロセッサがあるかどうかを調べる（ステップＡ２）。
【００４７】
もし、処理未割付となっているプロセッサが存在しなければ、ステップＡ３に進む。処理未割付となっているプロセッサが存在する場合は、該プロセッサの処理能力とプロセッサ１１の処理能力を比較する（ステップＡ３）。
【００４８】
該プロセッサの処理能力の方が自プロセッサより大きい場合は、ステップＡ２に戻る。そうでなければ、次に、未処理繰返し記憶部５１を参照し、未処理の繰返しが存在しているかどうかを調べる（ステップＡ４）。
もし未処理の繰返しが残っていなければ、実行を終了する。未処理の繰返しが存在していたら、次に、未処理繰返し記憶部５１に格納されている未処理の繰返し（Ｉ）を演算処理部３１２に渡す（ステップＡ５）。
【００４９】
更に、ネットワーク７を介してすべてのプロセッサの未処理繰返し記憶部５１，５２，・・５４にＩ＋Ｌ（Ｌ：１つのプロセッサで１回に処理する繰返しの数）を格納する（ステップＡ６）。
【００５０】
次に、全プロセッサのプロセッサ状態記憶部４１，４２，・・４４のプロセッサ１１の状態を処理割付済みに設定する（ステップＡ７）。
【００５１】
次に、演算処理部３１２で割付けられた繰返し（ＩからＩ＋Ｌ−１）を実行する。例えば、入力データ配列Ａ，ＢについてＡ（Ｉ）、Ｂ（Ｉ）を取り込み、演算をし結果を出力配列Ｘ（Ｉ）に設定する。次にＡ（Ｉ＋１）、Ｂ（Ｉ＋１）を設定し、演算をし結果をＸ（Ｉ＋１）に設定し、以降Ｘ（Ｉ＋Ｌ−１）への出力まで繰り返し処理する（ステップＡ８）。
【００５２】
演算処理部３１２が割り付けられた繰り返しを全て実行し終えると、処理制御部３１１は全プロセッサのプロセッサ状態記憶部４１，４２，・・４４のプロセッサ１１の状態を処理未割付に設定し、ステップＡ１に戻る（ステップＡ９）。
【００５３】
プロセッサ１２〜１４についても、上記に説明したプロセッサ１１と同様に動作する。
【００５４】
以上の説明では、プロセッサ状態記憶部４１〜４４に全プロセッサのプロセッサ状態（処理未割付／割付済み）の他、全プロセッサの処理能力値を記憶する例を示したが、全プロセッサの処理能力値は別の記憶部に保持する例もある。
【００５５】
また、処理能力情報として、処理能力値でなくてよく、順位であってもよい。
【００５６】
また、プロセッサ間の通信手段はネットワークに限らず、バスとアービタ等のバス制御装置であってもよい。
【００５７】
本発明の第１の実施形態では、ループの繰返しの処理をプロセッサに割付けるときにプロセッサ状態記憶部４１等にプロセッサの処理能力を保持し、処理が未割付のプロセッサのうち最も処理能力の高いプロセッサに対して優先して処理が割付けられるように構成されているため、必ず利用可能なプロセッサのうち最も処理能力の高いものを使用して処理を行うため、マルチプロセッサシステムの使用効率を高くできる。
【００５８】
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。図３は本発明のマルチプロセッサシステムにおけるループの並列実行方式の第２の実施形態を含むマルチプロセッサシステムの構成を示すブロック図である。
【００５９】
図３を参照し、本発明の第２の実施形態に係わるマルチプロセッサシステムは、複数の計算機ノード１〜４とそれらのノード間を結合するネットワーク７を含む。以下計算機ノードを単にノードと呼ぶ。
【００６０】
ノード１は、複数のプロセッサ１１１，１１２とこれらに結合された一つの記憶装置２１を含み、記憶装置２１にはプログラムモジュール３１が格納され、ノード状態記憶部４１Ａ、未処理繰返し記憶部５１が設けられている。
【００６１】
プロセッサ１１１，１１２は等価な処理性能を持ち、プログラムモジュール３１により制御される。
【００６２】
プログラムモジュール３１は処理制御部３１１および演算処理部３１２を備える。
【００６３】
ノード状態記憶部４１Ａは、計算機ノード１の処理能力値および処理の割付け状態を保持する。
【００６４】
未処理繰返し記憶部５１は、プログラムモジュール３１に含まれるループの未処理の繰返しを保持する。
【００６５】
ノード２〜４もノード１と同様の構成となっている。但し、ノード１中のプロセッサ１１１或いは１１２の処理性能とノード２中のプロセッサ１２１或いは１２２の処理性能、ノード４中のプロセッサ１４１或いは１４２の処理性能は異なる。
【００６６】
ノード１において、プログラムモジュール３１はプロセッサ１１１，１１２を通じて概略次の様に動作する。
【００６７】
処理制御部３１１はプロセッサ１１１を通じて、ノード状態記憶部４１Ａを参照し、自ノードが、処理未割付となっているノードの中で処理能力最大のノードとなる迄待つ。
【００６８】
次に、未処理繰返し記憶部５１を参照し、自ノードが処理すべき繰返しの値を演算処理部に渡すとともに、残りの未処理繰返しを全ノードの未処理繰返し記憶部５１，５２，・・５４に設定する。
【００６９】
更に、全ノードのノード状態記憶部４１Ａ，４２Ａ，・・４４Ａのノード１の状態を処理割付済みとする。その後、演算処理部３１２は処理制御部３１１から渡された繰返しの処理をノード内の複数のプロセッサ１１１、１１２を使用して並列実行する。
【００７０】
ノード２〜４における、プログラムモジュール３２〜３４も、上で説明したノード１のプログラムモジュール３１と同様に動作する。
【００７１】
次に、図３のブロック図及び図４のフローチャートを参照して本発明の第２の実施形態の動作について詳細に説明する。
【００７２】
ノード１においては、プロセッサ１１１が処理制御部３１１を実行し、演算処理はプロセッサ１１１，１１２がそれぞれ分担して行う。
【００７３】
計算機ノード１〜４においてプロセッサ１１１，１２１，・・１４１が、それぞれ記憶装置２１，２２，・・２４に、未処理繰返し記憶部５１，５２，・・５４を設け、これに並列実行の対象とするループの繰返し情報を初期設定する。
【００７４】
次に、記憶装置２１，２２，・・２４に、ノード状態記憶部４１Ａ，４２Ａ、・・４４Ａを設け、これに全計算機ノードの処理能力を設定し、また全計算機ノードの状態を処理未割付に初期設定する（図４のステップＢ１）。
【００７５】
準備処理を終えると、プロセッサ１１１において、プログラムモジュール３１内の処理制御部３１１はノード状態記憶部４１Ａを参照し、ノード１以外に処理未割付となっているノードがあるかどうかを調べる（ステップＢ２）。
【００７６】
もし、処理未割付となっているノードが存在しなければ、ステップＢ４に進む。処理未割付となっているノードが存在する場合は、該ノードの処理能力とノード１の処理能力を比較する（ステップＢ３）。
【００７７】
該ノードの処理能力の方が自ノードより大きい場合は、ステップＢ１に戻る。そうでなければ、次に、未処理繰返し記憶部５１を参照し、未処理の繰返しが存在しているかどうかを調べる（ステップＢ４）。
【００７８】
もし未処理の繰返しが残っていなければ、実行を終了する。未処理の繰返しが存在していたら、次に、未処理繰返し記憶部５１に格納されている未処理の繰返し（Ｉ）を演算処理部３１２に渡す（ステップＢ５）。
【００７９】
更に、ネットワーク７を介してすべてのノードの未処理繰返し記憶部５１，５２，・・５４にＩ＋Ｌ（Ｌ：１つのノードで１回に処理する繰返しの数）を格納する（ステップＢ６）。
【００８０】
次に、全ノードのノード状態記憶部４１Ａ，４２Ａ，・・４４Ａのノード１の状態を処理割付済みに設定する（ステップＢ７）。
【００８１】
取り込んだ繰り返し処理（Ｉ〜（Ｉ＋Ｌ−１））をプロセッサ１１１，１１２に分配する。プロセッサ１１１，１１２の処理能力が等価であるので、それぞれにＩ〜（Ｉ＋Ｍ−１）、（Ｉ＋Ｍ）〜（Ｉ＋Ｌ−１）を分配する。ここでＬ＝２Ｍとする。
【００８２】
またこれらの繰り返しのインデックス値の開始値、終了値は演算処理部３１２のプロセッサ１１１，１１２向けのパラメータエリアに設定する（ステップＢ８）。
【００８３】
プロセッサ１１１は、自ノードの他プロセッサ（プロセッサ１１２）に演算処理部３１２の実行開始を指示し、自分も演算処理部３１２の実行を開始する（ステップＢ９）。
【００８４】
ノード１の各プロセッサが演算処理部の割り付けられた繰り返し処理を実行する（ステップＢ１０）。
【００８５】
プロセッサ１１１は、繰り返し処理を終了すると、プロセッサ１１２の終了状態も確認し（ステップＢ１１）、全ノードのノード状態記憶部４１Ａ〜４４Ａのノード１の状態を処理未割付に設定し、ステップＢ２に戻る（ステップＢ１２）。
【００８６】
ノード２〜４についても、上記に説明したノード１と同様に動作する。例えばノード２では、プロセッサ１２１がプロセッサ１１１と同様の制御処理をし、繰り返しの演算処理はプロセッサ１２１と１２２とで並列処理をする。
【００８７】
以上の説明では、ノード状態記憶部４１Ａ〜４４Ａに全ノードの状態（処理未割付／割付済み）の他、全ノードの処理能力値を記憶する例を示したが、全ノードの処理能力値は別の記憶部に保持する例もある。
【００８８】
また、処理能力情報として、処理能力値でなくてよく、順位であってもよい。
【００８９】
本発明の第２の実施形態では、ループの繰返しの処理をノードに割付けるときにノード状態記憶部４１Ａ等に全ノードについて、ノードの処理能力を保持し、処理が未割付のノードのうち最も処理能力の高いノードに対して優先して処理が割付けられるように構成されているため、必ず利用可能なノードのうち最も処理能力の高いものを使用して処理を行うため、マルチノードタイプのマルチプロセッサシステムの使用効率を高くできる。
【図面の簡単な説明】
【００９０】
【図１】本発明のマルチプロセッサシステムにおけるループの並列実行方式の第１実施形態を含むマルチプロセッサシステムの構成を示すブロック図。
【図２】本発明の第１実施形態の動作を示すフローチャート。
【図３】本発明のマルチプロセッサシステムにおけるループの並列実行方式の第２の実施形態を含むマルチノードタイプのマルチプロセッサシステムの構成を示すブロック図。
【図４】本発明の第２実施形態の動作を示すフローチャート。
【符号の説明】
【００９１】
１〜４    計算機ノード
１１〜１４    プロセッサ
１１１，１１２〜１４１，１４２    プロセッサ
２１〜２４    記憶装置
３１〜３４    プログラムモジュール
３１１〜３４１    処理制御部
３１２〜３４２    演算処理部
４１〜４４    プロセッサ状態記憶部
４１Ａ〜４４Ａ    ノード状態記憶部
５１〜５４    未処理繰返し記憶部
７    ネットワーク
【図１】
2006011912.tif 000003
【図２】
2006011912.tif 000004
【図３】
2006011912.tif 000005
【図４】
2006011912.tif 000006