(57)【要約】【課題】複数のＰＥ（プロセッサエレメント）による並列処理をより高速かつ効率的に実行すること。【解決手段】スレッド＃０はスレッド＃１へ引き渡すデータに、スレッド＃１の起動指示を添付してＰＥ＃１に送信する。この指示がＰＥ＃１のメモリに入力されると、ＰＥ＃１への割り込みが発生してスレッド＃１が起動される。また、スレッド＃１はスレッド＃０へ引き渡すデータ（処理結果）にスレッド＃１の終了通知を添付し、この通知がＰＥ＃１のメモリからＰＥ＃０へ送出されたのを契機に、ＰＥ＃０への割り込みが発生し、スレッド＃１が終了される。【選択図】        図３
2005078244.tif 000002
【特許請求の範囲】
【請求項１】
第１のＰＥ（プロセッサエレメント）で実行中の第１のプログラムから第２のＰＥに第２のプログラムを実行させるプログラム実行方法において、
前記第１のプログラムから前記第２のＰＥに前記第２のプログラムの起動を意味する情報および前記第２のプログラムに引き渡す情報の少なくともいずれかを送信する送信工程と、
前記送信工程で送信された情報を受信する受信工程と、
前記受信工程で受信された情報中に前記第２のプログラムの起動を意味する情報が含まれているか否かを判定する判定工程と、
前記判定工程で、前記受信工程で受信された情報中に前記第２のプログラムの起動を意味する情報が含まれていると判定された場合に、前記第２のＰＥで前記第２のプログラムを起動する起動工程と、
を含むことを特徴とするプログラム実行方法。
【請求項２】
前記起動工程で起動された前記第２のプログラムから前記第１のプログラムに前記第２のプログラムの終了を意味する情報および前記第１のプログラムに引き渡す情報の少なくともいずれかを送信する第２の送信工程と、
前記第２の送信工程で送信された情報中に前記第２のプログラムの終了を意味する情報が含まれているか否かを判定する第２の判定工程と、
前記第２の判定工程で、前記第２の送信工程で送信された情報中に前記第２のプログラムの終了を意味する情報が含まれていると判定された場合に、前記第２のＰＥで前記第２のプログラムを終了する終了工程と、
を含むことを特徴とする前記請求項１に記載のプログラム実行方法。
【請求項３】
前記判定工程および前記第２の判定工程では、前記情報中に前記第２のプログラムの起動もしくは終了を意味する情報が含まれているか否かを前記第２のＰＥのメモリに具備された検出回路により判定することを特徴とする前記請求項１または請求項２に記載のプログラム実行方法。
【請求項４】
第１のＰＥで実行中の第１のプログラムから第２のＰＥに第２のプログラムを実行させるプログラム実行装置において、
前記第２のＰＥに前記第２のプログラムの起動を意味する情報および前記第２のプログラムに引き渡す情報の少なくともいずれかを送信する送信手段と、
前記送信手段により送信された情報を受信する受信手段と、
前記受信手段により受信された情報中に前記第２のプログラムの起動を意味する情報が含まれているか否かを判定する判定手段と、
前記判定手段により、前記受信手段により受信された情報中に前記第２のプログラムの起動を意味する情報が含まれていると判定された場合に、前記第２のプログラムを起動する起動手段と、
を備えることを特徴とするプログラム実行装置。
【請求項５】
前記起動手段により起動された前記第２のプログラムの終了を意味する情報および前記第１のプログラムに引き渡す情報の少なくともいずれかを送信する第２の送信手段と、
前記第２の送信手段により送信された情報中に前記第２のプログラムの終了を意味する情報が含まれているか否かを判定する第２の判定手段と、
前記第２の判定手段により、前記第２の送信手段により送信された情報中に前記第２のプログラムの終了を意味する情報が含まれていると判定された場合に、前記第２のプログラムを終了する終了手段と、
を備えることを特徴とする前記請求項４に記載のプログラム実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のＰＥ（Processing Element：プロセッサエレメント）間で連携してプログラムを実行するプログラム実行方法およびプログラム実行装置に関する。
【背景技術】
【０００２】
多種多様な機能を備えた巨大なプログラムを、ひとまとまりの機能を実現する部分プログラムに分割可能に作成しておき、それらのうち必要なものだけを選択的に組み合わせることで、処理の効率化を図る技術は従来から存在していた（たとえば、特許文献１参照。）。
【０００３】
そして近年の計算機システムでは、複数のＰＥを搭載し、プログラム中の各部分プログラムをこれらのＰＥに配分することで処理能力の向上を図る例がある。その方式には大別して、ＰＥ間でメモリを共有する「共有メモリ型マルチプロセッサ方式（Shared-Memory Multiprocessors）」と、ＰＥごとに専用のメモリを設ける「分散メモリ型マルチプロセッサ方式（Distributed-Memory Multiprocessors）」との２種類がある。
【０００４】
そしてこのようなシステムにおいては、ＭＰＩ（Message-Passing Interface）などのプロセッサ間通信機構を用いることで、ＳＰＭＤ（Single-Program,Multiple-Data）プログラミングにもとづくプログラムが実行されることが多い。
【０００５】
図７はＳＰＭＤプログラミングにもとづいて作成されたプログラム（以下では単に「ＳＰＭＤプログラム」と呼ぶ）の一例を示す説明図である。図示するプログラムは複数あるＰＥのそれぞれで実行される。プログラムは同一でも、ＰＥのＩＤ（番号）により処理が分岐するので、複数のＰＥによる並列処理が実現される。たとえば図示するプログラムでは、「ｍｙｒａｎｋ」が上記ＩＤを示す変数であり、ｍｙｒａｎｋ＝０のＰＥ（ＰＥ＃０）ではＴｈ０（スレッド＃０）が、ｍｙｒａｎｋ＝１のＰＥ（ＰＥ＃１）ではＴｈ１（スレッド＃１）が、ｍｙｒａｎｋ＝２のＰＥ（ＰＥ＃２）ではＴｈ２（スレッド＃２）が、ｍｙｒａｎｋ＝３のＰＥ（ＰＥ＃３）ではＴｈ３（スレッド＃３）が、それぞれ実行されることになる。
【０００６】
ただ、少なくとも分散メモリ型マルチプロセッサ方式の場合は、個々のプロセッサが実行するのはプログラムの一部のみ（部分プログラムのみ）であるにもかかわらず、すべてのＰＥにプログラムの全体が配分されるので、各ＰＥにそれだけの容量のメモリを用意しなければならずコストがかさんでしまう。そこで、プログラムをＳＰＭＤでなく、ＭＰＭＤ（Multiple-Program,Multiple-Data）プログラミングにもとづいて作成することが考えられている。
【０００７】
ＭＰＭＤにもとづくプログラミングでは、ＳＰＭＤのように各ＰＥにより実行される部分プログラムをすべて結合したようなプログラムでなく、端的にそれぞれのＰＥ向けのプログラムを作成する。図８はＰＥ＃０、図９はＰＥ＃１、図１０はＰＥ＃２、図１１はＰＥ＃３向けのプログラムの一例をそれぞれ示す説明図である。図示するように各ＰＥ用のプログラムには、他ＰＥ用の部分プログラムが含まれないので、その分各ＰＥのメモリの容量を小さくすることができる（なお、ＭＰＭＤプログラミングの詳細については下記非特許文献１参照。）。
【０００８】
【特許文献１】特開２００１−２８２５１３号公報
【非特許文献１】Ｐ．パチェコ著  「ＭＰＩ並列プログラミング」培風館
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、分散メモリ型マルチプロセッサ方式のもとでＭＰＭＤプログラミングにもとづくプログラム（以下では単に「ＭＰＭＤプログラム」と呼ぶ）を実行する場合、ＭＰＩによるプロセッサ間の通信の前／後に、相手先のプロセッサのスレッド（またはタスク、以下同じ）の起動／終了が必要であった。
【００１０】
図８〜図１１に示した各プログラムは、相手先のスレッドがすでに起動していることを前提としているが、もし相手先のスレッドが起動されていない場合、たとえば図８のプログラムでは「ＭＰＩ＿Ｓｅｎｄ」を呼び出して他ＰＥにデータを送信する前に、まずスレッド起動用のＡＰＩを呼び出して、当該他ＰＥにスレッドの起動を指示しなければならない。逆に、データを渡して処理を依頼したＰＥから「ＭＰＩ＿Ｒｅｃｖ」でその結果を受信した後は、スレッド終了用のＡＰＩを呼び出して、当該ＰＥにスレッドの終了を指示しなければならない。
【００１１】
ＭＰＩなどを利用した非同期な遠隔手続き呼び出し（Remote Procedure Call）における、スレッドの起動／終了の概念を図１２に、データ転送の概念を図１３に示す。図１２および図１３において、網掛けで示した部分はスレッドが処理を実行している状態、白抜きで示した部分はスレッドが処理を一時停止している状態、直線で示した部分はスレッドが起動されていない状態をそれぞれ意味している。
【００１２】
ＰＥ＃０上のスレッド＃０は、ＰＥ＃１上のスレッド＃１を起動（図１２「ＳＴＡＲＴ」）してスレッド＃１による処理の完了を待ち（図１２「ＷＡＩＴ」）、当該処理が完了するとスレッド＃１を終了する（図１２「ＥＸＩＴ」）。
【００１３】
この起動から終了までの間（スレッド＃１の起動中）に、スレッド＃０は処理に必要なデータをスレッド＃１へ送信し（図１３上側の「ＭＯＶＥ」）、全データの送信完了まで待ちに入る（図１３上側の「ＷＡＩＴ」）。そして送信完了後、スレッド＃０はスレッド＃１に処理結果を返信するよう指示するとともに（図１３下側の「ＭＯＶＥ」）、全データの受信完了まで待ちに入り（図１３下側の「ＷＡＩＴ」）、受信完了後に再び処理を開始する。
【００１４】
このように従来技術においては、複数のＰＥによる並列処理を実現するには、（１）スレッドの起動（２）データの送信（３）データの受信（４）スレッドの終了、という４つの手順を踏む必要があり、これに対応して、ＭＰＭＤプログラムにも少なくとも４種類の命令が含まれていた。そのため、プロセッサ間で処理を分散するためのオーバーヘッドが大きくなり、それだけ処理時間が長くかかってしまうという問題があった。
【００１５】
この発明は、上述した従来技術による問題点を解消するため、複数のＰＥによる並列処理をより高速かつ効率的に実行することが可能なプログラム実行方法およびプログラム実行装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するため、この発明にかかるプログラム実行方法およびプログラム実行装置は、第１のＰＥで実行中の第１のプログラムから第２のＰＥに第２のプログラムを実行させるプログラム実行方法またはプログラム実行装置において、前記第２のＰＥが、前記第１のプログラムから受信した情報中に前記第２のプログラムの起動を意味する情報が含まれている場合に、前記第２のプログラムを起動することを特徴とする。
【００１７】
この発明によれば、第１のＰＥで実行中の第１のプログラムは、第２のプログラムが使用するデータに当該プログラムの起動を意味する値を添付して送信するだけで、すなわち、あらかじめ第２のプログラムを起動しておかなくても、当該送信先のＰＥのプログラムを起動することができる。
【００１８】
また、この発明にかかるプログラム実行方法およびプログラム実行装置は、さらに前記第２のＰＥが、前記第１のプログラムへ送信した情報中に前記第２のプログラムの終了を意味する情報が含まれている場合に、前記第２のプログラムを終了することを特徴とする。
【００１９】
この発明によれば、第１のＰＥで実行中の第１のプログラムは、第２のプログラムに当該プログラムの終了を意味する値を送信させるだけで、当該送信元のプログラムを終了させることができる。
【００２０】
また、この発明にかかるプログラム実行方法およびプログラム実行装置は、前記第１のプログラムから受信もしくは前記第１のプログラムへ送信した情報中に前記第２のプログラムの起動もしくは終了を意味する値が含まれているか否かを、前記第２のＰＥのメモリに具備された検出回路により判定することを特徴とする。
【００２１】
この発明によれば、プログラムの起動もしくは終了を専用のハードウエアにより高速に実行することができる。
【発明の効果】
【００２２】
本発明にかかるプログラム実行方法およびプログラム実行装置によれば、データ転送を契機としてその送信先や送信元のプログラムを起動もしくは終了するので、従来転送命令とは別に必要であった起動命令や終了命令の実行が不要となる分、複数のＰＥによる並列処理の高速化および効率化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この発明にかかるプログラム実行方法およびプログラム実行装置の好適な実施の形態を詳細に説明する。
【００２４】
この発明にかかるプログラム実行装置は、具体的には分散メモリ型マルチプロセッサ方式にもとづく計算機システムであり、プロセッサなどから構成されるｎ個のＰＥと、各ＰＥ専用のｎ個のメモリとが、相互接続網（Interconnection Network）により接続されている。そして各メモリには、スレッドの起動もしくは終了を意味する所定の値が入力した場合にその事実を検出するとともに、対応するプロセッサへ割り込みをかけて、スレッドを起動もしくは終了させる検出回路が設けられている。
【００２５】
図１および図２は、この発明にかかるプログラム実行装置における、複数ＰＥによる並列処理の手順を模式的に示す説明図である。以下では説明の便宜上ｎ＝２とし、ＰＥ＃０およびＰＥ＃１の連携を例として説明するが、ｎ＞２の場合も同様の手順となる。
【００２６】
まず、ＰＥ＃０で実行中のスレッド＃０は、ＰＥ＃１により実行されるスレッド＃１に処理を依頼するにあたって、スレッド＃１が必要とする入力データをＰＥ＃０用のメモリ（以下では「メモリ＃０」と呼ぶ）からＰＥ＃１用のメモリ（同「メモリ＃１」）に送信する。このとき上記データに、スレッドの起動を意味する所定の値を付加する（図１（１））。
【００２７】
そしてこれを受信したメモリ＃１の検出回路が、上記所定値を検出してＰＥ＃１に対する割り込み信号を発生し（図１（２））、これを受けたＰＥ＃１がスレッド＃１を起動する。この起動されたスレッド＃１が、メモリ＃０からメモリ＃１に送信されてきたデータを読み出して、所定の処理を実行する。
【００２８】
その後上記処理が終了すると、スレッド＃１はメモリ＃１に保存した上記処理の処理結果（スレッド＃１からの出力データ）に、スレッド＃１の終了を意味する所定の値を付加して、メモリ＃０に送信し（図２（３））、ＰＥ＃１によってスレッド＃１が終了される（図２（４））。そしてこの受信時に上記所定値を検出したメモリ＃０の検出回路が、ＰＥ＃０に対する割り込み信号を発生する（図２（５））。
【００２９】
図３は、図１のようにして複数ＰＥによる並列処理を実現する場合の各ＰＥの稼働状況を示す説明図である。実行中のスレッド＃０からの指示を受けたＰＥ＃０が、メモリ＃０内のデータおよびスレッド起動指示をＰＥ＃１へ送信すると（図３（１））、メモリ＃１から割り込みを受けたＰＥ＃１によりスレッド＃１が起動される（図３（２））。そして、起動したスレッド＃１からの指示を受けたＰＥ＃１により、メモリ＃１内の上記データが読み出されて（図３（３））、これをもとにスレッド＃１での処理がおこなわれる。
【００３０】
そしてその処理結果をスレッド＃１から受け取ったＰＥ＃１（図３（４））が、ＰＥ＃０に当該データおよびスレッド終了通知を送信する（図３（５））と同時に、ＰＥ＃１によりスレッド＃１が終了される（図３（６））。したがって、スレッド＃１は図３（２）から（６）までの間だけ起動状態となる。一方、スレッド＃０は終始起動中であるが、スレッド＃１の処理結果を待つ間だけ一時停止状態となる（なお、通常スレッド＃０はこの待ちの間に、スレッド＃１の処理とは無関係な別の処理をおこなうが、ここでは簡略化して説明している）。
【００３１】
図４は、図１のような複数ＰＥによる並列処理を従来技術のＭＰＩを利用して実現する具体例を示す説明図である。図示するようにデータの送信時には「ＭＰＩ＿Ｓｅｎｄ」、データの受信時には「ＭＰＩ＿Ｒｅｃｖ」を、それぞれ実行中のスレッドから呼び出して利用する。そしてこれらＭＰＩの機能自体は従来技術と同様であるが、起動を意味する特定の値を他のスレッドから受信したときは、特段の指示がなくともスレッドを起動し、終了を意味する特定の値を他のスレッドに送信したときは、特段の指示がなくとも実行中のスレッドを終了する点が、本発明の特徴となっている。
【００３２】
図５は、この発明にかかるプログラム実行装置の機能構成を示す説明図である。図中、実行部５００ａ／５０１ａは各ＰＥのプロセッサにより実現され、後述するスレッド起動／終了部５００ｅ／５０１ｅにより起動されたスレッドを実行する機能部である。
【００３３】
送信部５００ｂ／５０１ｂは実行部５００ａ／５０１ａからの指示に従い、後述する記憶部５００ｄ／５０１ｄ内のデータなどを他ＰＥに送信する機能部である。受信部５００ｃ／５０１ｃは、他ＰＥの送信部５００ｂ／５０１ｂから送信されてきたデータなどを受信する機能部である。なお、送信部５００ｂ／５０１ｂあるいは受信部５００ｃ／５０１ｃは、具体的には実行中のスレッドから呼び出された「ＭＰＩ＿Ｓｅｎｄ」あるいは「ＭＰＩ＿Ｒｅｃｖ」によりソフトウエア的に実現される。
【００３４】
記憶部５００ｄ／５０１ｄは各ＰＥのメモリにより実現され、実行部５００ａ／５０１ａにより実行されるスレッドのプログラムコード、他ＰＥに送信するデータや他ＰＥから受信したデータなどを保持する機能部である。スレッド起動／終了部５００ｅ／５０１ｅは各ＰＥのメモリに具備された検出回路により実現され、スレッドの起動を意味する値が受信部５００ｃ／５０１ｃから記憶部５００ｄ／５０１ｄに入力したのを検知すると、実行部５００ａ／５０１ａに指示してスレッドを起動させるとともに、スレッドの終了を意味する値が記憶部５００ｄ／５０１ｄから送信部５００ｂ／５０１ｂに出力されたのを検知すると、実行部５００ａ／５０１ａに指示して実行中のスレッドを終了させる機能部である。
【００３５】
図６は、この発明にかかるプログラム実行装置における、複数ＰＥによる並列処理の手順を示すフローチャートである。
【００３６】
まず、ＰＥ＃０側（処理を依頼する側）の実行部５００ａは、実行中のスレッド＃０からの指示に従い、ＰＥ＃１側への送信データを作成して記憶部５００ｄに保存する（ステップＳ６０１）。この送信データは、具体的には（１）相手先ＰＥに対するスレッドの起動指示（起動指示を意味する所定の値）、および（２）起動された当該スレッドへの入力データ、の二つからなる。
【００３７】
次に、実行部５００ａからの指示を受けた送信部５００ｂが、記憶部５００ｄ内の送信データをＰＥ＃１側に送信する（ステップＳ６０２）。そして、ＰＥ＃１側の受信部５０１ｃにより受信された上記データは、スレッド起動／終了部５０１ｅを経由して記憶部５０１ｄに保存されるが（ステップＳ６０３）、このときスレッド起動／終了部５０１ｅが上記データ中にスレッドの起動指示を検出するのを待って、検出すると（ステップＳ６０４：Ｙｅｓ）、スレッド起動／終了部５０１ｅからの指示を受けた実行部５０１ａによりスレッド＃１が起動される（ステップＳ６０５）。
【００３８】
その後、実行部５０１ａはスレッド＃１による処理が終了すると、スレッド＃１からの指示に従い、ＰＥ＃０側への送信データを作成して記憶部５０１ｄに保存する（ステップＳ６０６）。この送信データは、具体的には（１）相手先ＰＥに対するスレッドの終了通知（終了通知を意味する所定の値）、および（２）終了されたスレッドからの出力データ（処理結果）、の二つからなる。
【００３９】
記憶部５０１ｄ内の送信データはスレッド起動／終了部５０１ｅを経由して、実行部５０１ａからの指示を受けた送信部５０１ｂによりＰＥ＃０側に送信され（ステップＳ６０７）、スレッド＃１が終了される（ステップＳ６０８）。このときスレッド起動／終了部５００ｅが上記データ中にスレッドの終了通知を検出するのを待って、検出すると（ステップＳ６０９：Ｙｅｓ）、スレッド起動／終了部５００ｅからの指示を受けた実行部５００ａによりスレッド＃０が終了される（ステップＳ６１０）。
【００４０】
以上説明したように、この発明にかかるプログラム実行方法およびプログラム実行装置によれば、データを転送するだけでスレッドを起動もしくは終了できるので、データ転送前に相手先のスレッドの起動（起動用ＡＰＩの呼び出し）、データ転送後に相手先のスレッドの終了（終了用ＡＰＩの呼び出し）がそれぞれ必要であった従来技術より、処理の高速化および効率化を図ることが可能である。
【００４１】
なお、上述した実施の形態では、メモリ内の検出回路から割り込みをかけることでスレッドの実行制御をおこなったが、あるいは特定の値の検出時にメモリの特定領域にフラグを立てておき、プロセッサに定期的にこのフラグをチェックさせることで、スレッドの起動／終了を実現させるようにしてもよい。
【００４２】
（付記１）第１のＰＥ（Processing Element）で実行中の第１のプログラムから第２のＰＥに第２のプログラムを実行させるプログラム実行方法において、
前記第１のプログラムから前記第２のＰＥに前記第２のプログラムの起動を意味する情報および前記第２のプログラムに引き渡す情報の少なくともいずれかを送信する送信工程と、
前記送信工程で送信された情報を受信する受信工程と、
前記受信工程で受信された情報中に前記第２のプログラムの起動を意味する情報が含まれているか否かを判定する判定工程と、
前記判定工程で、前記受信工程で受信された情報中に前記第２のプログラムの起動を意味する情報が含まれていると判定された場合に、前記第２のＰＥで前記第２のプログラムを起動する起動工程と、
を含むことを特徴とするプログラム実行方法。
【００４３】
（付記２）前記起動工程で起動された前記第２のプログラムから前記第１のプログラムに前記第２のプログラムの終了を意味する情報および前記第１のプログラムに引き渡す情報の少なくともいずれかを送信する第２の送信工程と、
前記第２の送信工程で送信された情報中に前記第２のプログラムの終了を意味する情報が含まれているか否かを判定する第２の判定工程と、
前記第２の判定工程で、前記第２の送信工程で送信された情報中に前記第２のプログラムの終了を意味する情報が含まれていると判定された場合に、前記第２のＰＥで前記第２のプログラムを終了する終了工程と、
を含むことを特徴とする前記付記１に記載のプログラム実行方法。
【００４４】
（付記３）前記判定工程および前記第２の判定工程では、前記情報中に前記第２のプログラムの起動もしくは終了を意味する情報が含まれているか否かを前記第２のＰＥのメモリに具備された検出回路により判定することを特徴とする前記付記１または付記２に記載のプログラム実行方法。
【００４５】
（付記４）第１のＰＥで実行中の第１のプログラムから第２のＰＥに第２のプログラムを実行させるプログラム実行装置において、
前記第２のＰＥに前記第２のプログラムの起動を意味する情報および前記第２のプログラムに引き渡す情報の少なくともいずれかを送信する送信手段と、
前記送信手段により送信された情報を受信する受信手段と、
前記受信手段により受信された情報中に前記第２のプログラムの起動を意味する情報が含まれているか否かを判定する判定手段と、
前記判定手段により、前記受信手段により受信された情報中に前記第２のプログラムの起動を意味する情報が含まれていると判定された場合に、前記第２のプログラムを起動する起動手段と、
を備えることを特徴とするプログラム実行装置。
【００４６】
（付記５）前記起動手段により起動された前記第２のプログラムの終了を意味する情報および前記第１のプログラムに引き渡す情報の少なくともいずれかを送信する第２の送信手段と、
前記第２の送信手段により送信された情報中に前記第２のプログラムの終了を意味する情報が含まれているか否かを判定する第２の判定手段と、
前記第２の判定手段により、前記第２の送信手段により送信された情報中に前記第２のプログラムの終了を意味する情報が含まれていると判定された場合に、前記第２のプログラムを終了する終了手段と、
を備えることを特徴とする前記付記４に記載のプログラム実行装置。
【００４７】
（付記６）前記判定手段および前記第２の判定手段は、前記第２のＰＥのメモリに具備された検出回路により実現されることを特徴とする前記付記４または付記５に記載のプログラム実行装置。
【産業上の利用可能性】
【００４８】
本発明にかかるプログラム実行方法およびプログラム実行装置は、複数のＰＥにより連携して処理をおこなう計算機システムに有用であり、特に、各ＰＥ間の通信をＭＰＩ呼び出しによりおこなう計算機システムに適している。
【図面の簡単な説明】
【００４９】
【図１】この発明にかかるプログラム実行装置における、複数ＰＥによる並列処理の手順（特にスレッドの起動手順）を模式的に示す説明図である。
【図２】この発明にかかるプログラム実行装置における、複数ＰＥによる並列処理の手順（特にスレッドの終了手順）を模式的に示す説明図である。
【図３】図１のようにして複数ＰＥによる並列処理を実現する場合の各ＰＥの稼働状況を示す説明図である。
【図４】図１のような複数ＰＥによる並列処理を従来技術のＭＰＩを利用して実現する具体例を示す説明図である。
【図５】この発明にかかるプログラム実行装置の機能構成を示す説明図である。
【図６】この発明にかかるプログラム実行装置における、複数ＰＥによる並列処理の手順を示すフローチャートである。
【図７】従来技術によるＳＰＭＤプログラムの一例を示す説明図である。
【図８】従来技術によるＭＰＭＤプログラム（ＰＥ＃０用）の一例を示す説明図である。
【図９】従来技術によるＭＰＭＤプログラム（ＰＥ＃１用）の一例を示す説明図である。
【図１０】従来技術によるＭＰＭＤプログラム（ＰＥ＃２用）の一例を示す説明図である。
【図１１】従来技術によるＭＰＭＤプログラム（ＰＥ＃３用）の一例を示す説明図である。
【図１２】従来技術におけるＰＥ間でのスレッドの起動／終了を概念的に示す説明図である。
【図１３】従来技術におけるＰＥ間でのデータ転送を概念的に示す説明図である。
【符号の説明】
【００５０】
５００ａ，５０１ａ  実行部
５００ｂ，５０１ｂ  送信部
５００ｃ，５０１ｃ  受信部
５００ｄ，５０１ｄ  記憶部
５００ｅ，５０１ｅ  スレッド起動／終了部
【図１】
2005078244.tif 000003
【図２】
2005078244.tif 000004
【図３】
2005078244.tif 000005
【図４】
2005078244.tif 000006
【図５】
2005078244.tif 000007
【図６】
2005078244.tif 000008
【図７】
2005078244.tif 000009
【図８】
2005078244.tif 000010
【図９】
2005078244.tif 000011
【図１０】
2005078244.tif 000012
【図１１】
2005078244.tif 000013
【図１２】
2005078244.tif 000014
【図１３】
2005078244.tif 000015