(57)【要約】      （修正有）【課題】遺伝的アルゴリズムを利用して、実行対象のプログラムに変更や追加を行うことなく分割処理を行って、複数のプロセッサによる並列処理に最適な分割プログラムを生成する。【解決手段】実行対象プログラムを複数の記述を点の集合とし、複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する。そして、その記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数生成し、それぞれに、分割情報を有する遺伝子データを生成する。その後、複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程を、交差により生成された次世代の分割プログラムの評価値が一定の条件を満たすまで繰り返す。【選択図】図８
2004185271.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する工程とを有し、
前記工程（ｅ）で選択された複数の分割プログラムに対して、前記工程（ｄ）と工程（ｅ）とを繰り返すことを特徴とするプログラム分割方法。
【請求項２】
請求項１において、
前記遺伝子データの分割情報は、前記分割プログラムの有向枝の集合のうち、分割により切断された切断有向枝と切断されなかった非切断有向枝とを示す情報であることを特徴とするプログラム分割方法。
【請求項３】
請求項２において、
前記工程（ｄ）の交差において、前記１対の分割プログラムをそれぞれランダムに２分割し、互いに異なる分割部分を融合して、次世代の１対の分割プログラムを生成し、当該次世代の分割プログラムの遺伝子データが、前世代の分割プログラムの遺伝子データの一部を引き継ぐことを特徴とするプログラム分割方法。
【請求項４】
請求項１において、
前記工程（ｄ）と工程（ｅ）の繰り返しが、前記交差により生成された分割プログラムの評価値に応じて終了されることを特徴とするプログラム分割方法。
【請求項５】
請求項４において、
前記各世代内の複数の分割プログラムのうち、最良の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、もはや改良されなくなったときに、前記工程（ｄ）と工程（ｅ）の繰り返しが終了されることを特徴とするプログラム分割方法。
【請求項６】
請求項４において、
前記各世代内の複数の分割プログラムの評価値の平均値が、所定数の連続する世代において、もはや改良されなくなった時に、前記工程（ｄ）と工程（ｅ）の繰り返しが終了することを特徴とするプログラム分割方法。
【請求項７】
請求項１において、
前記グラフモデルは、更に、前記データを点の集合として、前記データへのアクセスを前記記述の点の点とデータの点とを結ぶ有向枝の集合として有し、前記データ送信量は、前記部分プログラムと有向枝で結ばれたデータのデータ量の合計を、当該分割プログラム内で合算した値であることを特徴とするプログラム分割方法。
【請求項８】
所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める工程とを有し、
前記工程（ｄ）で生成された複数の分割プログラムに対して、前記工程（ｄ）と工程（ｅ）とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム分割方法。
【請求項９】
所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、
前記分割手順は、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する手順とを有し、
前記工程（ｅ）で選択された複数の分割プログラムに対して、前記手順（ｄ）と手順（ｅ）とを繰り返すことを特徴とするプログラム。
【請求項１０】
所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、
前記分割手順は、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める手順とを有し、
前記手順（ｄ）で生成された複数の分割プログラムに対して、前記手順（ｄ）と手順（ｅ）とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のプロセッサにより効率的に実行できるようにプログラムを分割する方法とその分割方法をコンピュータに実行させるプログラムに関し、特に遺伝子を利用した遺伝的アルゴリズム（ジェネティック・アルゴリズム）を利用してプログラムを分割する方法及びその分割方法を行うプログラムに関する。
【０００２】
【従来の技術】
近年において、システムを効率的に利用する方法として、複数のマイクロプロセッサをひとまとめにして所定のプログラムを並列的に実行させるマルチプロセッサシステムが提案されている。元々１つのプログラムを１つのプロセッサで実行するよりも、そのプログラムを複数の部分プログラムに分割して、その分割された部分プログラムを複数のプロセッサで実行したほうが、プログラム全体の実行に要する時間を短縮できる。
【０００３】
このように、与えられた逐次的なプログラムを、複数のプロセッサで協調して実行するために、プログラム作成者がプログラムに意図的に並列実行を行わせるような追加的な記述を加える方法や、コンピュータにより実行対象の逐次的なプログラムを自動的に分割させる方法などが提案されている。本発明は、このうち後者の方法に関するものである。
【０００４】
このようなプログラムの分割方法としては、与えられた実行対象のプログラムに何らの変更も行うことなく分割を行う方法と、与えられた実行対象プログラムに何らかの変更を加えてから分割を行う方法とが提案されているが、前者のほうが実行対象プログラムへの変更を加えないという理由で好ましい。
【０００５】
プログラムの分割方法としては、以下の先行技術が提案されている。
【０００６】
【特許文献１】
特開平７−２８１９０７号公報
【０００７】
【特許文献２】
特開平９−２８２２９０号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、上記の特許文献のプログラム分割方法は、複雑なアルゴリズムによるものであり、実行対象のプログラムを適切に且つ簡単に分割する方法については、具体的な提案はあまりない。
【０００９】
そこで、本発明の目的は、実行対象のプログラムを、簡単なアルゴリズムで、複数のプロセッサにより効率的に実行可能な複数の部分プログラムに分割する方法と、その分割方法をコンピュータに実行させるプログラムを提供することにある。
【００１０】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面は、所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する工程とを有し、
前記工程（ｅ）で選択された複数の分割プログラムに対して、前記工程（ｄ）と工程（ｅ）とを繰り返すことを特徴とする。
【００１１】
上記の発明の側面において、より好ましい実施例では、遺伝子データの分割情報は、前記分割プログラムの有向枝の集合のうち、分割により切断された切断有向枝と切断されなかった非切断有向枝とを示す情報であることを特徴とする。また、別の実施例では、遺伝子データの分割情報は、例えば、分割による切断部分に係る点と非切断部分に係る点とを示す情報であることを特徴とする。
【００１２】
更に、上記の発明の側面において、より好ましい実施例では、上記工程（ｄ）と工程（ｅ）の繰り返しが、各世代内の分割プログラムの評価値に応じて終了されることを特徴とする。例えば、各世代内の複数の分割プログラムのうち、最高の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、最早改良されなくなったときに、前記工程（ｄ）と工程（ｅ）の繰り返しが終了されることが好ましい。
【００１３】
上記の発明によれば、複数の部分プログラムに分割された分割プログラムの分割情報を遺伝子データとして持たせ、ランダムに選択された１対の分割プログラムを交差して次世代の分割プログラムを生成することを繰り返すことにより、最適な分割プログラムを生み出すことができる。この方法によれば、実行対象のプログラムに変更、追加を行うことなく、遺伝的アルゴリズムを利用した簡単なアルゴリズムによって分割して、複数のプロセッサで実行可能な分割プログラムを生成することができる。
【００１４】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、本発明の保護範囲は、以下の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【００１５】
図１は、本実施の形態におけるプログラムの実行手順を示したフローチャート図である。また、図２は、実行対象プログラムを実行するマルチプロセッサシステムの構成図である。図１，２を参照しながら、実行対象プログラムを分割して複数のプロセッサにより並列処理することについて説明する。
【００１６】
最初に、メインプロセッサ１０に、実行対象の逐次処理型のプログラムＦ１が入力される（Ｓ１０）。メインプロセッサ１０は、この実行対象プログラムＦ１を、分割方法を実行するプログラムＦ２によって、複数の部分プログラムに分割する（Ｓ１２）。この分割されたプログラムが分割プログラムであり、この分割プログラムは、複数の部分プログラムＡ〜Ｎを有する。そして、メインプロセッサ１０は、この分割プログラムに含まれる部分プログラムＡ〜Ｎを、複数のプロセッサ１０−Ａ〜１０−Ｎに割り当ててそれぞれに実行させる（１６−Ａ〜１６−Ｎ）。この場合、必ずしも、プロセッサの数と部分プログラムの数とが一致する必要はなく、あるプロセッサが複数の部分プログラムを処理し、他のプロセッサが単一の部分プログラムを処理してもよい。これにより、単一のプログラムＦ１が、複数のプロセッサにより並列に処理されるので、プログラムの実行効率を高めることができる。
【００１７】
図２中において、メインプロセッサ１０や複数のプロセッサ群１０−Ａ〜１０−Ｎは、それぞれ内部にＣＰＵと、入出力手段Ｉ／Ｏと、メモリＲＡＭ，ＲＯＭを有し、内部バスを介して接続されている。そして、メインプロセッサ１０内のＲＯＭに分割方法を実行するプログラムＦ２が格納されている。
［遺伝的アルゴリズム］
本実施の形態では、図１の入力プログラムの分割方法を提供するものであり、その分割方法は、遺伝的アルゴリズムを利用したものである。遺伝的アルゴリズムの基本的な考え方は、次の通りである。
【００１８】
遺伝的アルゴリズムは、良い親の集まりからは良い子の集まりが得られるというポリシーに基づいて、最良の解を探索する手法である。即ち、生物が進化していく過程を、コンピュータ上で問題を解く過程として利用するものである。例えば、ある問題が取りうる全ての解の集合をＡとし、解の集合Ａの部分集合であるＣｉを世代ｉの解の集合であるとする。また、この解Ｃｉを評価する評価関数ｆｅｖａｌ（Ｃｉ）を定義する。そして、ある世代ｉの解Ｃｉを親世代の集合として、その子世代ｉ＋１の解の集合をＣｉ＋１とし、この子世代の解Ｃｉ＋１は、親世代の１対の解Ｃｉを交差（ｃｒｏｓｓｏｖｅｒ）することにより求められるものとする。更に、解Ｃｉの任意の要素を遺伝子（ｇｅｎｅ）により定義するものとし、親世代の１対の解Ｃｉがそれぞれ有する遺伝子データが、次の世代である子世代の解Ｃｉ＋１にも一部受け継がれるものとする。つまり、親世代の１対の解Ｃｉが有する遺伝子ｇ１，ｇ２と、ランダムに与えられたパラメータとをもとにして、子世代の１対の解Ｃｉ＋１の遺伝子ｇ１２、ｇ２１が生成される。但し、交差だけではローカルな最小値（ｌｏｃａｌ  ｍｉｎｉｍａ）に落ち込む恐れがあるので、交差時に突然変異（Ｍｕｔａｔｉｏｎ）による遺伝子の変異もまれに且つランダムに発生させる。
【００１９】
但し、交差と突然変異によって、親世代の解Ｃｉから子世代の解Ｃｉ＋１を発生させているだけでは、取りうる解の集合Ａを逸脱する解が発生する場合がある。従って、実現不可能な（Ｉｎｆｅａｓｉｂｌｅ）な解が持つ遺伝子を致死遺伝子（ｌｅｔｈａｌ  ｇｅｎｅ）と呼んで、そのような致死遺伝子を有する解は、子世代から排除するようにする。
【００２０】
以上の遺伝的アルゴリズムを利用して、実行対象プログラムを複数の部分プログラムからなる分割プログラムを生成する。上記の交差により子世代の解を生成する時の交差関数と、突然変異を発生させた時の変異関数と、交差を繰り返して生成された解が適切であるか否かを判断する評価関数を適切に定義することで、最適な分割プログラムを自動生成することが可能になる。
［評価関数の考え方］
上記の通り、実行対象プログラムを複数の部分プログラムに分割し、それらを複数のプロセッサにより実行する場合に、実行効率を良好にする分割状態とはどういうものかについて、基準となる評価値を求める評価関数を定義する必要がある。そこで、この評価関数をどのようにすべきかの考え方を説明する。評価値は、分割プログラムの実行時間や消費電力など様々な指標を選択することができる。最も典型的には、評価値は、分割プログラムの実行時間である。
【００２１】
この実行時間は、各部分プログラムの実行に要する時間の総和であるが、各部分プログラムの実行時間は、部分プログラムの総実行ステップ数と、部分プログラムを実行するためのデータ準備時間などの和で表される。特に、後者の時間は、分割された部分プログラムが異なるプロセッサにより実行されるので、部分プログラム間で共有するデータ量、つまり異なるプロセッサ間で転送しあうデータ量を少なくすることが望ましいといえる。
【００２２】
短絡的に考えれば、部分プログラム間で共有するデータの量を最も少なくするためには、全ての部分プログラムを単一のプロセッサで実行すればよい。それにより、転送すべきデータ量はゼロになる。しかし、複数の部分プログラムを単一のプロセッサで実行させることは、並列に動作させることで動作時間を短縮させるという本来の目的に整合しないことになり、好ましくないのは当然である。
【００２３】
また、部分プログラムの数を減らすことは、部分プログラム間で共有すべきデータ量を減らすことに貢献するものの、１つの部分プログラムの実行ステップ数が多くなって、１つのプロセッサを占有する時間が長くなる。更に、複数の部分プログラムを複数のプロセッサに振り分けるスケジューリングの柔軟性が悪くなり、プロセッサ群の平均稼働率が低下することも招いて、トータルの実行時間が長くなることが予想される。
【００２４】
一方で、部分プログラムの数を増やすことは、１つの部分プログラムの実行ステップ数が少なくなって、１つのプロセッサを占有する時間が短くなる。そして、スケジューリングの柔軟性も高くなり、プロセッサ群の平均稼働率が向上する。しかし、部分プログラム間で共有すべきデータ量が増大して、部分プログラム実行に必要な準備時間が長くなるということが予想される。
【００２５】
以上のことを総括すると、マルチプロセッサシステムで実行効率を高めることができる分割プログラムの評価値としては、次のような性質が含まれる。
（１）プロセッサ間でのデータ通信時間が長くなるような箇所では、プログラムの分割を行わない。
（２）部分プログラムの大きさは、大き過ぎず同時に小さ過ぎてもいけない。
（３）部分プログラムの数は、多過ぎず、同時に少な過ぎてもいけない。
これらの性質が反映された評価関数を定義することで、種の進化過程において適切な分割プログラムが生成されたか否かを判断することができる。
［プログラムのモデル化］
実行対象のプログラムを一定の分割アルゴリズムによるプログラムによって複数の部分プログラムに分割するためには、実行対象プログラムをモデル化して情報処理に適したデータ構造にする必要がある。そこで、本実施の形態では、実行対象プログラムは、グラフＧ＝（Ｖ，Ｅ）で与えられると定義する。ここで、Ｖｐは実行対象プログラム中の記述を表す点の集合であり、Ｖｑはプログラム中のデータを表す点の集合であり、この集合Ｖｐ、Ｖｑを合わせて点の集合Ｖで表される。また、Ｅｐは実行対象プログラム中の記述の実行順序を示す有向枝の集合であり、Ｅｑはデータへのアクセス（リードとライト）を表す有向枝の集合であり、この集合Ｅｐ、Ｅｑを合わせて有向枝の集合Ｅで表される。
【００２６】
図３はプログラムのモデル化の一例を示す図である。図３（Ａ）は、実行対象プログラムＦ１であり、各記述が含まれるステップａ〜ｄからなり、各ステップではデータＶ〜Ｙに対して読み出しや書き込みが行われている。このような実行対象プログラムＦ１をモデル化したグラフＧが、図３（Ｂ）に示される。このグラフＧは、記述の点集合Ｖｐ＝｛ａ，ｂ，ｃ，ｄ｝及びデータの点集合Ｖｑ＝｛Ｖ，Ｗ，Ｘ，Ｙ｝からなる点集合Ｖと、記述の実行順序の有向枝集合Ｅｐ＝｛ａｂ，ｂｃ，ｃｄ｝及びデータへのアクセスの有向枝集合Ｅｑ＝｛ａＶ，Ｖｂ，ｂＶ，Ｖｃ，ｃＸ，Ｗｄ，Ｘｄ，ｄＹ｝からなる有向枝集合Ｅとにモデル化される。
［遺伝子］
遺伝的アルゴリズムを適用するためには、モデル化された実行対象プログラムを複数の部分プログラムに分割して得られた分割プログラムを、遺伝子で表さなければならない。そこで、本実施の形態では、分割プログラムの分割状況を示す分割情報を、遺伝子情報として表す。第１の例として、遺伝子データの分割情報は、分割プログラムの有向枝の集合Ｅｐに対応して、分割により切断された切断有向枝と切断されなかった非切断有向枝とを「０」「１」で示す情報である。あるいは、第２の例としては、分割情報は、分割プログラムの記述の集合Ｖｐに対応して、分割による切断部分に係る点と非切断部分に係る点とを示す情報である。以下の例では、第１の例に従って遺伝子を説明する。
【００２７】
図４は、実行対象プログラムをグラフ化した例を示す図である。このグラフＧｐは、以下の記述の点集合Ｖｐとその実行順序の有向枝集合Ｅｐとでモデル化される。
Ｖｐ＝｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ，ｊ，ｋ，ｌ，ｍ｝
Ｅｐ＝｛ａｂ，ａｃ，ｂｄ，ｂｅ，ｃｆ，ｄｇ，ｅｈ，ｆｉ，ｆｊ，ｇｋ，ｈｋ，ｉｋ，ｉｌ，ｊｌ，ｋｍ，ｌｍ｝
このようにモデル化されたグラフＧｐの分割例が、図５、図６に示される。図５、図６は、図４のプログラムを分割した分割プログラムのグラフ例を示す図である。図５の例では、４つの部分プログラムに分割され、各部分プログラムは、｛ａ，ｃ，ｆ，ｉ，ｋ｝と｛ｂ，ｄ，ｇ｝と｛ｅ，ｈ｝と｛ｊ，ｌ，ｍ｝とで構成される。また、図６の例では、６つの部分プログラムに分割され、各部分プログラムは、｛ａ，ｃ｝と｛ｂ，ｅ，ｈ｝と｛ｄ，ｇ｝と｛ｆ，ｊ｝と｛ｉ，ｌ｝と｛ｋ，ｍ｝とで構成される。
【００２８】
このように分割された場合、モデル化されたグラフの有向枝が、分割された部分プログラムの境界にあるか否か、または切断枝か非切断枝かを表す情報を遺伝子としてすることができる。つまり、遺伝子ｇは、有向枝の集合Ｅｐの要素に対応する「０」（境界の枝、切断枝）と「１」（非境界の枝、非切断枝）との系列として定義することができる。つまり、図５の例では、遺伝子ｇは、上記Ｅｐに対応してｇ＝｛０，１，１，０，１，１，１，１，０，０，０，１，０，１，０，１｝となり、図６の例では、遺伝子ｇは、ｇ＝｛０，１，０，１，０，１，１，０，１，０，０，０，１，０，１，０｝となる。以上のとおり、モデルＧとその遺伝子ｇが示されれば、分割プログラムの分割状態を一義的に再現することができる。
［分割方法の具体例］
以上の前提をもとに、本実施の形態における実行対象プログラムを遺伝的アルゴリズムにより分割する方法について、以下説明する。
【００２９】
図７は、本実施の形態におけるプログラムの分割方法を示すフローチャート図である。このフローチャートに対応する分割方法実行プログラムＦ２が、図２で示したとおり、メインプロセッサ１０のＲＯＭ内に格納されている。最初に、実行対象プログラムＦ１がメインプロセッサ１０に入力される（Ｓ２０）。入力された実行対象プログラムＦ１は、上記の方法でグラフ化される。このグラフ化により生成されたグラフＧに対して、グラフの各点と各枝に対して、後述する評価関数による評価値を求めるための重み付けを行う（Ｓ２４）。この重み付けは、図３（Ｂ）のグラフの例で説明すると、各データに対応する点Ｖ〜Ｙに対しては、そのデータ量を重みとする。また、各記述に対応する点ａ〜ｄに対しては、その処理時間を重みとする。そして、記述に対応する点ａ〜ｄとデータに対応する点Ｖ〜Ｙとの間の枝に対しては、それぞれのデータへのアクセス時間を重みとする。例えば、データがプロセッサの近い位置に格納されていればアクセス時間が短く、遠い位置に格納されていればアクセス時間が長いなどである。更に、記述に対応する点ａ〜ｄ間の枝に対しては、例えば、異なるプロセッサに引き継ぐ時に必要な時間の長さを重みとする。これらの重み付けは、評価関数にどのような要素が利用されるかにより、選択的に生成すればよい。
【００３０】
次に、実行対象プログラムをランダムに複数の部分プログラムに分割して、複数の分割プログラムを生成する（Ｓ２６）。この工程では、図４に示されたようなグラフＧｐの実行対象プログラムを、複数の部分プログラムにランダムに分割して、図５，図６などに示したような分割プログラムを生成する。そして、生成されたそれぞれの分割プログラムに対して、それぞれ遺伝子ｇを生成する（Ｓ２８）。つまり、前述のとおり、グラフＧｐの枝集合Ｅｐの各要素が、部分プログラムに分割された時の切断枝か非切断枝かを「１」「０」で示す遺伝子ｇを生成する。そして、この最初の分割プログラムの集合を、第１世代（ｉ＝１）の分割プログラムと定義する（Ｓ３０）。この第１世代の分割プログラムには、後述する致死遺伝子を持つものは含まれないものとする。
【００３１】
次に、第１世代の複数の分割プログラムのうち、ランダムに選択した１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成する（Ｓ３２）。つまり、親世代の分割プログラムを交差させて、子世代の分割プログラムを生成させる。この子世代の分割プログラムは、親世代の分割プログラムの数よりも多いことが望ましい。そこで、交差のアルゴリズムについて説明する。
［交差アルゴリズム］
交差とは、２つの遺伝子から新しい遺伝子を作り出す操作である。本実施の形態では、分割プログラムの分割情報を有する２つの遺伝子をある交差アルゴリズムで交差させて、新たな遺伝子を生成する。遺伝的な意味での交差では、親の遺伝子情報（分割情報）が子供にも伝達される。それにより、親の持っている特徴（分割の特徴）が子供にも遺伝される。そして、交差により新たに生まれた子供のうち、評価値が高いすぐれたものを残し、更に交差によって次の世代の子供を産むようにすることで、種の原理によりすぐれた種（分割プログラム）が生成されていく。但し、常に同じアルゴリズムにより親の遺伝子情報を子供にも引き継ぐようにすると、ある狭い領域内での優秀な種しか生まれないので、まれに突然変異を発生させて、新たな探索領域を発生させることが必要である。
【００３２】
図８は、本実施の形態における交差アルゴリズムを示す図である。図８は、２つのグラフＧ１，Ｇ２を交差させて、次の世代のグラフＧ１２，Ｇ２１を生成するアルゴリズムが示されている。この交差アルゴリズムによれば、分割プログラムに対応するグラフＧｐ＝（Ｖｐ，Ｅｐ）のランダムな２分割部分Ｇｐａ、Ｇｐｂを生成する。このランダムな切断線ＣＴにより、複数の枝が切断される。そして、それぞれのグラフの２分割部分Ｇ１ａ，Ｇ１ｂ，Ｇ２ａ，Ｇ２ｂを互いに入れ替えて融合することで、新たなグラフ
Ｇ１２＝Ｇ１ａ＋Ｇ２ｂ
Ｇ２１＝Ｇ２ａ＋Ｇ１ｂ
を生成する。上記の切断線ＣＴをランダムに選択すること自体が、交差時のランダムなパラメータを意味している。
【００３３】
これにより、グラフＧ１２の遺伝子ｇ１２は、グラフＧ１の遺伝子ｇ１の一部とグラフＧ２の遺伝子ｇ２の一部を引き継いだものになる。また、グラフＧ２１の遺伝子ｇ２１も、同様に遺伝子ｇ１の一部とｇ２の一部を引き継いだものになる。つまり、グラフＧ１２の遺伝子ｇ１２とグラフＧ２１の遺伝子ｇ２１は、グラフＧ１の一部の分割情報とグラフＧ２の一部の分割情報とを有する。但し、ランダムに切断された枝については、融合されるときに所定のルールに従って、切断枝か非切断枝かになる。
【００３４】
図９は、ランダムに切断された枝の融合による処理を示す図である。２つに切断された親のグラフを融合した場合、図９のケース１，２，３に示されるように、その切断線ＣＴにおいて、親のグラフでの切断枝と非切断枝とが融合する場合（ケース１，２）と、親のグラフでの非切断枝と非切断枝とが融合する場合（ケース３）とが考えられる。その場合、ケースＡのようにそれらの枝をつなぐケースと、ケースＢのようにそれらの枝を切断するケースのいずれかにランダムに選択する。或いは、ケースＡ，Ｂのいずれか一方を原則的に選択し、まれに他方のケースを選択するようにしてもよい。このいずれかのケースをランダムに選択することは、突然変異を含んだ融合である。また、いずれか一方のケースを原則的に選択し、まれに他方のケースを選択することも、突然変異（まれに他方のケースを選択すること）を含んだ融合である。図８の例では、いずれかのケースＡ，Ｂをランダムに選択している。
【００３５】
なお、ランダムに切断されたグラフを融合する時に、親のグラフで切断枝と切断枝とが融合する場合があるが、その場合は、融合によっても切断枝のままとする。
【００３６】
上記の融合のアルゴリズムは、一例であり、これに限定されるものではない。例えば、上記の例と逆に、いずれか一方が親のグラフにおいて切断枝であれば融合しても切断し、両方共に親のグラフにおいて非切断枝の場合であれば融合しても非切断枝にするようにしても良い。
【００３７】
突然変異のアルゴリズムは、上記の融合時のアルゴリズムにランダム性を含ませる他に、融合後のグラフの任意の枝について、非切断枝を切断枝に変更する操作であっても良い。この操作は、ある部分プログラムを複数の部分プログラムに変更する操作である。この操作であれば、後述する致死遺伝子を生成するリスクをなくすことができる。このような操作をすることにより、親の遺伝子とは異なる遺伝子に突然変異することになり、突然変異が発生したことになる。
［致死遺伝子］
ここで、致死遺伝子について説明する。図１０は、致死遺伝子の一例を示す図である。この分割プログラムによれば、部分プログラム（ｂ，ｄ，ｇ，ｅ，ｈ）と（ｆ，ｉ，ｊ，ｌ）とが、内部に並列的な関係を有している。複数のプロセッサに分配される部分プログラム自体が並列的な記述部分を含んでいることは、プログラムの実行時間短縮の目的に整合せず、好ましくない。そこで、このような部分プログラムを有する分割プログラムは、致死遺伝子とし、新たな生命として誕生したものとはしないようにする。
【００３８】
例えば、図７の工程Ｓ２６において、実行対象プログラムを分割して複数の分割プログラムを生成するが、この生成された分割プログラムから、致死遺伝子を有するものは除外することが望ましい。また、工程Ｓ３２において、交差によって次世代の分割プログラムを生成するが、ここでも生成された分割プログラムから、致死遺伝子を有するものを除外することが望ましい。
【００３９】
このように、分割状態がそもそも分割プログラムとして好ましくない状態を致死遺伝子として取り扱うことで、種の進化の過程からそのような好ましくない遺伝子を持つ種を排除することが好ましい。致死遺伝子を排除することで、実現可能な遺伝子を持つ親世代を交差すれば、その子世代で生成される遺伝子も必ず実現可能になる。
【００４０】
更に、上記の致死遺伝子ではない遺伝子に対して、前述の非切断枝を切断する突然変異を発生させても、その結果生成される分割プログラムの遺伝子は致死遺伝子になることはない。
【００４１】
図７のフローチャートに戻り、交差により次世代の複数の分割プログラムが生成されると（Ｓ３２）、次に、評価関数に基づいて、評価値が高い分割プログラムを選択する。例えば、親の世代の分割プログラムの数と、子の世代の分割プログラムの数とが同等になるように、交差により新たに生まれた複数の分割プログラムの数を減少させる（Ｓ３６）。こうすることにより、種の進化過程で、優秀な種のみが残されてくることになる。但し、探索領域が限定されたローカルミニマに陥ることを防止するために、まれに或いは低い比率で突然変異が発生される（Ｓ３４）。
［評価関数の具体例］
前述の評価関数の考え方によれば、分割プログラムの評価値としては、次のような性質が含まれる。
（１）プロセッサ間でのデータ通信時間が長くなるような箇所では、プログラムの分割を行わない。
（２）部分プログラムの大きさは、大き過ぎず同時に小さ過ぎてもいけない。
（３）部分プログラムの数は、多過ぎず、同時に少な過ぎてもいけない。
【００４２】
そこで、上記の具体例における評価関数を説明する。まず、分割プログラムに対応するグラフＧｐの部分プログラムの数ｎ、グラフＧｐにおける部分プログラム間でのデータの送信量の総量ｄ、部分プログラム内の最長パスの総和ｌに対して、評価関数ｆｅｖａｌは、例えば、
ｆｅｖａｌ（ｎ，ｐｎ，ｌ，ｐｌ，ｄ，ｐｄ）＝ｎｐｎ／（ｄｐｄ×ｌｐｌ）    （１）
ここで、ｐｎ，ｐｌ，ｐｄは係数である。
【００４３】
そして、上記の評価関数の考え方（１）（２）（３）の重要度に応じて、これらの係数が具体的に決定される。例えば、考え方（１）が最も重要な場合は、この係数ｐｄが大きく設定される。
【００４４】
図５の分割プログラムのグラフの場合は、部分プログラムの数ｎ＝４、部分プログラム内の最長パスの総和ｌ＝５＋３＋２＋３＝１３となる。一方、図５のグラフの婆波、部分プログラムの数ｎ＝６、部分プログラム内の最長パスの総和ｌ＝２＋３＋２＋２＋２＋２＝１３となる。
【００４５】
図１１は、データの送信量の総和の求め方を示す図である。まず、図１１中の上段に示されたグラフは、一例として図８の交差で生成されたグラフＧ１２に対するデータＤａ〜Ｄｅへのアクセスの関係を示している。枝の矢印の方向がデータが通信される方向に対応するので、記述からデータに向かう矢印は書き込み、データから記述に向かう矢印は読み出しをそれぞれ示す。
【００４６】
このようなグラフの例において、各部分プログラムに対する複数の枝を１つにまとめて（縮体して）、図１１の下段のグラフを作成する。このグラフでは、６つの部分プログラムに対する各データへのアクセスを示す枝が示され、各データにはそのデータ量が括弧内に示されている。そして、１つの部分プログラムへの複数の枝は、１回のデータ転送とみなすことができる。なぜなら、部分プログラムは同じプロセッサにより実行されるので、あるデータに対して１回アクセスすれば、そのプロセッサはそのデータを保有しており、それ以降のアクセスが発生しても、プロセッサ内部のメモリから取得可能であり、データの送信を行う必要はないからである。
【００４７】
従って、部分プログラム｛ａ，ｃ，ｆ，ｉ，ｌ｝に対しては、データＤａ，Ｄｂ，Ｄｄへのアクセスがあり、それぞれのデータ量が３，２，９であるので、その部分プログラムへのデータ送信量は、ｄ＝３＋２＋９＝１１となる。同様に、他の部分プログラムに対してもデータ送信量を求めると、合計でｄ＝５１になる。つまり、図１１に示される通りである。
【００４８】
上記の部分プログラムの数ｎと、最長パスの総和ｌと、データ送信量ｄが求められれば、上記式（１）の評価関数ｆｅｖａｌに従って、分割プログラムの評価値を求めることができる。この評価関数を最適化することにより、ステップＳ３６において、最良の分割プログラムを選択することができる。
【００４９】
以上の操作により、次の世代の分割プログラムが生成されたことになる。そこで、世代数ｉをインクリメントする（Ｓ３８）。そして、上記ステップＳ３２，Ｓ３４，Ｓ３６，Ｓ３８を、所定の終了条件（Ｓ４０）に合致するまで繰り返す。繰り返すことで、種の進化によってより最適な分割プログラムが生成される。
【００５０】
終了条件は、例えば次のような２つの条件が考えられる。１つめは、ある分割プログラムの集合の平均値が一定のレベルを超えた若しくは数世代にわたって一定のレベル以上にならない場合に、種の進化が停止したと判断する方法である。この場合は、ある世代の分割プログラムの評価値の平均を求めることで、終了条件に合致したか否かが検出できる。この平均値で評価する場合は、特に、ステップＳ３６のように評価値の高い分割プログラムを選択することにより、その次の世代の分割プログラムの平均的評価値も高くなる。
【００５１】
２つめは、ある分割プログラムの集合のなかで最も良い値が一定のレベルを超えた若しくは数世代にわたって一定のレベル以上にならない場合に、種の進化が停止したと判断する方法である。図７の例は、この２つの例である。この場合は、集合の中から１つの優秀な評価値をもつ部分プログラムが生成されればよいので、ステップＳ３６では、評価値にかかわらずランダムに次世代の分割プログラムを選択しても差し支えないと考えられる。
【００５２】
図１２は、図７の分割処理に従って進化させた時の進化の状況を示す図である。図１２に従って、分割処理における進化の状況を概説する。最初に、実行対象プログラムＰ０に対してグラフが生成され、そのグラフをランダムに分割して、第１世代のＫ個の分割プログラムＰ１−１〜Ｐ１−Ｋが生成される。そして、その分割プログラムの集合からランダムに選択した１対の分割プログラムを交差して（Ｓ３２，Ｓ３４）、部分的に遺伝子情報を受け継いだ第２世代のＬ個（＞Ｋ個）の分割プログラムＰ２−１〜Ｐ２−Ｌを生成する。そして、それぞれの分割プログラムの評価値を比較して、より優秀な評価値を有するＫ個の分割プログラムＰ２−１〜Ｐ２−Ｋに絞る（Ｓ３６）。こうして、第１世代と同じ数のＫ個の分割プログラムの集合が第２世代の分割プログラムとして生成される。そして、この第２世代の分割プログラムのうち、最良の評価値を有する分割プログラム（例えばＰ２−１２）を記録しておく。
【００５３】
同様にして、第２世代の分割プログラムを交差して、Ｌ個の第３世代の分割プログラムを生成し、Ｋ個の第３世代の分割プログラムに絞る。そして、その第３世代で最良の評価値を有する分割プログラム（例えばＰ３−１３）を記録しておく。同様の交差Ｓ３２と絞り込みＳ３６を繰り返し、各世代内で最良の評価値を比較し、数世代にわたってこの最良の評価値に改良が見られなくなったら（Ｓ４０）、分割処理を終了する。
【００５４】
図１３は、本実施の形態の変形例を示す図である。図１２に示したとおり、親世代の分割プログラムからランダムに選択した１対の分割プログラムを交差させて、子世代の分割プログラムを生成してきたが、図１３の変形例では、第１世代の分割プログラムの集合を複数のセグメントＳＥＧ０〜ＳＥＧｎに分けて、各セグメント内において主に交差を繰り返す。そして、まれに若しくは一定の比率で、異なるセグメント内の分割プログラム間で交差させる。
【００５５】
この方法は、ある地域内において主に交差が繰り返されて、まれに地域外との交差が行われる場合に、より良質の種が生み出されるという種の進化のルールに従うものであり、より最適な分割プログラムを生成できることが期待できる。
【００５６】
以上、実施の形態例をまとめると以下の付記の通りである。
【００５７】
（付記１）所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する工程とを有し、
前記工程（ｅ）で選択された複数の分割プログラムに対して、前記工程（ｄ）と工程（ｅ）とを繰り返すことを特徴とするプログラム分割方法。
【００５８】
（付記２）付記１において、
前記遺伝子データの分割情報は、前記分割プログラムの有向枝の集合のうち、分割により切断された切断有向枝と切断されなかった非切断有向枝とを示す情報であることを特徴とするプログラム分割方法。
【００５９】
（付記３）付記１において、
前記遺伝子データの分割情報は、分割による切断部分についての点と非切断部分についての点とを示す情報であることを特徴とするプログラム分割方法。
【００６０】
（付記４）付記２または３において、
前記工程（ｄ）の交差において、前記１対の分割プログラムをそれぞれランダムに２分割し、互いに異なる分割部分を融合して、次世代の１対の分割プログラムを生成し、当該次世代の分割プログラムの遺伝子データが、前世代の分割プログラムの遺伝子データの一部を引き継ぐことを特徴とするプログラム分割方法。
【００６１】
（付記５）付記１において、
前記工程（ｄ）と工程（ｅ）の繰り返しが、前記交差により生成された分割プログラムの評価値に応じて終了されることを特徴とするプログラム分割方法。
【００６２】
（付記６）付記５において、
前記各世代内の複数の分割プログラムのうち、最良の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、もはや改良されなくなったときに、前記工程（ｄ）と工程（ｅ）の繰り返しが終了されることを特徴とするプログラム分割方法。
【００６３】
（付記７）付記５において、
前記各世代内の複数の分割プログラムの評価値の平均値が、所定数の連続する世代において、もはや改良されなくなった時に、前記工程（ｄ）と工程（ｅ）の繰り返しが終了することを特徴とするプログラム分割方法。
【００６４】
（付記８）付記１において、
前記グラフモデルは、更に、前記データを点の集合として、前記データへのアクセスを前記記述の点の点とデータの点とを結ぶ有向枝の集合として有し、前記データ送信量は、前記部分プログラムと有向枝で結ばれたデータのデータ量の合計を、当該分割プログラム内で合算した値であることを特徴とするプログラム分割方法。
【００６５】
（付記９）付記１において、
前記評価値は、前記部分プログラムへのデータ送信量に加えて、更に、前記複数の部分プログラムの数と、当該部分プログラムのパス長の累計値とを有する評価関数により求められることを特徴とするプログラム分割方法。
【００６６】
（付記１０）付記１において、
前記交差により新たに生成された分割プログラムの遺伝子データが、所定の分割形態を有する致死遺伝子データである場合は、当該致死遺伝子データに対応する分割プログラムが除外されることを特徴とするプログラム分割方法。
【００６７】
（付記１１）付記１において、
前記複数の分割プログラムが複数のセグメントに分割されており、
前記工程（ｄ）において、同じセグメント内の１対の分割プログラムに対する交差処理が第１の割合で行われ、異なるセグメント間の１対の分割プログラムに対する交差処理が前記第１の割合よりも少ない第２の割合で行われることを特徴とするプログラム分割方法。
【００６８】
（付記１２）所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める工程とを有し、
前記工程（ｄ）で生成された複数の分割プログラムに対して、前記工程（ｄ）と工程（ｅ）とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム分割方法。
【００６９】
（付記１３）付記１２において、
前記各世代内の複数の分割プログラムのうち、最良の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、もはや改良されなくなったときに、前記工程（ｄ）と工程（ｅ）の繰り返しが終了されることを特徴とするプログラム分割方法。
【００７０】
（付記１４）付記１２において、
前記各世代内の複数の分割プログラムの評価値の平均値が、所定数の連続する世代において、もはや改良されなくなった時に、前記工程（ｄ）と工程（ｅ）の繰り返しが終了することを特徴とするプログラム分割方法。
【００７１】
（付記１５）付記１２において、
前記評価値は、少なくとも前記部分プログラムへのデータ送信量を有することを特徴とするプログラム分割方法。
【００７２】
（付記１６）付記１２において、
前記遺伝子データの分割情報は、分割による切断部分についての点と非切断部分についての点とを示す情報であることを特徴とするプログラム分割方法。
【００７３】
（付記１７）付記１２において、
前記工程（ｄ）の交差において、前記１対の分割プログラムをそれぞれランダムに２分割し、互いに異なる分割部分を融合して、次世代の１対の分割プログラムを生成し、当該次世代の分割プログラムの遺伝子データが、前世代の分割プログラムの遺伝子データの一部を引き継ぐことを特徴とするプログラム分割方法。
【００７４】
（付記１８）所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、前記分割手順は、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する手順とを有し、
前記工程（ｅ）で選択された複数の分割プログラムに対して、前記手順（ｄ）と手順（ｅ）とを繰り返すことを特徴とするプログラム。
【００７５】
（付記１９）所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、前記分割手順は、
（ａ）実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
（ｂ）前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
（ｃ）前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
（ｄ）前記複数の分割プログラムの中からランダムに選択された１対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
（ｅ）前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める手順とを有し、
前記手順（ｄ）で生成された複数の分割プログラムに対して、前記手順（ｄ）と手順（ｅ）とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム。
【００７６】
【発明の効果】
以上、本発明によれば、遺伝的アルゴリズムを利用して、実行対象のプログラムに変更や追加を行うことなく分割処理を行って、複数のプロセッサによる並列処理に最適な分割プログラムを生成することができる。
【図面の簡単な説明】
【図１】本実施の形態におけるプログラムの実行手順を示したフローチャート図である。
【図２】実行対象プログラムを実行するマルチプロセッサシステムの構成図である。
【図３】プログラムのモデル化の一例を示す図である。
【図４】実行対象プログラムをグラフ化した例を示す図である。
【図５】図４のプログラムを分割した分割プログラムのグラフ例を示す図である。
【図６】図４のプログラムを分割した分割プログラムのグラフ例を示す図である。
【図７】本実施の形態におけるプログラムの分割方法を示すフローチャート図である。
【図８】本実施の形態における交差アルゴリズムを示す図である。
【図９】ランダムに切断された枝の融合による処理を示す図である。
【図１０】致死遺伝子の一例を示す図である。
【図１１】データの送信量の総和の求め方を示す図である。
【図１２】図７の分割処理に従って進化させた時の進化の状況を示す図である。
【図１３】本実施の形態の変形例を示す図である。
【符号の説明】
Ｆ１：実行対象プログラム、Ｆ２−Ａ〜Ｆ２−Ｎ：分割プログラム、Ｇｐ：グラフ、Ｖｐ：点、Ｅｐ：有向枝、ｇ：遺伝子データ
【図１】
2004185271.tif 000003
【図２】
2004185271.tif 000004
【図３】
2004185271.tif 000005
【図４】
2004185271.tif 000006
【図５】
2004185271.tif 000007
【図６】
2004185271.tif 000008
【図７】
2004185271.tif 000009
【図８】
2004185271.tif 000010
【図９】
2004185271.tif 000011
【図１０】
2004185271.tif 000012
【図１１】
2004185271.tif 000013
【図１２】
2004185271.tif 000014
【図１３】
2004185271.tif 000015