(57)【特許請求の範囲】
【請求項１】
コンピュータに、
並列計算用のプログラムからノード番号に関する処理を抽出する抽出工程と、
当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化工程と、
ノード番号の種類の数が予め決められた閾値以上である場合に、前記並列計算用のプログラム内に含まれる複数の分岐条件の融合を示す情報を入力する第１入力工程と、
前記分岐条件の融合を示す情報に基づいて、前記複数の分岐条件を融合する融合工程と
を実行させることを特徴とするコンパイル方法。
【請求項２】
前記コンパイル方法はさらに、
前記コンピュータに、
前記抽出工程で前記ノード番号に関する処理が抽出されない場合に、当該処理が抽出されなかった並列計算用のプログラム上の位置を示す情報を出力する出力工程と、
前記並列計算用のプログラム上の位置を示す情報に基づいて、前記並列計算用のプログラムに補助情報を入力する入力工程と
を実行させることを特徴とする請求項１のコンパイル方法。
【請求項３】
前記コンパイル方法はさらに、
計算ノードが複数のＣＰＵ及び単一のメモリを有する場合に、前記単一のメモリに配布される実行可能プログラムの数を減らすための変換式で且つ前記並列計算用のプログラムで利用するノードの番号を各ＣＰＵに割り当てられているノード番号に変換する変換式を示すコードを入力する第２入力工程と、当該入力されたコードに基づいて前記並列計算用のプログラムで利用するノード番号を各ＣＰＵに割り当てられているノード番号に変換する変換工程を含むことを特徴とする請求項１又は２のコンパイル方法。
【請求項４】
コンピュータに、
並列計算用のプログラムからノード番号に関する処理を抽出する抽出工程と、
当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化工程と、
ノード番号の種類の数が予め決められた閾値以上である場合に、前記並列計算用のプログラム内に含まれる複数の分岐条件の融合を示す情報を入力する第１入力工程と、
前記分岐条件の融合を示す情報に基づいて、前記複数の分岐条件を融合する融合工程と、
前記最適化工程で作成された実行可能プログラムを、対応する計算ノードに配布する配布工程と、
当該配布された実行可能プログラムを、前記対応する計算ノードに実行させる実行工程と
を実行させることを特徴とするプログラム実行方法。
【請求項５】
コンピュータを、
並列計算用のプログラムからノード番号に関する処理を抽出する抽出手段と、
当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化手段と、
ノード番号の種類の数が予め決められた閾値以上である場合に、前記並列計算用のプログラム内に含まれる複数の分岐条件の融合を示す情報を入力する第１入力手段と、
前記分岐条件の融合を示す情報に基づいて、前記複数の分岐条件を融合する融合手段と
して機能させることを特徴とするプログラム。
【請求項６】
コンピュータに、
並列計算用のプログラムからノード番号に関する処理を抽出する抽出工程と、
当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化工程と、
ノード番号の種類の数が予め決められた閾値未満である場合に、前記並列計算用のプログラム内に含まれる分岐条件の分離を示す情報を入力する第３入力工程と、
前記分岐条件の分離を示す情報に基づいて、前記分岐条件を分離する分離工程と
を実行させることを特徴とするコンパイル方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンパイル方法、プログラム実行方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、条件分岐命令によるif-then-else文に関して、余分な分岐処理を削除し高速に処理する条件分岐命令の制御装置が知られている。
【０００３】
また、実際には実行不要であるにもかかわらず、従来実行不要であることが判定できなかった命令を削除する実行不要命令の削除方法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１６０７７９号公報
【０００５】
【特許文献２】特開２００１−２４９８１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上記条件分岐命令の制御装置及び上記実行不要命令の削除方法は、複数の計算ノードで計算を並列的に実行する並列計算機を想定していない。上記条件分岐命令の制御装置又は上記実行不要命令の削除方法が並列計算機に適用された場合、並列計算用プログラムに対応する１つの実行可能プログラムが各計算ノードに配布され、各計算ノードで実行される。この場合、各計算ノードで実行される実行可能プログラムは、当該計算ノードで実行されないコードを含むため、並列計算機における処理速度の低下及びプログラムコードに関する無駄が発生する。プログラムコードに関する無駄は、例えば、プログラムコードが消費するメモリ容量の無駄、又は命令キャッシュ容量の無駄等である。
【０００７】
上記課題に鑑み、開示されたコンパイル方法、プログラム実行方法及びプログラムは、処理速度を高速化でき、且つメモリ使用量を削減することができることを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、開示されたコンパイル方法は、コンピュータに、並列計算用のプログラムからノード番号に関する処理を抽出する抽出工程と、当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化工程と、ノード番号の種類の数が予め決められた閾値以上である場合に、前記並列計算用のプログラム内に含まれる複数の分岐条件の融合を示す情報を入力する第１入力工程と、前記分岐条件の融合を示す情報に基づいて、前記複数の分岐条件を融合する融合工程とを実行させる。
【発明の効果】
【０００９】
開示されたコンパイル方法、プログラム実行方法及びプログラムによれば、処理速度を高速化でき、且つメモリ使用量を削減することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る並列計算機の概略構成図である。
【図２】フロントエンドノード２及び計算ノード３〜７の概略構成図である。
【図３】（Ａ）及び（Ｂ）は、ＳＰＭＤプログラムのコードの一例を示す図である。
【図４】実行可能プログラムの作成から実行までの処理を示すフローチャートである。
【図５】図４のステップＳ１のコンパイルの処理を詳細に示すフローチャートである。
【図６】第２の実施の形態に係る並列計算機の概略構成図である。
【図７】図５のコンパイルの処理の変形例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１２】
（第１の実施の形態）
図１は、第１の実施の形態に係る並列計算機の概略構成図である。
【００１３】
図１において、並列計算機１は、フロントエンドノード２、及び計算ノード３〜７を備えている。フロントエンドノード２及び計算ノード３〜７は、計算処理を行う計算サーバ等のハードウエアである。フロントエンドノード２は、ＳＰＭＤ（Single-Program, Multiple-Data）プログラム１１、コンパイラ１２、実行可能プログラム１３〜１５を備え、計算ノード３〜７に接続されている。尚、図１中の「Ｒ」は各計算ノードのノード番号を示す。例えば、「Ｒ＝０」は、計算ノード３のノード番号が０であることを示し、「Ｒ＝Ｎ」は、計算ノード７のノード番号がＮ（Ｎ：自然数）であることを示す。
【００１４】
各計算ノードは、ＣＰＵ（Central Processing Unit）２１−Ｒ及びメモリ２２−Ｒを有する。Ｒは、各計算ノードに対応するノード番号である。尚、各計算ノードの詳細な構成は、後述する。
【００１５】
ＳＰＭＤプログラム１１は、並列計算用のプログラムである。ＳＰＭＤプログラム１１は、全ノード番号をいくつかのグループに分けて利用する。従って、ＳＰＭＤプログラム１１内のノード番号に関する処理に基づいて作成される実行可能プログラムの数は、計算ノードの数よりも少ない。
【００１６】
コンパイラ１２は、ＳＰＭＤプログラム１１をコンパイルし、実行可能プログラム１３〜１５を作成する。尚、コンパイラ１２により作成される実行可能プログラムの数は、３つに限定されるものではない。作成された実行可能プログラム１３は、例えば、計算ノード３に送信され、計算ノード３により実行される。また、作成された実行可能プログラム１４は、例えば、ノード番号が奇数である計算ノードに送信され、当該計算ノードにより実行される。作成された実行可能プログラム１５は、例えば、ノード番号が偶数である計算ノードに送信され、当該計算ノードにより実行される。
【００１７】
図２は、フロントエンドノード２及び計算ノード３〜７の概略構成図である。尚、計算ノード３〜７の各々の構成は、フロントエンドノード２の構成と同一であるため、その説明は省略する。
【００１８】
フロントエンドノード２は、フロントエンドノード２全体を制御するＣＰＵ２１、各種の情報やプログラムを備えるメモリ２２を備えている。また、フロントエンドノード２は、ＯＳ、各種の情報やプログラムを備えるハードディスクドライブ（ＨＤＤ：Hard Disk Drive）２３、各計算ノードを接続する通信インターフェース２４を備えている。さらに、フロントエンドノード２は、マウス及びキーボードのような入力装置３１からデータを入力する入力部２５、及びモニタ又はプリンタのような出力装置３２にデータやメッセージを出力する出力部２６を備えている。ＣＰＵ２１は、バス２７を介して、メモリ２２、ＨＤＤ２３、通信インターフェース２４、入力部２５、及び出力部２６に接続されている。
【００１９】
図１のＳＰＭＤプログラム１１、コンパイラ１２及び実行可能プログラム１３〜１５は、メモリ２２又はＨＤＤ２３に格納されている。コンパイラ１２は、ＣＰＵ２１の制御により稼働する。尚、フロントエンドノード２は、これらの要素以外にも、ＣＤ−Ｒ（Compact Disk-Recordable）ドライブのようなデータの読み書き装置や、不揮発性ＲＯＭ（Read Only Memory）等を備えていてもよい。
【００２０】
図３（Ａ）は、ＳＰＭＤプログラムのコードの一例を示す図である。
【００２１】
このＳＰＭＤプログラム１１には、各計算ノードのノード番号（Ｒ）を取得し、ノード番号の最大値（Ｎ）を取得する命令が記載されている。さらに、ＳＰＭＤプログラム１１には、ノード番号が０、偶数、又は奇数である計算ノードが、それぞれ処理Ｗ０、Ｗ１、Ｗ２、又はＷ３を実行する命令が記載されている。
【００２２】
図４は、実行可能プログラムの作成から実行までの処理を示すフローチャートである。
【００２３】
まず、フロントエンドノード２のＣＰＵ２１が、ＳＰＭＤプログラム１１及びコンパイラ１２をＨＤＤ２３から読み出し、コンパイラ１２を使ってＳＰＭＤプログラム１１をコンパイルし、複数の実行可能プログラム１３〜１５を作成する（ステップＳ１）。
【００２４】
図３（Ａ）のコードの例では、実行可能プログラム１３は、ノード番号０の計算ノード３を対象とし、実行可能プログラム１４は、奇数のノード番号の計算ノードを対象とし、実行可能プログラム１５は、偶数（０を除く）のノード番号の計算ノードを対象とする。実行可能プログラム１３〜１５は、配布先の計算ノードが実行しないコードは含まない。特に、実行可能プログラム１３〜１５は、if文による条件判定のコードを含まない。
【００２５】
次に、フロントエンドノード２のＣＰＵ２１は、通信Ｉ／Ｆ２４を介して、各計算ノードに、対応する実行可能プログラムを配布する（ステップＳ２）。例えば、ＣＰＵ２１は、計算ノード３（ノード番号：０）に実行可能プログラム１３を、計算ノード４，６（ノード番号：奇数）に実行可能プログラム１４を、計算ノード５（ノード番号：偶数）に実行可能プログラム１５をそれぞれ配布する。
【００２６】
最後に、各計算ノードのＣＰＵ２１が、配布された実行可能プログラムを実行する（ステップＳ３）。
【００２７】
図５は、図４のステップＳ１のコンパイルの処理を詳細に示すフローチャートである。
【００２８】
まず、コンパイラ１２は、ＳＰＭＤプログラム１１からノード番号に関する処理を抽出する（ステップＳ１１）。ノード番号に関する処理は、ノード番号（図３（Ａ）の「Ｒ」）と、ノード番号に関連する条件判定及びコードの情報とを含む。
【００２９】
例えば、図３（Ａ）に示すコードの場合、下記の情報が抽出される。
−  R = 0: W0, W2
−  0 < R かつ even (R): W1, W2
−  odd (R): W1, W3
ここで、変数Ｒは、実行可能プログラムの実行時に決まるノード番号を有する。
【００３０】
ＣＰＵ２１は、ノード番号に関する処理を抽出できたか否かを判別する（ステップＳ１２）。ステップＳ１２の判別でＹＥＳの場合には、コンパイラ１２は、この抽出された処理に基づいて、配布先の計算ノードがノード番号に関する処理を実行するようにＳＰＭＤプログラム１１を最適化する（又はコンパイルする）（ステップＳ１３）。コンパイラ１２は、ＳＰＭＤプログラム１１の最適化によって、複数の実行可能プログラム１３〜１５を作成する（ステップＳ１４）。
【００３１】
ステップＳ１２の判別でＮＯの場合には、ＣＰＵ２１は、コンパイラ１２が当該処理を抽出できなかったＳＰＭＤプログラム１１上の位置を示すメッセージを出力部２６を介して出力装置３２に出力する（ステップＳ１５）。その後、ＣＰＵ２１が、入力装置３１からコンパイルの補助情報をＳＰＭＤプログラム１１に入力すると（ステップＳ１６）、処理はステップＳ１１に戻る。このように、コンパイルの補助情報の入力により、ノード番号に関する処理の抽出を促進することができる。
【００３２】
コンパイルの補助情報は、例えば、プラグマ(pragma)のような命令文である。この補助情報が追加されたＳＰＭＤプログラムのコードの一例を図３（Ｂ）に示す。プラグマの書式は、「#pragma SPMD(変数) 条件式」である。この書式の「SPMD」の文字は、何に使用するプラグマであるかを指定する。「（変数）」は、ノード番号を持つ変数を指定する。「条件式」は、当該プラグマを含むコードブロックを実行する条件を指定する。この命令文（例えばプログマ）によれば、コンパイラ１２がＳＰＭＤプログラム１１を解析できない場合でも、ＳＰＭＤプログラム１１の開発者が認識している条件を指定することができる。
【００３３】
上記の例の場合、ノード番号が０、偶数、又は奇数であるかによって、計算ノードに実行される処理が分けられているが、ノード番号が複数の数値範囲のいずれに該当するかによって、計算ノードに実行される処理が分けられていてもよい。例えば、ノード番号が０〜９の場合は、対応する計算ノードは処理Ｗ１を実行し、ノード番号が１０〜Ｎの場合は、対応する計算ノードは処理Ｗ２を実行してもよい。
【００３４】
また、上記の例の場合、ノード番号が３種類（０、偶数、又は奇数）に分けられているが、ノード番号の種類の数は、これに限定されるものではない。例えば、ノード番号は２種類に分けられていてもよいし、４種類に分けられていてもよい。ノード番号の種類の数が予め決められた閾値（例えば、５種類）以上である場合には、ＣＰＵ２１は、ＳＰＭＤプログラム１１内の複数の分岐条件の融合を示す情報を入力装置３２から入力することによって、ＳＰＭＤプログラム１１内の複数の分岐条件を融合してもよい。例えば、図３（Ａ）のコードの例では、ＣＰＵ２１は、「Ｒ＝０」の場合を「０＜Ｒかつeven（Ｒ）」の場合と合わせて、「even（Ｒ）」の場合を形成してもよい。これにより、ノード番号の種類の数が多いことにより処理速度が遅い場合に、処理速度を高速化することができる。
【００３５】
逆に、ノード番号の種類の数が予め決められた閾値（例えば、３種類）未満である場合には、ＣＰＵ２１は、ＳＰＭＤプログラム１１内の分岐条件の分離を示す情報を入力装置３１から入力することによって、ＳＰＭＤプログラム１１内の分岐条件を分離してもよい。これにより、ノード番号の種類の数が少ないことにより処理速度が遅い場合に、処理速度を高速化することができる。
【００３６】
（第２の実施の形態）
本実施の形態は、上記第１の実施の形態と各計算ノードの構成が異なる。
【００３７】
図６は、第２の実施の形態に係る並列計算機の概略構成図である。
【００３８】
図６に示すように、第２の実施の形態に係る並列計算機１００は、計算ノード６１，６２及びフロントエンドノード２を備えている。並列計算機１００は、１つ以上の計算ノードを有していればよい。計算ノード６１は、ＣＰＵ４１〜４４及びメモリ５１を有し、計算ノード６２は、ＣＰＵ４５〜４８及びメモリ５２を有している。この場合、ノード番号は、各ＣＰＵに割り当てられている。第１の実施の形態に係る各計算ノードでは、単一のＣＰＵが単一のメモリを使用しているが、第２の実施の形態に係る各計算ノードでは、複数のＣＰＵが単一のメモリを共有している。第２の実施の形態に係るフロントエンドノード２の構成は、図２で示された構成と同一である。
【００３９】
並列計算機１００が、図４の処理を実行すると、１つの計算ノードで複数の実行可能プログラムが実行されるため、各計算ノード内のメモリの使用量が増大する。例えば、並列計算機１００が、第１の実施の形態で作成された実行可能プログラム１３〜１５を実行する場合、各計算ノードのメモリには、以下の実行可能プログラムが配布される。
【００４０】
メモリ５１には、ＣＰＵ４１（ノード番号：０）で実行される実行可能プログラム１３、ＣＰＵ４２，４４（ノード番号：奇数）で実行される実行可能プログラム１４、及びＣＰＵ４３（ノード番号：偶数）で実行される実行可能プログラム１５が配布される。メモリ５２には、ＣＰＵ４６，４８（ノード番号：奇数）で実行される実行可能プログラム１４、及びＣＰＵ４５，４７（ノード番号：偶数）で実行される実行可能プログラム１５が配布される。
【００４１】
フロントエンドノード２のＣＰＵ２１は、ＳＰＭＤプログラム１１で利用するノード番号を、各計算ノードのメモリに配布される実行可能プログラムの数が減少するように、各ＣＰＵに割り当てられているノード番号に変換する。これにより、メモリの使用量の増大を回避する。
【００４２】
例えば、ＳＰＭＤプログラム１１で利用するノード番号を「Ｑ」とし、各ＣＰＵに割り当てられているノード番号を「Ｒ」とする場合、フロントエンドノード２のＣＰＵ２１は、ノード番号Ｒを下記変換式（１）のように変換する。
【００４３】
（Ｑ→Ｒ）：０→０，１→２，２→４，３→６，４→１，５→３，６→５，７→７  …（１）
尚、変換式（１）は、一例であり、これに限定されるものではない。
【００４４】
変換式（１）を用いるコンパイルの処理を図７に示す。まず、フロントエンドノード２のＣＰＵ２１が、上記式（１）の変換式を表すコードを入力部２５を介して入力装置３１から入力する（ステップＳ２１）。次に、ＣＰＵ２１が、入力されたコードに基づいて、ＳＰＭＤプログラム１１で利用するノード番号を、各ＣＰＵに割り当てられているノード番号に変換する（ステップＳ２２）。その後、図４のステップＳ１１からＳ１６に従って、処理は実行される。
【００４５】
更に、図５の処理に従って、実行可能プログラム１３〜１５は、メモリ５１，５２に配布される。このとき、図７においてノード番号の変換が実行されているので、メモリ５１には、ＣＰＵ４１（ノード番号Ｒ：０）で実行される実行可能プログラム１３、及びＣＰＵ４２〜４４（ノード番号Ｒ：偶数）で実行される実行可能プログラム１５が配布される。メモリ５２には、ＣＰＵ４５〜４８（ノード番号Ｒ：奇数）で実行される実行可能プログラム１４が配布される。
【００４６】
このように、ノード番号の変換前には、３つ及び２つの実行可能プログラムが、メモリ５１，５２にそれぞれ配布されるが、ノード番号の変換後には、２つ及び１つの実行可能プログラムが、メモリ５１，５２にそれぞれ配布される。
【００４７】
従って、ノード番号の変換前と比べて、各計算ノードのメモリに配布される実行可能プログラムの数が減少し、各計算ノード内のメモリの使用量の増大を回避することができる。
【００４８】
上記並列計算機１，１００は、コンピュータであるが、これに限定されるものではなく、携帯電話やゲーム機のような並列計算が実行可能な装置であってもよい。
【００４９】
以上の第１及び第２の実施の形態に関し、更に以下の付記を開示する。
【００５０】
（付記１）明細書に開示されたコンパイル方法は、コンピュータに、並列計算用のプログラムからノード番号に関する処理を抽出する抽出工程と、当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化工程とを実行させることを特徴とする。かかる構成によれば、ノード番号に対応する計算ノード又はＣＰＵで実行される実行可能プログラムが、当該ノード番号に関係しないコードを含むことがなく、処理速度を高速化でき、且つメモリ使用量を削減することができる。また、実行可能プログラムが、当該ノード番号に関係しないコードを含むことがないので、実行可能プログラムが配布される際のデータ通信量を削減できる。さらに、計算ノード又はＣＰＵでは余分なコードの処理が行われないので、計算ノード又はＣＰＵの消費電力を削減することができる。
【００５１】
（付記２）前記コンパイル方法はさらに、前記コンピュータに、  前記抽出工程で前記ノード番号に関する処理が抽出されない場合に、当該処理が抽出されなかった並列計算用のプログラム上の位置を示す情報を出力する出力工程と、前記並列計算用のプログラム上の位置を示す情報に基づいて、前記並列計算用のプログラムに補助情報を入力する入力工程とを実行させることを特徴とする付記１のコンパイル方法。かかる構成によれば、ヒント情報の入力により、ノード番号に関する処理の抽出を促進することができる。
【００５２】
（付記３）前記コンパイル方法はさらに、計算ノードが複数のＣＰＵ及び単一のメモリを有する場合に、前記単一のメモリに配布される実行可能プログラムの数が減少するように、前記並列計算用のプログラムで利用するノード番号を各ＣＰＵに割り当てられているノード番号に変換する変換工程を含むことを特徴とする付記１又は２のコンパイル方法。かかる構成によれば、ノード番号の変換前と比べて、計算ノードのメモリに配布される実行可能プログラムの数が減少し、計算ノード内のメモリの使用量の増大を回避することができる。
【００５３】
（付記４）前記変換工程は、前記並列計算用のプログラムで利用するノード番号を各ＣＰＵに割り当てられているノード番号に変換する変換情報を入力することによって、前記並列計算用のプログラムで利用するノード番号を各ＣＰＵに割り当てられているノード番号に変換することを特徴とする付記３のコンパイル方法。かかる構成によれば、変換情報の入力をトリガとして、並列計算用のプログラムで利用するノード番号を各ＣＰＵに割り当てられているノード番号に変換することができる。
【００５４】
（付記５）前記コンパイル方法はさらに、ノード番号の種類の数が予め決められた閾値以上である場合に、前記並列計算用のプログラム内に含まれる複数の分岐条件の融合を示す情報を入力する第１入力工程と、前記分岐条件の融合を示す情報に基づいて、前記複数の分岐条件を融合する融合工程とを含むことを特徴とする付記１乃至４のいずれか１つに記載のコンパイル方法。かかる構成によれば、ノード番号の種類の数が多いことにより処理速度が遅い場合に、処理速度を高速化することができる。
【００５５】
（付記６）前記コンパイル方法はさらに、ノード番号の種類の数が予め決められた閾値未満である場合に、前記並列計算用のプログラム内に含まれる分岐条件の分離を示す情報を入力する第２入力工程と、前記分岐条件の分離を示す情報に基づいて、前記分岐条件を分離する分離工程とを含むことを特徴とする付記１乃至５のいずれか１つに記載のコンパイル方法。かかる構成によれば、ノード番号の種類の数が少ないことにより処理速度が遅い場合に、処理速度を高速化することができる。
【００５６】
（付記７）前記最適化工程で作成された実行可能プログラムは、配布先の計算ノード又はＣＰＵが不実行のコードを含まないことを特徴とする付記１乃至６のいずれか１つに記載のコンパイル方法。かかる構成によれば、実行可能プログラムが不実行のコードを含むことがなく、処理速度を高速化でき、且つメモリ使用量を削減することができる。
【００５７】
（付記８）前記最適化工程で作成された実行可能プログラムは、条件判定のコードを含まないことを特徴とする付記１乃至７のいずれか１つに記載のコンパイル方法。かかる構成によれば、実行可能プログラムが条件判定のコードを含まないので、処理速度を高速化でき、且つメモリ使用量を削減することができる。
【００５８】
（付記９）前記ノード番号に関する処理は、ノード番号と、ノード番号に関連する条件判定及びコードの情報とを含むことを特徴とする付記１乃至８のいずれか１つに記載のコンパイル方法。
【００５９】
（付記１０）明細書に開示されたプログラム実行方法は、コンピュータに、並列計算用のプログラムからノード番号に関する処理を抽出する抽出工程と、当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化工程と、前記最適化工程で作成された実行可能プログラムを、対応する計算ノードに配布する配布工程と、当該配布された実行可能プログラムを、前記対応する計算ノードに実行させる実行工程とを含むことを特徴とする。かかる構成によれば、上記付記（１）と同様の効果を奏する。
【００６０】
（付記１１）明細書に開示されたプログラムは、コンピュータを、並列計算用のプログラムからノード番号に関する処理を抽出する抽出手段と、当該抽出された処理に基づいて、前記並列計算用のプログラムを最適化し、複数の実行可能プログラムを作成する最適化手段として機能させることを特徴とするプログラム。かかる構成によれば、上記付記（１）と同様の効果を奏する。
【符号の説明】
【００６１】
１，１００  並列計算機、２  フロントエンドノード、３〜７  計算ノード、１１  ＳＰＭＤプログラム、１２  コンパイラ、１３〜１５  実行可能プログラム、２１  ＣＰＵ、２２  メモリ、２３  ハードディスクドライブ（ＨＤＤ）、２４  通信インターフェース２４、２５  入力部、２６  出力部
【図１】
0005509694.tif 000002
【図２】
0005509694.tif 000003
【図３】
0005509694.tif 000004
【図４】
0005509694.tif 000005
【図５】
0005509694.tif 000006
【図６】
0005509694.tif 000007
【図７】
0005509694.tif 000008