JP2004185271A - プログラム分割方法とそれを実施するプログラム - Google Patents
プログラム分割方法とそれを実施するプログラム Download PDFInfo
- Publication number
- JP2004185271A JP2004185271A JP2002350967A JP2002350967A JP2004185271A JP 2004185271 A JP2004185271 A JP 2004185271A JP 2002350967 A JP2002350967 A JP 2002350967A JP 2002350967 A JP2002350967 A JP 2002350967A JP 2004185271 A JP2004185271 A JP 2004185271A
- Authority
- JP
- Japan
- Prior art keywords
- program
- programs
- divided
- division
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】実行対象プログラムを複数の記述を点の集合とし、複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する。そして、その記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数生成し、それぞれに、分割情報を有する遺伝子データを生成する。その後、複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程を、交差により生成された次世代の分割プログラムの評価値が一定の条件を満たすまで繰り返す。
【選択図】図8
Description
【発明の属する技術分野】
本発明は、複数のプロセッサにより効率的に実行できるようにプログラムを分割する方法とその分割方法をコンピュータに実行させるプログラムに関し、特に遺伝子を利用した遺伝的アルゴリズム(ジェネティック・アルゴリズム)を利用してプログラムを分割する方法及びその分割方法を行うプログラムに関する。
【0002】
【従来の技術】
近年において、システムを効率的に利用する方法として、複数のマイクロプロセッサをひとまとめにして所定のプログラムを並列的に実行させるマルチプロセッサシステムが提案されている。元々1つのプログラムを1つのプロセッサで実行するよりも、そのプログラムを複数の部分プログラムに分割して、その分割された部分プログラムを複数のプロセッサで実行したほうが、プログラム全体の実行に要する時間を短縮できる。
【0003】
このように、与えられた逐次的なプログラムを、複数のプロセッサで協調して実行するために、プログラム作成者がプログラムに意図的に並列実行を行わせるような追加的な記述を加える方法や、コンピュータにより実行対象の逐次的なプログラムを自動的に分割させる方法などが提案されている。本発明は、このうち後者の方法に関するものである。
【0004】
このようなプログラムの分割方法としては、与えられた実行対象のプログラムに何らの変更も行うことなく分割を行う方法と、与えられた実行対象プログラムに何らかの変更を加えてから分割を行う方法とが提案されているが、前者のほうが実行対象プログラムへの変更を加えないという理由で好ましい。
【0005】
プログラムの分割方法としては、以下の先行技術が提案されている。
【0006】
【特許文献1】
特開平7−281907号公報
【0007】
【特許文献2】
特開平9−282290号公報
【0008】
【発明が解決しようとする課題】
しかしながら、上記の特許文献のプログラム分割方法は、複雑なアルゴリズムによるものであり、実行対象のプログラムを適切に且つ簡単に分割する方法については、具体的な提案はあまりない。
【0009】
そこで、本発明の目的は、実行対象のプログラムを、簡単なアルゴリズムで、複数のプロセッサにより効率的に実行可能な複数の部分プログラムに分割する方法と、その分割方法をコンピュータに実行させるプログラムを提供することにある。
【0010】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの側面は、所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する工程とを有し、
前記工程(e)で選択された複数の分割プログラムに対して、前記工程(d)と工程(e)とを繰り返すことを特徴とする。
【0011】
上記の発明の側面において、より好ましい実施例では、遺伝子データの分割情報は、前記分割プログラムの有向枝の集合のうち、分割により切断された切断有向枝と切断されなかった非切断有向枝とを示す情報であることを特徴とする。また、別の実施例では、遺伝子データの分割情報は、例えば、分割による切断部分に係る点と非切断部分に係る点とを示す情報であることを特徴とする。
【0012】
更に、上記の発明の側面において、より好ましい実施例では、上記工程(d)と工程(e)の繰り返しが、各世代内の分割プログラムの評価値に応じて終了されることを特徴とする。例えば、各世代内の複数の分割プログラムのうち、最高の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、最早改良されなくなったときに、前記工程(d)と工程(e)の繰り返しが終了されることが好ましい。
【0013】
上記の発明によれば、複数の部分プログラムに分割された分割プログラムの分割情報を遺伝子データとして持たせ、ランダムに選択された1対の分割プログラムを交差して次世代の分割プログラムを生成することを繰り返すことにより、最適な分割プログラムを生み出すことができる。この方法によれば、実行対象のプログラムに変更、追加を行うことなく、遺伝的アルゴリズムを利用した簡単なアルゴリズムによって分割して、複数のプロセッサで実行可能な分割プログラムを生成することができる。
【0014】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、本発明の保護範囲は、以下の実施の形態例に限定されるものではなく、特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【0015】
図1は、本実施の形態におけるプログラムの実行手順を示したフローチャート図である。また、図2は、実行対象プログラムを実行するマルチプロセッサシステムの構成図である。図1,2を参照しながら、実行対象プログラムを分割して複数のプロセッサにより並列処理することについて説明する。
【0016】
最初に、メインプロセッサ10に、実行対象の逐次処理型のプログラムF1が入力される(S10)。メインプロセッサ10は、この実行対象プログラムF1を、分割方法を実行するプログラムF2によって、複数の部分プログラムに分割する(S12)。この分割されたプログラムが分割プログラムであり、この分割プログラムは、複数の部分プログラムA〜Nを有する。そして、メインプロセッサ10は、この分割プログラムに含まれる部分プログラムA〜Nを、複数のプロセッサ10−A〜10−Nに割り当ててそれぞれに実行させる(16−A〜16−N)。この場合、必ずしも、プロセッサの数と部分プログラムの数とが一致する必要はなく、あるプロセッサが複数の部分プログラムを処理し、他のプロセッサが単一の部分プログラムを処理してもよい。これにより、単一のプログラムF1が、複数のプロセッサにより並列に処理されるので、プログラムの実行効率を高めることができる。
【0017】
図2中において、メインプロセッサ10や複数のプロセッサ群10−A〜10−Nは、それぞれ内部にCPUと、入出力手段I/Oと、メモリRAM,ROMを有し、内部バスを介して接続されている。そして、メインプロセッサ10内のROMに分割方法を実行するプログラムF2が格納されている。
[遺伝的アルゴリズム]
本実施の形態では、図1の入力プログラムの分割方法を提供するものであり、その分割方法は、遺伝的アルゴリズムを利用したものである。遺伝的アルゴリズムの基本的な考え方は、次の通りである。
【0018】
遺伝的アルゴリズムは、良い親の集まりからは良い子の集まりが得られるというポリシーに基づいて、最良の解を探索する手法である。即ち、生物が進化していく過程を、コンピュータ上で問題を解く過程として利用するものである。例えば、ある問題が取りうる全ての解の集合をAとし、解の集合Aの部分集合であるCiを世代iの解の集合であるとする。また、この解Ciを評価する評価関数feval(Ci)を定義する。そして、ある世代iの解Ciを親世代の集合として、その子世代i+1の解の集合をCi+1とし、この子世代の解Ci+1は、親世代の1対の解Ciを交差(crossover)することにより求められるものとする。更に、解Ciの任意の要素を遺伝子(gene)により定義するものとし、親世代の1対の解Ciがそれぞれ有する遺伝子データが、次の世代である子世代の解Ci+1にも一部受け継がれるものとする。つまり、親世代の1対の解Ciが有する遺伝子g1,g2と、ランダムに与えられたパラメータとをもとにして、子世代の1対の解Ci+1の遺伝子g12、g21が生成される。但し、交差だけではローカルな最小値(local minima)に落ち込む恐れがあるので、交差時に突然変異(Mutation)による遺伝子の変異もまれに且つランダムに発生させる。
【0019】
但し、交差と突然変異によって、親世代の解Ciから子世代の解Ci+1を発生させているだけでは、取りうる解の集合Aを逸脱する解が発生する場合がある。従って、実現不可能な(Infeasible)な解が持つ遺伝子を致死遺伝子(lethal gene)と呼んで、そのような致死遺伝子を有する解は、子世代から排除するようにする。
【0020】
以上の遺伝的アルゴリズムを利用して、実行対象プログラムを複数の部分プログラムからなる分割プログラムを生成する。上記の交差により子世代の解を生成する時の交差関数と、突然変異を発生させた時の変異関数と、交差を繰り返して生成された解が適切であるか否かを判断する評価関数を適切に定義することで、最適な分割プログラムを自動生成することが可能になる。
[評価関数の考え方]
上記の通り、実行対象プログラムを複数の部分プログラムに分割し、それらを複数のプロセッサにより実行する場合に、実行効率を良好にする分割状態とはどういうものかについて、基準となる評価値を求める評価関数を定義する必要がある。そこで、この評価関数をどのようにすべきかの考え方を説明する。評価値は、分割プログラムの実行時間や消費電力など様々な指標を選択することができる。最も典型的には、評価値は、分割プログラムの実行時間である。
【0021】
この実行時間は、各部分プログラムの実行に要する時間の総和であるが、各部分プログラムの実行時間は、部分プログラムの総実行ステップ数と、部分プログラムを実行するためのデータ準備時間などの和で表される。特に、後者の時間は、分割された部分プログラムが異なるプロセッサにより実行されるので、部分プログラム間で共有するデータ量、つまり異なるプロセッサ間で転送しあうデータ量を少なくすることが望ましいといえる。
【0022】
短絡的に考えれば、部分プログラム間で共有するデータの量を最も少なくするためには、全ての部分プログラムを単一のプロセッサで実行すればよい。それにより、転送すべきデータ量はゼロになる。しかし、複数の部分プログラムを単一のプロセッサで実行させることは、並列に動作させることで動作時間を短縮させるという本来の目的に整合しないことになり、好ましくないのは当然である。
【0023】
また、部分プログラムの数を減らすことは、部分プログラム間で共有すべきデータ量を減らすことに貢献するものの、1つの部分プログラムの実行ステップ数が多くなって、1つのプロセッサを占有する時間が長くなる。更に、複数の部分プログラムを複数のプロセッサに振り分けるスケジューリングの柔軟性が悪くなり、プロセッサ群の平均稼働率が低下することも招いて、トータルの実行時間が長くなることが予想される。
【0024】
一方で、部分プログラムの数を増やすことは、1つの部分プログラムの実行ステップ数が少なくなって、1つのプロセッサを占有する時間が短くなる。そして、スケジューリングの柔軟性も高くなり、プロセッサ群の平均稼働率が向上する。しかし、部分プログラム間で共有すべきデータ量が増大して、部分プログラム実行に必要な準備時間が長くなるということが予想される。
【0025】
以上のことを総括すると、マルチプロセッサシステムで実行効率を高めることができる分割プログラムの評価値としては、次のような性質が含まれる。
(1)プロセッサ間でのデータ通信時間が長くなるような箇所では、プログラムの分割を行わない。
(2)部分プログラムの大きさは、大き過ぎず同時に小さ過ぎてもいけない。
(3)部分プログラムの数は、多過ぎず、同時に少な過ぎてもいけない。
これらの性質が反映された評価関数を定義することで、種の進化過程において適切な分割プログラムが生成されたか否かを判断することができる。
[プログラムのモデル化]
実行対象のプログラムを一定の分割アルゴリズムによるプログラムによって複数の部分プログラムに分割するためには、実行対象プログラムをモデル化して情報処理に適したデータ構造にする必要がある。そこで、本実施の形態では、実行対象プログラムは、グラフG=(V,E)で与えられると定義する。ここで、Vpは実行対象プログラム中の記述を表す点の集合であり、Vqはプログラム中のデータを表す点の集合であり、この集合Vp、Vqを合わせて点の集合Vで表される。また、Epは実行対象プログラム中の記述の実行順序を示す有向枝の集合であり、Eqはデータへのアクセス(リードとライト)を表す有向枝の集合であり、この集合Ep、Eqを合わせて有向枝の集合Eで表される。
【0026】
図3はプログラムのモデル化の一例を示す図である。図3(A)は、実行対象プログラムF1であり、各記述が含まれるステップa〜dからなり、各ステップではデータV〜Yに対して読み出しや書き込みが行われている。このような実行対象プログラムF1をモデル化したグラフGが、図3(B)に示される。このグラフGは、記述の点集合Vp={a,b,c,d}及びデータの点集合Vq={V,W,X,Y}からなる点集合Vと、記述の実行順序の有向枝集合Ep={ab,bc,cd}及びデータへのアクセスの有向枝集合Eq={aV,Vb,bV,Vc,cX,Wd,Xd,dY}からなる有向枝集合Eとにモデル化される。
[遺伝子]
遺伝的アルゴリズムを適用するためには、モデル化された実行対象プログラムを複数の部分プログラムに分割して得られた分割プログラムを、遺伝子で表さなければならない。そこで、本実施の形態では、分割プログラムの分割状況を示す分割情報を、遺伝子情報として表す。第1の例として、遺伝子データの分割情報は、分割プログラムの有向枝の集合Epに対応して、分割により切断された切断有向枝と切断されなかった非切断有向枝とを「0」「1」で示す情報である。あるいは、第2の例としては、分割情報は、分割プログラムの記述の集合Vpに対応して、分割による切断部分に係る点と非切断部分に係る点とを示す情報である。以下の例では、第1の例に従って遺伝子を説明する。
【0027】
図4は、実行対象プログラムをグラフ化した例を示す図である。このグラフGpは、以下の記述の点集合Vpとその実行順序の有向枝集合Epとでモデル化される。
Vp={a,b,c,d,e,f,g,h,i,j,k,l,m}
Ep={ab,ac,bd,be,cf,dg,eh,fi,fj,gk,hk,ik,il,jl,km,lm}
このようにモデル化されたグラフGpの分割例が、図5、図6に示される。図5、図6は、図4のプログラムを分割した分割プログラムのグラフ例を示す図である。図5の例では、4つの部分プログラムに分割され、各部分プログラムは、{a,c,f,i,k}と{b,d,g}と{e,h}と{j,l,m}とで構成される。また、図6の例では、6つの部分プログラムに分割され、各部分プログラムは、{a,c}と{b,e,h}と{d,g}と{f,j}と{i,l}と{k,m}とで構成される。
【0028】
このように分割された場合、モデル化されたグラフの有向枝が、分割された部分プログラムの境界にあるか否か、または切断枝か非切断枝かを表す情報を遺伝子としてすることができる。つまり、遺伝子gは、有向枝の集合Epの要素に対応する「0」(境界の枝、切断枝)と「1」(非境界の枝、非切断枝)との系列として定義することができる。つまり、図5の例では、遺伝子gは、上記Epに対応してg={0,1,1,0,1,1,1,1,0,0,0,1,0,1,0,1}となり、図6の例では、遺伝子gは、g={0,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0}となる。以上のとおり、モデルGとその遺伝子gが示されれば、分割プログラムの分割状態を一義的に再現することができる。
[分割方法の具体例]
以上の前提をもとに、本実施の形態における実行対象プログラムを遺伝的アルゴリズムにより分割する方法について、以下説明する。
【0029】
図7は、本実施の形態におけるプログラムの分割方法を示すフローチャート図である。このフローチャートに対応する分割方法実行プログラムF2が、図2で示したとおり、メインプロセッサ10のROM内に格納されている。最初に、実行対象プログラムF1がメインプロセッサ10に入力される(S20)。入力された実行対象プログラムF1は、上記の方法でグラフ化される。このグラフ化により生成されたグラフGに対して、グラフの各点と各枝に対して、後述する評価関数による評価値を求めるための重み付けを行う(S24)。この重み付けは、図3(B)のグラフの例で説明すると、各データに対応する点V〜Yに対しては、そのデータ量を重みとする。また、各記述に対応する点a〜dに対しては、その処理時間を重みとする。そして、記述に対応する点a〜dとデータに対応する点V〜Yとの間の枝に対しては、それぞれのデータへのアクセス時間を重みとする。例えば、データがプロセッサの近い位置に格納されていればアクセス時間が短く、遠い位置に格納されていればアクセス時間が長いなどである。更に、記述に対応する点a〜d間の枝に対しては、例えば、異なるプロセッサに引き継ぐ時に必要な時間の長さを重みとする。これらの重み付けは、評価関数にどのような要素が利用されるかにより、選択的に生成すればよい。
【0030】
次に、実行対象プログラムをランダムに複数の部分プログラムに分割して、複数の分割プログラムを生成する(S26)。この工程では、図4に示されたようなグラフGpの実行対象プログラムを、複数の部分プログラムにランダムに分割して、図5,図6などに示したような分割プログラムを生成する。そして、生成されたそれぞれの分割プログラムに対して、それぞれ遺伝子gを生成する(S28)。つまり、前述のとおり、グラフGpの枝集合Epの各要素が、部分プログラムに分割された時の切断枝か非切断枝かを「1」「0」で示す遺伝子gを生成する。そして、この最初の分割プログラムの集合を、第1世代(i=1)の分割プログラムと定義する(S30)。この第1世代の分割プログラムには、後述する致死遺伝子を持つものは含まれないものとする。
【0031】
次に、第1世代の複数の分割プログラムのうち、ランダムに選択した1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成する(S32)。つまり、親世代の分割プログラムを交差させて、子世代の分割プログラムを生成させる。この子世代の分割プログラムは、親世代の分割プログラムの数よりも多いことが望ましい。そこで、交差のアルゴリズムについて説明する。
[交差アルゴリズム]
交差とは、2つの遺伝子から新しい遺伝子を作り出す操作である。本実施の形態では、分割プログラムの分割情報を有する2つの遺伝子をある交差アルゴリズムで交差させて、新たな遺伝子を生成する。遺伝的な意味での交差では、親の遺伝子情報(分割情報)が子供にも伝達される。それにより、親の持っている特徴(分割の特徴)が子供にも遺伝される。そして、交差により新たに生まれた子供のうち、評価値が高いすぐれたものを残し、更に交差によって次の世代の子供を産むようにすることで、種の原理によりすぐれた種(分割プログラム)が生成されていく。但し、常に同じアルゴリズムにより親の遺伝子情報を子供にも引き継ぐようにすると、ある狭い領域内での優秀な種しか生まれないので、まれに突然変異を発生させて、新たな探索領域を発生させることが必要である。
【0032】
図8は、本実施の形態における交差アルゴリズムを示す図である。図8は、2つのグラフG1,G2を交差させて、次の世代のグラフG12,G21を生成するアルゴリズムが示されている。この交差アルゴリズムによれば、分割プログラムに対応するグラフGp=(Vp,Ep)のランダムな2分割部分Gpa、Gpbを生成する。このランダムな切断線CTにより、複数の枝が切断される。そして、それぞれのグラフの2分割部分G1a,G1b,G2a,G2bを互いに入れ替えて融合することで、新たなグラフ
G12=G1a+G2b
G21=G2a+G1b
を生成する。上記の切断線CTをランダムに選択すること自体が、交差時のランダムなパラメータを意味している。
【0033】
これにより、グラフG12の遺伝子g12は、グラフG1の遺伝子g1の一部とグラフG2の遺伝子g2の一部を引き継いだものになる。また、グラフG21の遺伝子g21も、同様に遺伝子g1の一部とg2の一部を引き継いだものになる。つまり、グラフG12の遺伝子g12とグラフG21の遺伝子g21は、グラフG1の一部の分割情報とグラフG2の一部の分割情報とを有する。但し、ランダムに切断された枝については、融合されるときに所定のルールに従って、切断枝か非切断枝かになる。
【0034】
図9は、ランダムに切断された枝の融合による処理を示す図である。2つに切断された親のグラフを融合した場合、図9のケース1,2,3に示されるように、その切断線CTにおいて、親のグラフでの切断枝と非切断枝とが融合する場合(ケース1,2)と、親のグラフでの非切断枝と非切断枝とが融合する場合(ケース3)とが考えられる。その場合、ケースAのようにそれらの枝をつなぐケースと、ケースBのようにそれらの枝を切断するケースのいずれかにランダムに選択する。或いは、ケースA,Bのいずれか一方を原則的に選択し、まれに他方のケースを選択するようにしてもよい。このいずれかのケースをランダムに選択することは、突然変異を含んだ融合である。また、いずれか一方のケースを原則的に選択し、まれに他方のケースを選択することも、突然変異(まれに他方のケースを選択すること)を含んだ融合である。図8の例では、いずれかのケースA,Bをランダムに選択している。
【0035】
なお、ランダムに切断されたグラフを融合する時に、親のグラフで切断枝と切断枝とが融合する場合があるが、その場合は、融合によっても切断枝のままとする。
【0036】
上記の融合のアルゴリズムは、一例であり、これに限定されるものではない。例えば、上記の例と逆に、いずれか一方が親のグラフにおいて切断枝であれば融合しても切断し、両方共に親のグラフにおいて非切断枝の場合であれば融合しても非切断枝にするようにしても良い。
【0037】
突然変異のアルゴリズムは、上記の融合時のアルゴリズムにランダム性を含ませる他に、融合後のグラフの任意の枝について、非切断枝を切断枝に変更する操作であっても良い。この操作は、ある部分プログラムを複数の部分プログラムに変更する操作である。この操作であれば、後述する致死遺伝子を生成するリスクをなくすことができる。このような操作をすることにより、親の遺伝子とは異なる遺伝子に突然変異することになり、突然変異が発生したことになる。
[致死遺伝子]
ここで、致死遺伝子について説明する。図10は、致死遺伝子の一例を示す図である。この分割プログラムによれば、部分プログラム(b,d,g,e,h)と(f,i,j,l)とが、内部に並列的な関係を有している。複数のプロセッサに分配される部分プログラム自体が並列的な記述部分を含んでいることは、プログラムの実行時間短縮の目的に整合せず、好ましくない。そこで、このような部分プログラムを有する分割プログラムは、致死遺伝子とし、新たな生命として誕生したものとはしないようにする。
【0038】
例えば、図7の工程S26において、実行対象プログラムを分割して複数の分割プログラムを生成するが、この生成された分割プログラムから、致死遺伝子を有するものは除外することが望ましい。また、工程S32において、交差によって次世代の分割プログラムを生成するが、ここでも生成された分割プログラムから、致死遺伝子を有するものを除外することが望ましい。
【0039】
このように、分割状態がそもそも分割プログラムとして好ましくない状態を致死遺伝子として取り扱うことで、種の進化の過程からそのような好ましくない遺伝子を持つ種を排除することが好ましい。致死遺伝子を排除することで、実現可能な遺伝子を持つ親世代を交差すれば、その子世代で生成される遺伝子も必ず実現可能になる。
【0040】
更に、上記の致死遺伝子ではない遺伝子に対して、前述の非切断枝を切断する突然変異を発生させても、その結果生成される分割プログラムの遺伝子は致死遺伝子になることはない。
【0041】
図7のフローチャートに戻り、交差により次世代の複数の分割プログラムが生成されると(S32)、次に、評価関数に基づいて、評価値が高い分割プログラムを選択する。例えば、親の世代の分割プログラムの数と、子の世代の分割プログラムの数とが同等になるように、交差により新たに生まれた複数の分割プログラムの数を減少させる(S36)。こうすることにより、種の進化過程で、優秀な種のみが残されてくることになる。但し、探索領域が限定されたローカルミニマに陥ることを防止するために、まれに或いは低い比率で突然変異が発生される(S34)。
[評価関数の具体例]
前述の評価関数の考え方によれば、分割プログラムの評価値としては、次のような性質が含まれる。
(1)プロセッサ間でのデータ通信時間が長くなるような箇所では、プログラムの分割を行わない。
(2)部分プログラムの大きさは、大き過ぎず同時に小さ過ぎてもいけない。
(3)部分プログラムの数は、多過ぎず、同時に少な過ぎてもいけない。
【0042】
そこで、上記の具体例における評価関数を説明する。まず、分割プログラムに対応するグラフGpの部分プログラムの数n、グラフGpにおける部分プログラム間でのデータの送信量の総量d、部分プログラム内の最長パスの総和lに対して、評価関数fevalは、例えば、
feval(n,pn,l,pl,d,pd)=npn/(dpd×lpl) (1)
ここで、pn,pl,pdは係数である。
【0043】
そして、上記の評価関数の考え方(1)(2)(3)の重要度に応じて、これらの係数が具体的に決定される。例えば、考え方(1)が最も重要な場合は、この係数pdが大きく設定される。
【0044】
図5の分割プログラムのグラフの場合は、部分プログラムの数n=4、部分プログラム内の最長パスの総和l=5+3+2+3=13となる。一方、図5のグラフの婆波、部分プログラムの数n=6、部分プログラム内の最長パスの総和l=2+3+2+2+2+2=13となる。
【0045】
図11は、データの送信量の総和の求め方を示す図である。まず、図11中の上段に示されたグラフは、一例として図8の交差で生成されたグラフG12に対するデータDa〜Deへのアクセスの関係を示している。枝の矢印の方向がデータが通信される方向に対応するので、記述からデータに向かう矢印は書き込み、データから記述に向かう矢印は読み出しをそれぞれ示す。
【0046】
このようなグラフの例において、各部分プログラムに対する複数の枝を1つにまとめて(縮体して)、図11の下段のグラフを作成する。このグラフでは、6つの部分プログラムに対する各データへのアクセスを示す枝が示され、各データにはそのデータ量が括弧内に示されている。そして、1つの部分プログラムへの複数の枝は、1回のデータ転送とみなすことができる。なぜなら、部分プログラムは同じプロセッサにより実行されるので、あるデータに対して1回アクセスすれば、そのプロセッサはそのデータを保有しており、それ以降のアクセスが発生しても、プロセッサ内部のメモリから取得可能であり、データの送信を行う必要はないからである。
【0047】
従って、部分プログラム{a,c,f,i,l}に対しては、データDa,Db,Ddへのアクセスがあり、それぞれのデータ量が3,2,9であるので、その部分プログラムへのデータ送信量は、d=3+2+9=11となる。同様に、他の部分プログラムに対してもデータ送信量を求めると、合計でd=51になる。つまり、図11に示される通りである。
【0048】
上記の部分プログラムの数nと、最長パスの総和lと、データ送信量dが求められれば、上記式(1)の評価関数fevalに従って、分割プログラムの評価値を求めることができる。この評価関数を最適化することにより、ステップS36において、最良の分割プログラムを選択することができる。
【0049】
以上の操作により、次の世代の分割プログラムが生成されたことになる。そこで、世代数iをインクリメントする(S38)。そして、上記ステップS32,S34,S36,S38を、所定の終了条件(S40)に合致するまで繰り返す。繰り返すことで、種の進化によってより最適な分割プログラムが生成される。
【0050】
終了条件は、例えば次のような2つの条件が考えられる。1つめは、ある分割プログラムの集合の平均値が一定のレベルを超えた若しくは数世代にわたって一定のレベル以上にならない場合に、種の進化が停止したと判断する方法である。この場合は、ある世代の分割プログラムの評価値の平均を求めることで、終了条件に合致したか否かが検出できる。この平均値で評価する場合は、特に、ステップS36のように評価値の高い分割プログラムを選択することにより、その次の世代の分割プログラムの平均的評価値も高くなる。
【0051】
2つめは、ある分割プログラムの集合のなかで最も良い値が一定のレベルを超えた若しくは数世代にわたって一定のレベル以上にならない場合に、種の進化が停止したと判断する方法である。図7の例は、この2つの例である。この場合は、集合の中から1つの優秀な評価値をもつ部分プログラムが生成されればよいので、ステップS36では、評価値にかかわらずランダムに次世代の分割プログラムを選択しても差し支えないと考えられる。
【0052】
図12は、図7の分割処理に従って進化させた時の進化の状況を示す図である。図12に従って、分割処理における進化の状況を概説する。最初に、実行対象プログラムP0に対してグラフが生成され、そのグラフをランダムに分割して、第1世代のK個の分割プログラムP1−1〜P1−Kが生成される。そして、その分割プログラムの集合からランダムに選択した1対の分割プログラムを交差して(S32,S34)、部分的に遺伝子情報を受け継いだ第2世代のL個(>K個)の分割プログラムP2−1〜P2−Lを生成する。そして、それぞれの分割プログラムの評価値を比較して、より優秀な評価値を有するK個の分割プログラムP2−1〜P2−Kに絞る(S36)。こうして、第1世代と同じ数のK個の分割プログラムの集合が第2世代の分割プログラムとして生成される。そして、この第2世代の分割プログラムのうち、最良の評価値を有する分割プログラム(例えばP2−12)を記録しておく。
【0053】
同様にして、第2世代の分割プログラムを交差して、L個の第3世代の分割プログラムを生成し、K個の第3世代の分割プログラムに絞る。そして、その第3世代で最良の評価値を有する分割プログラム(例えばP3−13)を記録しておく。同様の交差S32と絞り込みS36を繰り返し、各世代内で最良の評価値を比較し、数世代にわたってこの最良の評価値に改良が見られなくなったら(S40)、分割処理を終了する。
【0054】
図13は、本実施の形態の変形例を示す図である。図12に示したとおり、親世代の分割プログラムからランダムに選択した1対の分割プログラムを交差させて、子世代の分割プログラムを生成してきたが、図13の変形例では、第1世代の分割プログラムの集合を複数のセグメントSEG0〜SEGnに分けて、各セグメント内において主に交差を繰り返す。そして、まれに若しくは一定の比率で、異なるセグメント内の分割プログラム間で交差させる。
【0055】
この方法は、ある地域内において主に交差が繰り返されて、まれに地域外との交差が行われる場合に、より良質の種が生み出されるという種の進化のルールに従うものであり、より最適な分割プログラムを生成できることが期待できる。
【0056】
以上、実施の形態例をまとめると以下の付記の通りである。
【0057】
(付記1)所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する工程とを有し、
前記工程(e)で選択された複数の分割プログラムに対して、前記工程(d)と工程(e)とを繰り返すことを特徴とするプログラム分割方法。
【0058】
(付記2)付記1において、
前記遺伝子データの分割情報は、前記分割プログラムの有向枝の集合のうち、分割により切断された切断有向枝と切断されなかった非切断有向枝とを示す情報であることを特徴とするプログラム分割方法。
【0059】
(付記3)付記1において、
前記遺伝子データの分割情報は、分割による切断部分についての点と非切断部分についての点とを示す情報であることを特徴とするプログラム分割方法。
【0060】
(付記4)付記2または3において、
前記工程(d)の交差において、前記1対の分割プログラムをそれぞれランダムに2分割し、互いに異なる分割部分を融合して、次世代の1対の分割プログラムを生成し、当該次世代の分割プログラムの遺伝子データが、前世代の分割プログラムの遺伝子データの一部を引き継ぐことを特徴とするプログラム分割方法。
【0061】
(付記5)付記1において、
前記工程(d)と工程(e)の繰り返しが、前記交差により生成された分割プログラムの評価値に応じて終了されることを特徴とするプログラム分割方法。
【0062】
(付記6)付記5において、
前記各世代内の複数の分割プログラムのうち、最良の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、もはや改良されなくなったときに、前記工程(d)と工程(e)の繰り返しが終了されることを特徴とするプログラム分割方法。
【0063】
(付記7)付記5において、
前記各世代内の複数の分割プログラムの評価値の平均値が、所定数の連続する世代において、もはや改良されなくなった時に、前記工程(d)と工程(e)の繰り返しが終了することを特徴とするプログラム分割方法。
【0064】
(付記8)付記1において、
前記グラフモデルは、更に、前記データを点の集合として、前記データへのアクセスを前記記述の点の点とデータの点とを結ぶ有向枝の集合として有し、前記データ送信量は、前記部分プログラムと有向枝で結ばれたデータのデータ量の合計を、当該分割プログラム内で合算した値であることを特徴とするプログラム分割方法。
【0065】
(付記9)付記1において、
前記評価値は、前記部分プログラムへのデータ送信量に加えて、更に、前記複数の部分プログラムの数と、当該部分プログラムのパス長の累計値とを有する評価関数により求められることを特徴とするプログラム分割方法。
【0066】
(付記10)付記1において、
前記交差により新たに生成された分割プログラムの遺伝子データが、所定の分割形態を有する致死遺伝子データである場合は、当該致死遺伝子データに対応する分割プログラムが除外されることを特徴とするプログラム分割方法。
【0067】
(付記11)付記1において、
前記複数の分割プログラムが複数のセグメントに分割されており、
前記工程(d)において、同じセグメント内の1対の分割プログラムに対する交差処理が第1の割合で行われ、異なるセグメント間の1対の分割プログラムに対する交差処理が前記第1の割合よりも少ない第2の割合で行われることを特徴とするプログラム分割方法。
【0068】
(付記12)所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める工程とを有し、
前記工程(d)で生成された複数の分割プログラムに対して、前記工程(d)と工程(e)とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム分割方法。
【0069】
(付記13)付記12において、
前記各世代内の複数の分割プログラムのうち、最良の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、もはや改良されなくなったときに、前記工程(d)と工程(e)の繰り返しが終了されることを特徴とするプログラム分割方法。
【0070】
(付記14)付記12において、
前記各世代内の複数の分割プログラムの評価値の平均値が、所定数の連続する世代において、もはや改良されなくなった時に、前記工程(d)と工程(e)の繰り返しが終了することを特徴とするプログラム分割方法。
【0071】
(付記15)付記12において、
前記評価値は、少なくとも前記部分プログラムへのデータ送信量を有することを特徴とするプログラム分割方法。
【0072】
(付記16)付記12において、
前記遺伝子データの分割情報は、分割による切断部分についての点と非切断部分についての点とを示す情報であることを特徴とするプログラム分割方法。
【0073】
(付記17)付記12において、
前記工程(d)の交差において、前記1対の分割プログラムをそれぞれランダムに2分割し、互いに異なる分割部分を融合して、次世代の1対の分割プログラムを生成し、当該次世代の分割プログラムの遺伝子データが、前世代の分割プログラムの遺伝子データの一部を引き継ぐことを特徴とするプログラム分割方法。
【0074】
(付記18)所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、前記分割手順は、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する手順とを有し、
前記工程(e)で選択された複数の分割プログラムに対して、前記手順(d)と手順(e)とを繰り返すことを特徴とするプログラム。
【0075】
(付記19)所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、前記分割手順は、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める手順とを有し、
前記手順(d)で生成された複数の分割プログラムに対して、前記手順(d)と手順(e)とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム。
【0076】
【発明の効果】
以上、本発明によれば、遺伝的アルゴリズムを利用して、実行対象のプログラムに変更や追加を行うことなく分割処理を行って、複数のプロセッサによる並列処理に最適な分割プログラムを生成することができる。
【図面の簡単な説明】
【図1】本実施の形態におけるプログラムの実行手順を示したフローチャート図である。
【図2】実行対象プログラムを実行するマルチプロセッサシステムの構成図である。
【図3】プログラムのモデル化の一例を示す図である。
【図4】実行対象プログラムをグラフ化した例を示す図である。
【図5】図4のプログラムを分割した分割プログラムのグラフ例を示す図である。
【図6】図4のプログラムを分割した分割プログラムのグラフ例を示す図である。
【図7】本実施の形態におけるプログラムの分割方法を示すフローチャート図である。
【図8】本実施の形態における交差アルゴリズムを示す図である。
【図9】ランダムに切断された枝の融合による処理を示す図である。
【図10】致死遺伝子の一例を示す図である。
【図11】データの送信量の総和の求め方を示す図である。
【図12】図7の分割処理に従って進化させた時の進化の状況を示す図である。
【図13】本実施の形態の変形例を示す図である。
【符号の説明】
F1:実行対象プログラム、F2−A〜F2−N:分割プログラム、Gp:グラフ、Vp:点、Ep:有向枝、g:遺伝子データ
Claims (10)
- 所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する工程とを有し、
前記工程(e)で選択された複数の分割プログラムに対して、前記工程(d)と工程(e)とを繰り返すことを特徴とするプログラム分割方法。 - 請求項1において、
前記遺伝子データの分割情報は、前記分割プログラムの有向枝の集合のうち、分割により切断された切断有向枝と切断されなかった非切断有向枝とを示す情報であることを特徴とするプログラム分割方法。 - 請求項2において、
前記工程(d)の交差において、前記1対の分割プログラムをそれぞれランダムに2分割し、互いに異なる分割部分を融合して、次世代の1対の分割プログラムを生成し、当該次世代の分割プログラムの遺伝子データが、前世代の分割プログラムの遺伝子データの一部を引き継ぐことを特徴とするプログラム分割方法。 - 請求項1において、
前記工程(d)と工程(e)の繰り返しが、前記交差により生成された分割プログラムの評価値に応じて終了されることを特徴とするプログラム分割方法。 - 請求項4において、
前記各世代内の複数の分割プログラムのうち、最良の評価値を有する最良分割プログラムの評価値が、所定数の連続する世代において、もはや改良されなくなったときに、前記工程(d)と工程(e)の繰り返しが終了されることを特徴とするプログラム分割方法。 - 請求項4において、
前記各世代内の複数の分割プログラムの評価値の平均値が、所定数の連続する世代において、もはや改良されなくなった時に、前記工程(d)と工程(e)の繰り返しが終了することを特徴とするプログラム分割方法。 - 請求項1において、
前記グラフモデルは、更に、前記データを点の集合として、前記データへのアクセスを前記記述の点の点とデータの点とを結ぶ有向枝の集合として有し、前記データ送信量は、前記部分プログラムと有向枝で結ばれたデータのデータ量の合計を、当該分割プログラム内で合算した値であることを特徴とするプログラム分割方法。 - 所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する方法において、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する工程と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する工程と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する工程と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する工程と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める工程とを有し、
前記工程(d)で生成された複数の分割プログラムに対して、前記工程(d)と工程(e)とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム分割方法。 - 所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、
前記分割手順は、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、少なくとも前記部分プログラムへのデータ送信量を有する評価値を求め、当該評価値に基づいて所定数の分割プログラムを選択する手順とを有し、
前記工程(e)で選択された複数の分割プログラムに対して、前記手順(d)と手順(e)とを繰り返すことを特徴とするプログラム。 - 所定のデータへのアクセスを伴う実行対象プログラムを複数の部分プログラムに分割する手順をコンピュータに実行させるプログラムにおいて、
前記分割手順は、
(a)実行対象プログラムの複数の記述を点の集合とし、前記複数の記述の実行順序を有向枝の集合とするグラフモデルを生成する手順と、
(b)前記グラフモデルに含まれる記述の点を複数の部分集合に分割して複数の部分プログラムを有する分割プログラムを、複数、生成する手順と、
(c)前記分割プログラムの分割情報を有する遺伝子データを、前記複数の分割プログラムそれぞれに対して生成する手順と、
(d)前記複数の分割プログラムの中からランダムに選択された1対の分割プログラムを交差して、次の世代の複数の分割プログラムを生成し、当該生成された複数の分割プログラムの前記遺伝子データを生成する手順と、
(e)前記交差により生成された次世代の複数の分割プログラムについて、所定の評価値を求める手順とを有し、
前記手順(d)で生成された複数の分割プログラムに対して、前記手順(d)と手順(e)とを、前記評価値が所定の条件に合致するまで繰り返すことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002350967A JP4073303B2 (ja) | 2002-12-03 | 2002-12-03 | プログラム分割方法とそれを実施するプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002350967A JP4073303B2 (ja) | 2002-12-03 | 2002-12-03 | プログラム分割方法とそれを実施するプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004185271A true JP2004185271A (ja) | 2004-07-02 |
JP4073303B2 JP4073303B2 (ja) | 2008-04-09 |
Family
ID=32753007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002350967A Expired - Fee Related JP4073303B2 (ja) | 2002-12-03 | 2002-12-03 | プログラム分割方法とそれを実施するプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4073303B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007133620A (ja) * | 2005-11-10 | 2007-05-31 | Fujitsu Ltd | マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 |
WO2010055719A1 (ja) * | 2008-11-14 | 2010-05-20 | 日本電気株式会社 | スケジュール決定装置、並列実行装置、スケジュール決定方法、及びプログラム |
JP2018147025A (ja) * | 2017-03-01 | 2018-09-20 | 株式会社日立製作所 | プログラム導入支援システム、プログラム導入支援方法、及びプログラム導入支援プログラム |
JP2018538607A (ja) * | 2015-10-28 | 2018-12-27 | グーグル エルエルシー | 計算グラフの処理 |
-
2002
- 2002-12-03 JP JP2002350967A patent/JP4073303B2/ja not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007133620A (ja) * | 2005-11-10 | 2007-05-31 | Fujitsu Ltd | マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 |
WO2010055719A1 (ja) * | 2008-11-14 | 2010-05-20 | 日本電気株式会社 | スケジュール決定装置、並列実行装置、スケジュール決定方法、及びプログラム |
JP2018538607A (ja) * | 2015-10-28 | 2018-12-27 | グーグル エルエルシー | 計算グラフの処理 |
US10534997B2 (en) | 2015-10-28 | 2020-01-14 | Google Llc | Processing computational graphs |
US10860925B2 (en) | 2015-10-28 | 2020-12-08 | Google Llc | Processing computational graphs |
US11769061B2 (en) | 2015-10-28 | 2023-09-26 | Google Llc | Processing computational graphs |
JP2018147025A (ja) * | 2017-03-01 | 2018-09-20 | 株式会社日立製作所 | プログラム導入支援システム、プログラム導入支援方法、及びプログラム導入支援プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP4073303B2 (ja) | 2008-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yasuda* et al. | A grouping genetic algorithm for the multi-objective cell formation problem | |
JP6724576B2 (ja) | 多目標最適化方法及び装置 | |
CN106610867B (zh) | 一种片上网络任务调度方法及装置 | |
JP7119820B2 (ja) | 予測プログラム、予測方法および学習装置 | |
CN115441502A (zh) | 基于分布式电源的供电恢复方法、装置、设备及存储介质 | |
US11461656B2 (en) | Genetic programming for partial layers of a deep learning model | |
US8626775B1 (en) | Topic relevance | |
JP4073303B2 (ja) | プログラム分割方法とそれを実施するプログラム | |
US20030144748A1 (en) | Apparatus for optimizing combinatorial optimization problems | |
CN110069498A (zh) | 基于多目标演化算法的高质量模式挖掘方法 | |
JPH09204310A (ja) | 判断規則修正装置と判断規則修正方法 | |
JP4882573B2 (ja) | レイアウト評価装置 | |
CN109684185B (zh) | 基于启发式遍历的超级计算机大数据处理能力测试方法 | |
Wang et al. | MLQCC: an improved local search algorithm for the set k‐covering problem | |
US20200243162A1 (en) | Method, system, and computing device for optimizing computing operations of gene sequencing system | |
CN116094941A (zh) | 基于共识合作超网络模型的共识方法、系统、介质、电子设备 | |
CN115795177A (zh) | 社交媒体内容推荐方法及装置 | |
CN108833493A (zh) | 对等网络集合中最佳交易节点的选择方法、系统及存储介质 | |
Yassen et al. | Lion optimization algorithm for team orienteering problem with time window | |
Antkiewicz et al. | Balancing Pareto Front exploration of Non-dominated Tournament Genetic Algorithm (B-NTGA) in solving multi-objective NP-hard problems with constraints | |
CN109726362A (zh) | 求解加权最大可满足性问题的局部搜索求解方法和系统 | |
Wuensche | Discrete Dynamics Lab: Tools for investigating cellular automata and discrete dynamical networks | |
Paiva et al. | Unsupervised strategies to network topology reconfiguration optimization with limited link addition | |
US7047260B1 (en) | Selecting tree summary operations for a tree | |
Mabu et al. | Evolving plural programs by genetic network programming with multi-start nodes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041224 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070622 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070703 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070829 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071217 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080122 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110201 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110201 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120201 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |