(58)【調査した分野】(Int.Cl.,DB名)
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを、前記データフローグラフにおける入力側のノードからトポロジカル順に算出するコスト算出部と、
前記コスト算出部によって算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する選択部と、を有する、情報処理装置。
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、請求項4に記載の情報処理装置。
【発明を実施するための形態】
【0013】
以下に、図面を参照し、本願の開示する情報処理装置、プログラム、および情報処理方法の実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0014】
〔1〕本実施形態の概要
図1〜
図4を参照しながら、本実施形態の概要について説明する。
上述のごとく高位合成ツールによって扱うことのできる回路規模には限界がある。そのため、
図1に示すように、モジュール分割処理(ステップS1)を含むアクセラレーションが実行される。
図1はアクセラレーション工程を説明するフローチャート(ステップS1〜S3)である。
【0015】
アクセラレーション工程では、モジュール分割処理(ステップS1)によって、与えられたソフトウェアコード101が、適切なサイズの複数のモジュール、つまり複数のモジュール毎コード102に分割される。分割されたモジュール毎コード102のそれぞれについて高位合成処理(ステップS2)が施される。そして、モジュール毎コード102のそれぞれについて得られた高位合成結果である論理回路データ103は、レイアウト合成処理(ステップS3)によって、ハードウェア回路データに合成される。このようにしてソフトウェアコードがハードウェアに変換される。
【0016】
本実施形態において開示される技術は、上述したアクセラレーション工程におけるモジュール分割処理(ステップS1)に適用される。
【0017】
ここで、ステップS1において行なわれる、高位合成に適したモジュール分割の例を、
図2(A)〜
図2(C)に示す。
図2(A)は、ソフトウェアコード(高位合成対象記述)101の一例を示す図である。
図2(B)は、
図2(A)に示すソフトウェアコード101から生成されるモジュール分割対象のデータフローグラフ32の一例を示す図である。
図2(C)は、
図2(B)に示すデータフローグラフ32についての高位合成に適したモジュール分割結果の一例を示す図である。
【0018】
図2(A)に示すようなソフトウェアコード101は、そのままでは高位合成に適さない。このため、ソフトウェアコード101は、コンパイラ等によって、
図2(B)に示すようなデータフローグラフ32に変換され、本実施形態では、当該データフローグラフ32を解析し設計対象回路全体の性能を考慮してデータフローグラフ32における中間ノードが複数のモジュールに分割される。データフローグラフ32は、後述するごとく、ソフトウェアコード101から生成される、演算の実行順序を示す情報として捉えることができる。
【0019】
図2(B)において、I0〜I7は入力データを表す葉ノード(入力ノードともいう)であり、O0,O1は出力データを表す葉ノード(出力ノードともいう)である。また、細実線で示す楕円は、演算処理を表す中間ノードを示す。
図2(B)に示すデータフローグラフ32には8個の中間ノードが含まれている。また、データフローグラフ32において、上述したノード間の細線矢印は、ノード間のデータ依存性を表す有向エッジである。
【0020】
有向エッジに付された数値は、有向エッジによって接続するノード間の入出力信号線の配線幅に応じた値である。本実施形態において、当該数値は、モジュール分割による分割境界を有向エッジが横切る際の重み(コスト)を示すもので、当該重みは、後述するごとく、入出力信号線の配線幅に応じた値である。本実施形態では、上記数値を用い、データフローグラフ32における中間ノードが、
図2(B)に示すごとく、例えば、三つのモジュールM1,M2,M3(太線破線で囲む領域参照)に分割される。
【0021】
このようなモジュール分割を行なうことで、分割後の各モジュールM1,M2,M3の回路規模と入出力数とが適切なものになる。したがって、
図2(C)に示すごとく、各モジュールM1,M2,M3は、高位合成ツールの能力を最大限に引き出した状態で回路の生成を行なうことが可能である。
【0022】
ここで、モジュール分割がレイアウト合成の結果に与える影響について、簡単に説明する。モジュール分割を行なうことなく高位合成およびレイアウト合成を行なった場合、配線領域において信号線が混雑し多数の未配線が生じ、レイアウト合成の結果は失敗に終わる可能性が高い。これに対し、モジュール分割を行なった後に高位合成およびレイアウト合成を行なう場合、
図2(B)に示すようにデータフローを考慮したモジュール分割が行なわれる。したがって、配線領域における信号線の混雑度が高くならず、全ての信号線を適切な配線長で配線することができ、レイアウト合成の結果として適切なものが得られる可能性が高くなる。
【0023】
そこで、本実施形態では、データフローグラフを入力としたモジュール分割問題において、後述する総カット数がコストとして用いられ、当該コストが最小(所定コスト)となるモジュール分割が、出力として選択される。以下では、データフローグラフ(DataFlow Graph)をDFGと略記する場合がある。なお、本実施形態では、説明を簡単にするため、DFGループをもたない(acyclic)グラフを対象とするが、ループをもつ場合に対しても本発明に係る技術を拡張して適用することは可能である。
【0024】
ここで、
図3(A)および
図3(B)を参照して、高位合成対象記述であるソフトウェアコード101と、当該ソフトウェアコード101から生成されるモジュール分割対象のDFG32の具体例とについて説明する。
図3(A)は、ソフトウェアコード101の具体例を示す図であり、
図3(B)は、
図3(A)に示すソフトウェアコード101から生成されるモジュール分割対象のデータフローグラフ32の具体例を示す図である。
【0025】
図3(A)に示すソフトウェアコード101においては、C言語の不動小数点データ型であるfloat型のデータ配列A[3][6],B[6][3],x[3],y[3],z[3]が定義され、これらのデータ配列に基づく演算処理z=A*(B*x)+yが定義される。
【0026】
図3(A)に示すソフトウェアコード101から生成されるDFG32は、
図3(B)に示すように、入力ノードである4個の葉ノードI1〜I4と、出力ノードである1個の葉ノードO0とを含む。葉ノードI1〜I4およびO0は、それぞれデータ配列A[3][6],B[6][3],x[3],y[3],z[3]に対応する。なお、DFG32における葉ノードの実体は、回路の外部端子や、上位階層の回路とのデータ授受に使われるレジスタ/メモリ素子などであり、外界とのデータのインタフェースを概念として表している。
【0027】
また、DFG32は、演算処理を表す3つの中間ノードP1〜P3を含む。中間ノードP1は、葉ノードI2からのB[6][3]と葉ノードI3からのx[3]との乗算処理を表す。中間ノードP2は、葉ノードI1からのA[3][6]と中間ノードP1からの乗算結果B[6][3]*x[3]との乗算処理を表す。中間ノードP3は、中間ノードP1からの乗算結果A[3][6]*(B[6][3]*x[3])と葉ノードI4からのy[3]との加算処理を表す。したがって、データ配列z[3]に対応する葉ノードO0は、中間ノードP3からの出力つまりA[3][6]*(B[6][3]*x[3])+y[3]となる。
【0028】
図3(B)に示すDFG32おいても、ノード間の細線矢印は、ノード間のデータ依存性を表す有向エッジE1〜E7である。DFG32におけるエッジE1〜E7のそれぞれは、ノード間に流れるデータの配線幅、つまり入出力信号線の配線幅に応じた値を、重みとしてもつ。図中、エッジE1〜E7に付された数字が重みを表している。
【0029】
本実施形態では、ノード間に流れるデータの配線幅に応じた値として、例えば、float変数の数が用いられる。float型の演算は32ビットで行なわれるため、実際の配線幅はfloat変数の数×32ビットとなるが、簡単のため、上述の通り、重みとしては、float変数の数を用いる。
【0030】
例えば
図3(B)において、葉ノードI1から中間ノードP2への有向エッジE1には重み3×6=18が付与され、葉ノードI2から中間ノードP1への有向エッジE2には重み3×6=18が付与される。また、葉ノードI3から中間ノードP1への有向エッジE3には重み3が付与され、葉ノードI4から中間ノードP3への有向エッジE4には重み3が付与される。さらに、中間ノードP1から中間ノードP2への有向エッジE5には重み18/3=6が付与され、中間ノードP2から中間ノードP3への有向エッジE6には重み18/6=3が付与される。そして、中間ノードP3から葉ノードO0への有向エッジE7には重み3が付与される。
【0031】
ここで、本実施形態において、モジュール分割とは、DFG全体のノード集合を、互いに連結される複数の部分集合(モジュール)に分割することをいう。また、モジュール毎(モジュール分割候補毎)のコストとしては、「総カット数」が用いられる。「総カット数」は、モジュール境界が横切る全てのエッジに付与された重みの総和として定義される。換言すると、「総カット数」は、モジュールの境界(モジュール分割候補の分割境界)を横切る複数のエッジに付与された重みの総和として定義される。
【0032】
このとき、
図3(B)に示すDFG32を二つのモジュールに分割する場合について、
図4(A)および
図4(B)を参照しながら考える。なお、
図4(A)は、
図3(A)に示すソフトウェアコード101のオリジナル記述に基づく、
図3(B)に示すDFG32のモジュール分割結果を示す図である。また、
図4(B)は、本実施形態の技術による、
図3(B)に示すDFG32の最適モジュール分割結果を示す図である。
【0033】
図4(A)においては、
図3(A)に示すソフトウェアコード101のオリジナル記述に基づいて、
図3(B)に示すDFG32を二つのモジュールM1a,M2aに分割した結果が示されている。
図4(A)に示す分割結果では、エッジE1〜E5およびE7がモジュールM1a,M2aの境界を横切っているので、総カット数(コスト)は、18+18+3+3+6+3=51であり、モジュール段数は2である。なお、モジュール段数は、入力側葉ノードから出力側葉ノードまでのパス上に存在するモジュールの数の最大数として定義され、分割後のモジュールによるデータ処理時間に応じた数値として捉えることができる。また、以下では、モジュール段数を単に段数と記載する場合がある。
【0034】
一方、
図4(B)においては、本実施形態の技術を用いて、
図3(B)に示すDFG32を二つのモジュールM1b,M2bに最適分割した結果が示されている。
図4(B)に示す分割結果では、エッジE1〜E4,E6およびE7がモジュールM1b,M2bの境界を横切っているので、総カット数(コスト)は、18+18+3+3+3+3=48であり、モジュール段数は2である。
【0035】
つまり、
図4(A)および
図4(B)に示す分割結果の総カット数は、それぞれ51および48である。したがって、
図4(B)に示す分割結果の方が総カット数が少ない(コストが小さい)ため、モジュールM1b,M2b間の配線性は優れていると言える。
【0036】
また、
図4(A)および
図4(B)に示す分割結果のモジュール段数は、いずれも2である。したがって、モジュール毎のデータ処理時間が等しいとすると、
図4(A)および
図4(B)に示す分割結果における回路遅延は同じであると言える。
【0037】
そこで、本実施形態では、
図4(B)に示すようなDFGの最適モジュール分割結果を得るために、例えばコンピュータ(
図5,
図6の符号10参照)等によって、以下のごとき処理が実行される。
【0038】
本実施形態では、まず、DFGにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成する処理が実行される。この後、作成した複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出する処理が実行される。そして、算出したコストに基づき、複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する処理が実行される。このとき、DFGにおける入力側のモジュール分割候補からトポロジカル順にモジュール分割候補の前記コストを算出する処理を実行することが望ましい。
【0039】
ここで、前記所定コストは、最小コストであってもよい。また、上述したように、各モジュール分割候補について算出されるコストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和(総カット数)であり、前記重みは、当該重みを付与されたエッジに対応する入出力信号線の配線幅に応じた値であってもよい。
【0040】
さらに、各モジュール分割候補に関する制約条件が予め設定され、当該制約条件を満たすモジュール分割候補を作成する、または、前記制約条件を満たすモジュール分割候補を分割対象モジュールとして選択する処理が実行されてもよい。このとき、制約条件は、各モジュール分割候補に含まれるノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つであってもよい。
【0041】
上述のような処理を実行することで、DFGから複数のモジュール分割候補が作成され、モジュール分割候補毎に総カット数(コスト)が求められ、所定の総カット数となるモジュール分割候補が選択される。これにより、ユーザのスキルに依存することなく、最適なモジュール分割を行なうことができる。また、トポロジカル順にコストを算出することで、コストを算出するための計算量を削減することができる。
【0042】
〔2〕本実施形態の情報処理装置のハードウェア構成
まず、
図5を参照しながら、本実施形態の情報処理装置(コンピュータ)10のハードウェア構成について説明する。
図5は、当該ハードウェア構成の一例を示すブロック図である。
【0043】
コンピュータ10は、例えば、プロセッサ11,RAM(Random Access Memory)12,HDD(Hard Disk Drive)13,グラフィック処理装置14,入力インタフェース15,光学ドライブ装置16,機器接続インタフェース17およびネットワークインタフェース18を構成要素として有する。これらの構成要素11〜18は、バス19を介して相互に通信可能に構成される。
【0044】
プロセッサ(処理部)11は、コンピュータ10全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。プロセッサ11は、例えばCPU,MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGAのいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0045】
RAM(記憶部)12は、コンピュータ10の主記憶装置として使用される。RAM12には、プロセッサ11に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM12には、プロセッサ11による処理に必要な各種データが格納される。アプリケーションプログラムには、コンピュータ10によって本実施形態のモジュール分割機能を実現するためにプロセッサ11によって実行されるプログラム(
図6の符号31参照)が含まれてもよい。
【0046】
HDD(記憶部)13は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行なう。HDD13は、コンピュータ10の補助記憶装置として使用される。HDD13には、OSプログラム,アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、SCM(Storage Class Memory)や、フラッシュメモリ等の半導体記憶装置(SSD:Solid State Drive)を使用することもできる。
【0047】
グラフィック処理装置14には、モニタ(表示部,出力部)14aが接続されている。グラフィック処理装置14は、プロセッサ11からの命令に従って、画像をモニタ14aの画面に表示させる。モニタ14aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置等が挙げられる。
【0048】
入力インタフェース15には、キーボード15aおよびマウス15bが接続されている。入力インタフェース15は、キーボード15aやマウス15bから送られてくる信号をプロセッサ11に送信する。なお、マウス15bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル,タブレット,タッチパッド,トラックボール等が挙げられる。
【0049】
光学ドライブ装置16は、レーザ光等を利用して、光ディスク16aに記録されたデータの読み取りを行なう。光ディスク16aは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク16aには、DVD(Digital Versatile Disc),DVD−RAM,CD−ROM(Compact Disc Read Only Memory),CD−R(Recordable)/RW(ReWritable)等が挙げられる。
【0050】
機器接続インタフェース17は、コンピュータ10に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース17には、メモリ装置17aやメモリリーダライタ17bを接続することができる。メモリ装置17aは、機器接続インタフェース17との通信機能を搭載した非一時的な記録媒体、例えばUSB(Universal Serial Bus)メモリである。メモリリーダライタ17bは、メモリカード17cへのデータの書き込み、またはメモリカード17cからのデータの読み出しを行なう。メモリカード17cは、カード型の非一時的な記録媒体である。
【0051】
ネットワークインタフェース18は、ネットワーク18aに接続される。ネットワークインタフェース18は、ネットワーク18aを介して、他のコンピュータまたは通信機器との間でデータの送受信を行なう。
【0052】
以上のようなハードウェア構成を有するコンピュータ10によって、
図6〜
図17を参照しながら後述する本実施形態のモジュール分割機能を実現することができる。
【0053】
なお、コンピュータ10は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム(後述するプログラム31等)を実行することにより、本実施形態のモジュール分割機能を実現する。コンピュータ10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ10に実行させるプログラムをHDD13に格納しておくことができる。プロセッサ11は、HDD13内のプログラムの少なくとも一部をRAM12にロードし、ロードしたプログラムを実行する。
【0054】
また、コンピュータ10(プロセッサ11)に実行させるプログラムを、光ディスク16a,メモリ装置17a,メモリカード17c等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ11からの制御により、HDD13にインストールされた後、実行可能になる。また、プロセッサ11が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0055】
〔3〕本実施形態の情報処理装置の機能構成
次に、
図6および
図7を参照しながら、本実施形態の情報処理装置(コンピュータ)10の機能構成について説明する。
図6は、当該機能構成の一例を示すブロック図であり、
図7は、
図6に示す情報処理装置10の機能構成をより具体的に説明するブロック図である。
【0056】
コンピュータ10は、コンパイラ等によってソフトウェアコード101から変換された
DFG32を解析し、設計対象回路全体の性能を考慮してDFG32における中間ノードを複数のモジュールに分割する機能(モジュール分割機能)を果たす。このため、コンピュータ10は、
図6に示すように、少なくとも処理部20,記憶部30,入力部40および表示部50としての機能を有している。
【0057】
処理部20は、例えば
図5に示すようなプロセッサ11である。処理部20は、プログラム31を実行することで、後述するコスト算出部21および選択部22としての機能を果たす。
【0058】
記憶部30は、例えば
図5に示すようなRAM12,HDD13であり、モジュール分割機能を実現するための各種情報を記憶し保存する。当該各種情報としては、上述したプログラム31およびDFG32のほか、後述する制約条件33,Mリスト(モジュールリスト)34,モジュール分割結果35などが含まれる。
【0059】
ここで、プログラム31は、前述の通り、処理部20(プロセッサ11)に、後述するコスト算出部21および選択部22としての機能を実行させるものである。
【0060】
また、DFG32は、前述の通り、コンパイラ等によってソフトウェアコード101から変換されて得られる。
【0061】
入力部40は、例えば
図5に示すようなキーボード15aおよびマウス15bであり、ユーザによって操作され、モジュール分割に係る各種指示を行なう。なお、マウス15bに代え、タッチパネル,タブレット,タッチパッド,トラックボール等が用いられてもよい。
【0062】
表示部50は、例えば
図5に示すようなモニタ14aであり、その表示状態を、グラフィック処理装置14を介して、表示制御部(図示略)によって制御される。本実施形態において、表示部50は、例えば、DFG32や、当該DFG32のモジュール分割結果35などをを表示出力する。
【0063】
図7に示すように、本実施形態のモジュール分割機能を果たすコンピュータ10に対する入力は、分割対象のDFG32、および制約条件33である。制約条件33は、後述するごとく、各モジュール分割候補に関するもので、予め設定され、記憶部30に保存される。このとき、制約条件33は、各モジュール分割候補に含まれるノード(中間ノード)の数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つであってもよい。
【0064】
ノードの数を採用する場合、ノードの数の上限値または下限値またはその両方が設定され、ノードの数が上限値以下であること、または、ノードの数が下限値以上であること、または、ノードの数が上限値以下かつ下限値以上であることが、制約条件33として設定されてもよい。
【0065】
面積を採用する場合、面積の上限値または下限値またはその両方が設定され、面積が上限値以下であること、または、面積が下限値以上であること、または、面積が上限値以下かつ下限値以上であることが、制約条件33として設定されてもよい。
【0066】
同様に、スループットを採用する場合、スループットの上限値または下限値またはその両方が設定され、スループットが上限値以下であること、または、スループットが下限値以上であること、または、スループットが上限値以下かつ下限値以上であることが、制約条件33として設定されてもよい。
【0067】
さらに、制約条件33は、モジュール分割を行なった結果として得られる回路に対する要求速度やモジュールサイズの上限値または下限値またはその両方として設定されてもよい。なお、要求速度は、上述したモジュール段数として捉えることも可能である。また、モジュールサイズは、ノード(中間ノード)の数として捉えることも可能である。
【0068】
コスト算出部21は、DFG32における複数の演算単位である中間ノードから、一以上のノードを含む複数のモジュール分割候補(例えば
図10(A)のC1〜C3参照)を作成する機能を有する。このとき、コスト算出部21は、制約条件33を満たすモジュール分割候補を作成することが望ましい。また、コスト算出部21は、作成した複数のモジュール分割候補のそれぞれについて当該モジュール分割候補のコストである総カット数を算出する。
【0069】
特に、本実施形態において、コスト算出部21は、DFG32上の各中間ノードについて、各中間ノードを頂点とするモジュール分割のリストであるMリスト34を求める。Mリスト34は、後述するごとく、モジュール分割候補毎に、ノード集合とコスト(総カット数)と出力集合とに関する情報を含む。Mリスト34については、
図8〜
図10(C)を参照しながら後述する。
【0070】
選択部22は、コスト算出部21によって算出したコスト(Mリスト34)に基づき、複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する。このとき、選択部22は、制約条件33を満たすモジュール分割候補を分割対象モジュールとして選択することが望ましい。なお、所定コストは、最小コストであってもよい。また、上述したように、各モジュール分割候補について算出されるコストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和(総カット数)であり、前記重みは、当該重みを付与されたエッジに対応する入出力信号線の配線幅に応じた値であってもよい。
【0071】
特に、本実施形態において、選択部22は、DFG32の最終段ノードのMリスト34に基づき、DFG全体について最小コストのモジュール分割候補をバックトレースすることによって分割対象モジュールを求め、求めた分割対象モジュールをモジュール分割結果35として出力保存する。
【0072】
なお、本実施形態においては、DFG32における入力側のノードからトポロジカル順に前記コストを算出する処理を実行することが望ましい。ここで、トポロジカル順は、任意のノードkについてのMリスト34を算出する時点において、当該ノードkに対して直接的/間接的な入力になる全てのノードについてのMリスト34が算出済みであるような順序のことをいう。
【0073】
例えば
図8に示すDFG32における中間ノードA,B,Cをトポロジカル順に並べると、A→B→Cになる。また、例えば
図14(A)に示すDFG32における中間ノードA〜Fをトポロジカル順に並べると、A→B→C→D→E→Fや、A→B→C→E→D→Fや、A→C→B→D→E→Fや、A→C→B→E→D→Fや、A→B→D→C→E→Fなどが考えられる。
【0074】
〔4〕本実施形態の情報処理装置の動作
次に、
図8〜
図13を参照しながら、Mリスト34およびモジュール分割結果35と、コスト算出部21および選択部22の動作とについて説明する。
【0075】
〔4−1〕Mリスト
本実施形態では、DFG32における演算単位である中間ノード毎に、コスト(総カット数)に関する情報を含むモジュール分割情報であるMリスト34が、コスト算出部21によって作成される。なお、中間ノードについては、単にノードという場合がある。
【0076】
ここで、ノードkのMリスト34は、ノードkを頂点とするモジュール分割候補のリストである。
【0077】
また、以下において、ノードkに対して入力側に属する全てのノード、つまりノードkに対して直接的または間接的な入力になる全てのノードを含むDFGの部分グラフを、「ノードkのtransitive fan-in (推移的ファンイン)」と呼び、TFI(k)と表記する。
【0078】
例えば、
図8に示すように、ノードBのTFIつまりTFI(B)は、太破線で囲む領域における部分グラフに対応し、TFI(B)={A,B}となる。同様に、ノードCのTFIつまりTFI(C)は、一点鎖線で囲む領域における部分グラフに対応し、TFI(C)={A,B,C}となる。
【0079】
そして、上述したトポロジカル順の前提により、ノードkのMリスト34を算出する時点で、TFI(k)に含まれる、ノードk以外の各ノードのMリスト34は算出済みであると仮定することができる。例えば、
図8において、ノードBのMリスト34を算出する時点で、TFI(B)におけるノードAのMリスト34は算出済みである。また、ノードCのMリスト34を算出する時点で、TFI(C)におけるノードA,BのMリスト34は算出済みである。
【0080】
なお、
図8は、本実施形態におけるTFIを説明する図であり、
図3(B),
図4(A)および
図4(B)に示すDFGと同様のDFG32を示しているので、
図8に示すDFG32の説明は省略する。また、
図8における中間ノードA,B,Cは、それぞれ
図3(B),
図4(A),
図4(B)における中間ノードP1,P2,P3に対応している。
【0081】
本実施形態において、各モジュール分割候補は、Mリスト34におけるモジュール分割情報として、「ノード集合」と「コスト」と「出力集合」とを有する。
【0082】
「ノード集合」は、ノードkを頂点とするモジュール分割候補に含まれるノードの集合である。
【0083】
「コスト」は、当該モジュール分割候補を採用したときのTFI(k)全体のコストである。
【0084】
「出力集合」は、当該モジュール分割候補を採用したときのTFI(k)内のモジュールの頂点ノードの集合である。この出力集合の情報は、後述するごとく、dominateされるモジュール分割候補を判定して削除する際に用いられる。
【0085】
ここで、
図9(A)および
図9(B)を参照しながら、
図9(A)に示すDFG32におけるノードAとノードBのMリスト34の算出作成について説明する。なお、
図9(A)は、モジュール分割対象のDFG32の一例を示す図である。
図9(B)は、
図9(A)に示すDFG32におけるノードA,BのMリスト34を示す図である。
図9(A)に示すDFG32は、
図8に示すDFG32と同様であるので、その説明は省略する。
【0086】
ある一つの中間ノードについてのMリスト34は、
図9(B)に示すように、{({ノード集合},コスト,{出力集合}),…}と表記される。
【0087】
各中間ノードについては一以上のモジュール分割候補が作成さる。そして、モジュール分割候補毎に、Mリスト34に含まれるモジュール分割情報({ノード集合},コスト,{出力集合})が作成される。
【0088】
このとき、コストは、対象ノードよりも入力側のモジュール分割の総カット数、つまりモジュール境界が横切る全てのエッジに付与された重みの総和として定義される。また、出力集合は、そのモジュール分割候補が、他のモジュールの入力に成り得る可能性を表す。
【0089】
図9(A)に示すノードAについては、モジュール分割候補のノード集合は{A}の一組だけである。このとき、
図9(B)に示すように、モジュール分割候補{A}のコストである総カット数は18+3+6=27となる。また、モジュール分割候補{A}の出力集合は、TFI(A)={A}内のモジュールの頂点ノードの集合であり、{A}のみである。
【0090】
図9(A)に示すノードBについては、モジュール分割候補のノード集合は{B}と{A,B}との二組である。
【0091】
このとき、
図9(B)に示すように、モジュール分割候補{B}のコストである総カット数は18+27+3=48となる。また、モジュール分割候補{B}の出力集合は、TFI(B)={A,B}内のモジュールの頂点ノードの集合{A,B}となる。モジュール分割候補が{B}の場合、ノードB自体が一つのモジュールになっている。このため、モジュール分割候補{B}は、ノードBの入力であるノードAを頂点とするモジュールが必要になり、ノードAも出力集合に含まれることになる。
【0092】
また、
図9(B)に示すように、モジュール分割候補{A,B}のコストである総カット数は18+18+3+3=42となり、モジュール分割候補{A,B}の出力集合は、TFI(B)={A,B}内のモジュールの頂点ノードの集合であり、{B}のみである。
【0093】
〔4−2〕コスト算出部の動作
ここで、
図12に示すフローチャート(ステップS11〜S19)に従って、本実施形態の情報処理装置10におけるコスト算出部21の動作について説明する。コスト算出部21は、DFG32の入力側中間ノードからトポロジカル順に中間ノードを対象ノードkとして扱い、対象ノードkに対し
図12に示すフローチャートによる処理を行なうことで、対象ノードkについてのMリスト34を算出作成する。
【0094】
まず、コスト算出部21は、対象ノードkを頂点とするモジュール分割候補を全て列挙する(ステップS11)。トポロジカル順に処理を行なうことで、対象ノードよりも入力側の全てのノードのMリスト34は算出作成済みである。
【0095】
コスト算出部21は、列挙された一以上のモジュール分割候補のうちの一つを対象モジュール分割候補として選択し、選択した対象モジュール分割候補への直接的な入力である中間ノードの集合FIを取得する(ステップS12)。当該集合FIを入力ノード集合FIという。
【0096】
コスト算出部21は、入力ノード集合FIの各中間ノードのMリスト34を取り出すとともに、対象モジュール分割候補と入力ノード集合FIの各中間ノードとを組み合わせたものをTFI(k)とする(ステップS13)。
【0097】
そして、コスト算出部21は、入力ノード集合FIの各中間ノードのMリスト34に基づき、対象モジュール分割候補の最小コストを算出し、算出した最小コストを対象モジュール分割候補のMリスト34に登録する(ステップS14)。
【0098】
このとき、コスト算出部21は、対象モジュール分割候補の出力側カット数と、対象モジュール分割候補の入力側葉ノードのカット数と、入力ノード集合FIの各中間ノードのMリスト34のうちの最小コストとを加算した値を、最小コストとして算出する。
【0099】
ここで、対象モジュール分割候補の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジに付与された重みの合計である。また、対象モジュール分割候補の入力側葉ノードのカット数は、対象モジュール分割候補と入力側葉ノードとの間における分割境界を横切るエッジに付与された重みの合計である。
【0100】
また、コスト算出部21は、対象ノードkと、入力ノード集合FIの各中間ノードのMリスト34のうち最小コストのモジュール分割候補の出力集合との合併集合を、対象モジュール分割候補の出力集合として対象モジュール分割候補のMリスト34に登録する(ステップS15)。
【0101】
そして、コスト算出部21は、ステップS11で列挙した全てのモジュール分割候補に対してステップS12〜S15の処理を行なったか否かを判断する(ステップS16)。未処理のモジュール分割候補が存在する場合(ステップS16のNOルート)、コスト算出部21は、未処理の次のモジュール分割候補を選択し(ステップS17)、ステップS12の処理に戻る。
【0102】
一方、未処理のモジュール分割候補が存在しない場合(ステップS16のYESルート)、コスト算出部21は、予め設定された制約条件33を満たさないモジュール分割候補を削除する(ステップS18)。なお、コスト算出部21は、ステップS11でモジュール分割候補を列挙する際に、制約条件33、例えばモジュール分割候補に属する中間ノードの数についての条件を満たさないモジュール分割候補を削除してもよい。
【0103】
最後に、コスト算出部21は、制約条件33を満たすが、他のモジュール分割候補によってdominate(支配)されるモジュール分割候補を削除してから(ステップS19)、処理を終了する。ここで、「他のモジュール分割候補によってdominateされるモジュール分割候補」とは、コストが小さく、且つ、出力集合が同じか包含される、他のモジュール分割候補が存在するモジュール分割候補のことをいう。このように、コスト算出部21は、制約条件33を満たさないモジュール分割候補やdominateされるモジュール分割候補を除いたモジュール分割候補を含むMリスト34を作成する。
【0104】
この後、コスト算出部21は、トポロジカル順に次の中間ノードを対象ノードkとして選択し、
図12に示すフローチャートによる処理を繰り返し行ない、DFG32における全ての中間ノードについてのMリスト34を算出作成する。
【0105】
次に、
図10(A)〜
図10(C)を参照しながら、
図12に示すフローチャートに従って、
図10(A)に示すDFG32におけるノードCのMリスト34の算出作成について説明する。なお、
図10(A)は、
図9(A)に示すDFG32におけるノードCのモジュール分割候補C1〜C3を示す図である。
図10(B)は、
図10(A)に示す各モジュール分割候補C1〜C3のMリスト34を示す図である。
図10(C)は、
図10(A)に示すDFG32におけるノードCのMリスト34を示す図である。
図10(A)に示すDFG32は、
図8や
図9(A)に示すDFG32と同様であるので、その説明は省略する。
【0106】
ここでは、中間ノードCを対象ノードとする場合に、ノードCのMリスト34を算出作成する手順と、算出作成されるノードCのMリスト34とについて説明する。
【0107】
まず、
図10(A)に示すDFG32において中間ノードCを頂点とするモジュール分割候補が列挙される(
図12のステップS11参照)。このとき、3通りのモジュール分割候補C1,C2,C3が列挙される。例えば、モジュール分割候補C1,C2,C3は、それぞれ{C},{B,C},{A,B,C}である。
【0108】
モジュール分割候補C1={C}を対象モジュール分割候補として選択した場合、選択した対象モジュール分割候補C1={C}への入力である入力ノード集合FI={B}が取得される(
図12のステップS12参照)。
【0109】
そして、対象モジュール分割候補C1={C}のコストが算出される。このとき、対象モジュール分割候補C1の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジE7に付与された重み“3”の合計値“3”である。また、対象モジュール分割候補C1の入力側葉ノードI4のカット数は、対象モジュール分割候補C1と入力側葉ノードI4との間における分割境界を横切るエッジE4に付与された重み“3”の合計値“3”である。さらに、入力ノード集合FIの各中間ノードのMリスト34のうちの最小コストは、
図9(B)に示すように、ノード集合{A,B}のコスト“42”である。したがって、対象モジュール分割候補C1の最小コストは、3+42+3=48となり、
図10(B)に示すように、モジュール分割候補C1のコストとして“48”がMリスト34に登録される(
図12のステップS14参照)。
【0110】
また、対象ノードCと、入力ノード集合FIの中間ノードBのMリスト34のうち最小コスト“42”のモジュール分割候補の出力集合{B}との合併集合{B,C}が、
図10(B)に示すように、対象モジュール分割候補C1の出力集合として対象モジュール分割候補C1のMリスト34に登録される(
図12のステップS15参照)。これにより、モジュール分割候補C1については({C},48,{B,C})がMリスト34に登録される。
【0111】
ついで、モジュール分割候補C2={B,C}を対象モジュール分割候補として選択した場合、選択した対象モジュール分割候補C2={B,C}への入力である入力ノード集合FI={A}が取得される(
図12のステップS12参照)。
【0112】
そして、対象モジュール分割候補C2={B,C}のコストが算出される。このとき、対象モジュール分割候補C2の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジE7に付与された重み“3”の合計値“3”である。また、対象モジュール分割候補C2の入力側葉ノードI1,I4のカット数は、対象モジュール分割候補C1と入力側葉ノードI1,I4との間における分割境界を横切るエッジE1,E4に付与された重み“18”と“3”の合計値“21”である。さらに、入力ノード集合FIの各中間ノードのMリスト34のうちの最小コストは、
図9(B)に示すように、ノード集合{A}のコスト“27”である。したがって、対象モジュール分割候補C2の最小コストは、3+27+21=51となり、
図10(B)に示すように、モジュール分割候補C2のコストとして“51”がMリスト34に登録される(
図12のステップS14参照)。
【0113】
また、対象ノードCと、入力ノード集合FIの中間ノードAのMリスト34のうち最小コスト“51”のモジュール分割候補の出力集合{A}との合併集合{A,C}が、
図10(B)に示すように、対象モジュール分割候補C2の出力集合として対象モジュール分割候補C2のMリスト34に登録される(
図12のステップS15参照)。これにより、モジュール分割候補C2については({B,C},51,{A,C})がMリスト34に登録される。
【0114】
ついで、モジュール分割候補C3={A,B,C}を対象モジュール分割候補として選択した場合、選択した対象モジュール分割候補C3={A,B,C}への入力である入力ノード集合FI={φ(空集合)}が取得される(
図12のステップS12参照)。
【0115】
そして、対象モジュール分割候補C3={A,B,C}のコストが算出される。このとき、対象モジュール分割候補C3の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジE7に付与された重み“3”の合計値“3”である。また、対象モジュール分割候補C3の入力側葉ノードI1〜I4のカット数は、対象モジュール分割候補C1と入力側葉ノードI1〜I4との間における分割境界を横切るエッジE1〜E4に付与された重み“18”,“18”,“3”,“3”の合計値“42”である。さらに、入力ノード集合FIの各中間ノードのMリスト34のうちの最小コストは、入力ノード集合FIが空集合であるため、“0”である。したがって、対象モジュール分割候補C3の最小コストは、3+42=45となり、
図10(B)に示すように、モジュール分割候補C2のコストとして“45”がMリスト34に登録される(
図12のステップS14参照)。
【0116】
また、入力ノード集合FI={φ(空集合)}であるため、対象ノードCが、
図10(B)に示すように、対象モジュール分割候補C3の出力集合として対象モジュール分割候補C3のMリスト34に登録される(
図12のステップS15参照)。これにより、モジュール分割候補C3については({A,B,C},45,{C})がMリスト34に登録される。
【0117】
この時点で、モジュール分割候補C1,C2,C3が、制約条件33を満たし、他のモジュール分割候補によってdominateされないのであれば、
図10(B)に示すごとく得られたモジュール分割情報は、そのまま、中間ノードCのMリスト34として登録される。つまり、
図10(C)に示すごとく、中間ノードCのMリスト={({C},48,{B,C}),({B,C},51,{A,C}),({A,B,C},45,{C})}となる。
【0118】
〔4−3〕選択部の動作
ついで、
図13に示すフローチャート(ステップS21〜S25)に従って、本実施形態の情報処理装置10における選択部22の動作について説明する。
図12に示す処理でDFG32の各中間ノードについてのMリスト34が作成された後、選択部22は、
図13に示すフローチャートによる処理を行なう。つまり、選択部22は、Mリスト34のコストに基づき、DFG32の出力ノードから、最小コストのモジュール分割候補を分割対象モジュールとして選択しながらバックトレースする。
【0119】
まず、選択部22は、DFG32の出力ノード(例えば
図11の中間ノードC参照)において、当該出力ノードのMリスト34から、最小コストのモジュール分割候補を採用する(ステップS21)。
【0120】
選択部22は、採用したモジュール分割候補への入力ノード(FIの各ノード)を辿る、つまり入力ノードのバックトレースを行なう(ステップS22)。
【0121】
そして、選択部22は、バックトレースの結果、DFG32の入力側の葉ノード(例えば
図11の葉ノードI1〜I4参照)に到達したか否かを判断する(ステップS23)。
【0122】
入力側の葉ノードに到達しない場合(ステップS23のNOルート)、選択部22は、前回採用したモジュール分割候補の入力ノード(FI)のMリスト34から、前回採用したモジュール分割候補のコスト算出に用いたモジュール分割候補を採用する(ステップS24)。この後、選択部22は、ステップS22の処理に戻る。
【0123】
選択部22によるバックトレース処理(ステップS22〜S24)は、バックトレースによって辿られる入力ノードが全て入力側葉ノードになるまで(ステップS23でYES判定となるまで)、再帰的に繰り返し実行される。
【0124】
バックトレースの結果、DFG32の入力側の葉ノードに到達した場合、選択部22は、葉ノード到達時点までに採用したモジュール分割候補の集合を、分割対象モジュールつまりモジュール分割結果35として出力保存し(ステップS25)、処理を終了する。
【0125】
次に、
図11を参照しながら、
図13に示すフローチャートに従って、
図8,
図9(A)および
図10(A)に示すDFG32についてのモジュール分割結果35、つまり最小コストのモジュール分割候補の選択手順について説明する。なお、
図11は、
図8,
図9(A)および
図10(A)に示すDFG32のモジュール分割結果35を示す図である。
図11に示すDFG32は、
図8,
図9(A)および
図10(C)に示すDFG32と同様であるので、その説明は省略する。
【0126】
まず、DFG32の出力ノードCのMリスト34から、最小コストのモジュール分割候補を採用する(
図13のステップS21参照)。このとき、
図10(C)に示す中間ノードCのMリスト34を参照すると、ノードCの最小コストは“45”であり、最小コスト“45”のモジュール分割候補C3のノード集合は{A,B,C}である。
【0127】
したがって、特に制約条件33が設定されていない場合、最小コスト“45”のモジュール分割候補C3に対応するノード集合{A,B,C}が、
図11に示すように、一つの分割対象モジュールM0として出力される(
図13のステップS23のYESルートからステップS25参照)。
【0128】
一方、制約条件33として「一つのモジュールの容量が2ノード以内」が設定されている場合には、
図10(C)に示す中間ノードCのMリスト34からノード集合{A,B,C}のモジュール分割情報は削除される。このため、
図10(C)に示す中間ノードCのMリスト34は{({C},48,{B,C}),({B,C},51,{A,C})}となる。したがって、ノードCの最小コストは“48”であり、最小コスト“48”のモジュール分割候補C1のノード集合は{C}である。
【0129】
この後、ノードCへの入力ノードを辿ると(
図13のステップS22参照)、中間ノードBに到達する(
図13のステップS23のNOルート参照)。したがって、モジュール分割候補C1={C}への入力ノードBについて、モジュール分割候補C1={C}のコスト“48”の算出に用いたモジュール分割候補〔
図9(B)に示すノードBのMリスト34の({A,B},42,{B})参照〕が採用される(
図13のステップS24参照)。
【0130】
そして、採用したモジュール分割候補{A,B}への入力ノードを辿ると(
図13のステップS22参照)、入力側の葉ノードI1〜I3に到達する(
図13のステップS23のYESルート参照)。したがって、葉ノード到達時点までに採用したモジュール分割候補の集合{M1b,M2b}が、分割対象モジュールつまりモジュール分割結果35として出力される(
図13のステップS25参照)。つまり、
図11に示すように、
図4(B)に示した分割結果の例と同様、DFG32は、二つのモジュールM1b,M2bに分割される。なお、モジュールM1b={A,B}であり、モジュールM2b={C}である。
【0131】
〔5〕本実施形態の情報処理装置のより具体的な動作
次に、
図14(A)〜
図17を参照しながら、本実施形態の情報処理装置10による具体的な動作(モジュール分割動作)について説明する。
【0132】
ここで、
図14(A)および
図15(A)に示すモジュール分割対象のDFG32の具体例について説明する。
図14(A)および
図15(A)では、同じDFG32の具体例が示されている。
【0133】
図14(A)および
図15(A)に示すDFG32は、入力ノードである4個の葉ノードI1〜I4と、出力ノードである1個の葉ノードO0とを含む。また、DFG32は、演算処理を表す6つの中間ノードA〜Fを含む。
【0134】
また、
図14(A)および
図15(A)に示すDFG32においても、ノード間の細線矢印は、ノード間のデータ依存性を表す有向エッジE11〜E20である。DFG32におけるエッジE11〜E20のそれぞれは、前述したエッジE1〜E7と同様、ノード間に流れるデータの配線幅、つまり入出力信号線の配線幅に応じた値を、重みとしてもつ。図中、エッジE11〜E20に付された数字が重みを表している。
【0135】
例えば
図14(A)および
図15(A)において、葉ノードI1から中間ノードDへの有向エッジE11と、葉ノードI2から中間ノードBへの有向エッジE12と、葉ノードI3から中間ノードAへの有向エッジE13とには、重み4が付与される。葉ノードI4から中間ノードCへの有向エッジE14には、重み2が付与される。また、中間ノードAから中間ノードB,Cへの有向エッジE15には、重み8が付与され、中間ノードBから中間ノードD,Eへの有向エッジE16には、重み4が付与される。さらに、中間ノードCから中間ノードEへの有向エッジE17には、重み6が付与され、中間ノードDから中間ノードFへの有向エッジE18には、重み4が付与される。そして、中間ノードEから中間ノードFへの有向エッジE19には、重み4が付与され、中間ノードFから葉ノードO0への有向エッジE20には、重み4が付与される。
【0136】
以下、本実施形態による、
図14(A)および
図15(A)に示すDFG32のモジュール分割(Mリスト34の作成および最小コストの選択)について考える。ただし、ここでは、コストは総カット数であり、制約条件33としては、「一モジュールに含まれる中間ノード数が4以下である」ことが設定されているものとする。
【0137】
ここでは、
図14(B)を参照して
図14(A)に示すDFG32におけるノードA〜CのMリスト34について説明し、
図15(B)を参照して
図15(A)に示すDFG32におけるノードD〜FのMリスト34について説明する。
【0138】
なお、
図14(B)は、
図14(A)に示すDFG32におけるノードA〜CのMリスト34を示す図であり、
図15(B)は、
図15(A)に示すDFG32におけるノードE〜FのMリスト34を示す図である。また、
図14(B)および
図15(B)において、各中間ノードのMリスト34は、既述のMリスト34と同様、モジュール分割候補毎のモジュール分割情報({ノード集合},コスト,{出力集合})の集合として作成される。さらに、
図14(B)および
図15(B)において、中間ノードA〜Fの出現順序は、前述したトポロジカル順に相当する。
【0139】
上述したコスト算出部21の機能により、
図14(A)および
図15(A)に示すDFG32における中間ノードA〜FそれぞれのMリスト34は、
図14(B)および
図15(B)に示すように算出され作成される。
【0140】
図14(B)に示すように、中間ノードAを頂点とするモジュール分割候補はA1の一組のみである。当該候補A1において、ノード集合は{A}、コストは“12”、出力集合は{A}である。
【0141】
中間ノードBを頂点とするモジュール分割候補は、B1,B2の二組である。候補B1において、ノード集合は{B}、コストは“20”、出力集合は{A,B}である。また、候補B2において、ノード集合は{A,B}、コストは“20”、出力集合は{A,B}である。
【0142】
同様に、中間ノードCを頂点とするモジュール分割候補は、C1,C2の二組である。候補C1において、ノード集合は{C}、コストは“20”、出力集合は{A,C}である。また、候補C2において、ノード集合は{A,C}、コストは“20”、出力集合は{A,C}である。
【0143】
図15(B)に示すように、中間ノードDを頂点とするモジュール分割候補は、D1〜D3の三組である。候補D1において、ノード集合は{D}、コストは“28”、出力集合は{A,B,D}である。また、候補D2において、ノード集合は{B,D}、コストは“28”、出力集合は{A,B,D}である。候補D3において、ノード集合は{A,B,D}、コストは“28”、出力集合は{A,B,D}である。
【0144】
中間ノードEを頂点とするモジュール分割候補は、E1〜E7の七組である。候補E1において、ノード集合は{E}、コストは“32”、出力集合は{A,B,C,E}である。候補E2において、ノード集合は{A,B,C,E}、コストは“18”、出力集合は{B,E}である。候補E3において、ノード集合は{A,C,E}、コストは“26”、出力集合は{A,B,E}である。候補E4において、ノード集合は{B,E}、コストは“32”、出力集合は{A,B,C,E}である。候補E5において、ノード集合は{C,E}、コストは“26”、出力集合は{A,B,E}である。候補E6において、ノード集合は{B,C,E}、コストは“26”、出力集合は{A,B,E}である。候補E7において、ノード集合は{A,B,E}、コストは“32”、出力集合は{A,B,C,E}である。
【0145】
ここで、コスト算出に際し、入力ノード集合FIに属するノードkのTFI(k)が重なり合う場合、当該重なり合う部分のコストを除去してコストを算出する必要がある。
【0146】
例えば、候補E1の場合つまり{E}を一つのモジュールとして分割する場合、候補E1のコストは以下のように算出される。{E}自体のコストは、出力の重み“4”と葉ノードの入力の重み“0”との合計“4”である。FIのコストは、ノードB(候補B1)のコスト20およびノードC(候補C1)のコスト20である。FIの重なり合う部分はノードAであるので、重なり合う部分のコストは、ノードA(候補A1)のコスト12である。したがって、候補E1のコスト=4+20+20−12=32となる。
【0147】
同様に、例えば、候補E3の場合つまり{A,C,E}を一つのモジュールとして分割する場合、候補E3のコストは以下のように算出される。{A,C,E}自体のコストは、出力の重み“4”,“8”と葉ノードI3,I4の入力の重み“4”,“2”との合計“18”である。FIのコストは、ノードB(候補B1)のコスト20である。FIの重なり合う部分はノードAであるので、重なり合う部分のコストは、ノードA(候補A1)のコスト12である。したがって、候補E3のコスト=18+20−12=26となる。
【0148】
また、例えば、候補E4の場合つまり{B,E}を一つのモジュールとして分割する場合、候補E4のコストは以下のように算出される。{B,E}自体のコストは、出力の重み“4”,“4”と葉ノードI2の入力の重み“4”との合計“12”である。FIのコストは、ノードC(候補C1)のコスト20である。このとき、FIの入力Aは、候補C1の出力集合{A,C}によってカバーされるので、コストに計上する必要がない。したがって、候補E4のコスト=12+20=32となる。
【0149】
中間ノードFを頂点とするモジュール分割候補は、F1〜F4,…である。候補F1において、ノード集合は{F}、コストは“30”、出力集合は{B,D,E,F}である。候補F2において、ノード集合は{D,F}、コストは“26”、出力集合は{B,E,F}である。候補F3において、ノード集合は{B,D,F}、コストは“34”、出力集合は{A,B,E,F}である。候補E4において、ノード集合は{A,B,C,D,E,F}、コストは“18”、出力集合は{F}である。
【0150】
なお、
図15(B)において、一重取消線によって取り消されている候補(例えば候補E1,E5,E6,E7,F1,F3,…)は、他の候補によってdominateされた候補であるためにMリスト34から削除された候補を示す。
【0151】
また、
図15(B)において、二重取消線によって取り消されている候補(例えば候補F4)は、当該候補のノード集合に属する中間ノードの数が、制約条件33である「一モジュールに含まれる中間ノード数が4以下である」ことを満たさないためにMリスト34から削除された候補を示す。
【0152】
そして、本実施形態では、
図14(B)および
図15(B)に示すように作成されたノードA〜FそれぞれのMリスト34に基づき、選択部22の機能によって、
図16に示すごとく、モジュール分割候補F2とE2とが分割対象モジュール(モジュール分割結果35)として選択される。
図16は、
図14(A)および
図15(A)に示すDFG32の本実施形態によるモジュール分割結果35を示す図である。
【0153】
このとき、選択部22は、まず、DFG32の出力ノードFのMリスト34(
図15(B)参照)から、最小コスト“26”のモジュール分割候補F2を採用する。最小コスト“26”のモジュール分割候補F2は、
図16のモジュールM3bに相当する。
【0154】
この後、選択部22は、候補F2への入力ノードを辿ると、DFG32の出力ノードFのMリスト34(
図15(B)参照)から、最小コスト“18”のモジュール分割候補E2を採用する。最小コスト“18”のモジュール分割候補E2は、
図16のモジュールM3aに相当する。
【0155】
このように、本実施形態によれば、
図14(B)および
図15(B)に示すようなDFG32は、
図16に示すように、二つのモジュールM3a,M3bに分割される。当該モジュール分割は、総カット数が“26”であり、上述した最小コスト“26”に一致している。
【0156】
ここで、上述した技術(例えば特許文献2)を
図14(B)および
図15(B)に示すようなDFG32に適用した場合、
図17に示すように、入力側葉ノードI1〜I4と出力側葉ノードO0との間の最大パス長を二分するモジュール分割が行なわれる。
図17は、
図14(A)および
図15(A)に示すDFG32の従来手法によるモジュール分割結果を示す図である。
【0157】
図14(A),
図15(A),
図16および
図17に示すDFG32において、最大パス長(最大ノード段数)は“4”であるため、当該最大パス長を二分する箇所は、一意に決まり、ノードBとDとの間およびノードCとEとの間となる。したがって、
図17に示すように、DFG32は、二つのモジュールM4a={A,B,C}とM4b={D,E,F}とに分割される。このようなモジュール分割の総カット数は“28”であり、上述した本実施形態によるモジュール分割の総カット数(コスト)“26”よりも劣っていることは明らかである。
【0158】
〔6〕本実施形態の効果
このように、本実施形態によれば、DFG32から複数のモジュール分割候補が作成され、モジュール分割候補毎に総カット数(コスト)が求められ、総カット数が最小となるモジュール分割候補が選択される。これにより、ユーザのスキルに依存することなく、最適なモジュール分割を行なうことができる。
【0159】
また、トポロジカル順にコストを算出することで、コストを算出するための計算量を削減することができる。つまりトポロジカル順に基づく計算処理を行なうことで、最適コストによるモジュール分割を効率よく求められることが保証される。
【0160】
さらに、高位合成ツールを用いた回路設計に対して、配線性を考慮した本実施形態のモジュール分割手法を適用することで、レイアウト合成に掛かる工数と設計結果として得られる回路の性能とのトレードオフが取れる設計環境を提供することができる。特に、本実施形態の技術は、LSIやFPGAなどのハードウェアデバイス向けの回路設計において有効に適用される。
【0161】
また、本実施形態のモジュール分割手法は、コスト(総カット数)を含むMリスト34の効率的な計算により、大規模なDFG32に対する適用が可能である。例えば、DFG32のノード数をN、一モジュールの容量をノード数mとすると、一つのノードのMリスト34の計算は高々O(m)である(O:order)。全てのノードについてMリスト34の計算を行なうため、トータルの計算量は、O(m * N)であり、DFG32のサイズに比例する。
【0162】
〔7〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【0163】
例えば、上述した実施形態では、コストが総カット数である場合について説明したが、本発明はこれに限定されるものではない。総カット数以外に、例えば、回路の速度性能(最大遅延やスループットなど)を、コストとして用いることができる。ここで、DFG上の最大モジュール段数を、回路の最大遅延と見なすことが可能である。
【0164】
また、上述した実施形態では、モジュール分割結果35等の情報を出力する出力部が、当該情報を表示出力する、モニタ14a等の表示部50である場合について説明した。本発明はこれに限定されるものでなく、出力部は、当該情報を印刷出力する、プリンタ等の印刷装置であってもよく、上述した実施形態と同様の作用効果を得ることができる。
【0165】
〔8〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0166】
(付記1)
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出するコスト算出部と、
前記コスト算出部によって算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する選択部と、を有する、情報処理装置。
【0167】
(付記2)
前記所定コストは、最小コストである、付記1に記載の情報処理装置。
【0168】
(付記3)
前記コストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和であり、
前記重みは、当該重みを付与された前記エッジに対応する前記入出力信号線の配線幅に応じた値である、付記1または付記2に記載の情報処理装置。
【0169】
(付記4)
各モジュール分割候補に関する制約条件が予め設定され、
前記コスト算出部は、前記制約条件を満たすモジュール分割候補を作成する、または、前記選択部は、前記制約条件を満たすモジュール分割候補を前記分割対象モジュールとして選択する、付記1〜付記3のいずれか一項に記載の情報処理装置。
【0170】
(付記5)
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、付記4に記載の情報処理装置。
【0171】
(付記6)
前記コスト算出部は、前記データフローグラフにおける入力側のノードからトポロジカル順に前記コストを算出する、付記1〜付記5のいずれか一項に記載の情報処理装置。
【0172】
(付記7)
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、
作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出し、
算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する、
処理を、コンピュータに実行させる、プログラム。
【0173】
(付記8)
前記所定コストは、最小コストである、付記7に記載のプログラム。
【0174】
(付記9)
前記コストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和(総カット数)であり、
前記重みは、当該重みを付与された前記エッジに対応する前記入出力信号線の配線幅に応じた値である、付記7または付記8に記載のプログラム。
【0175】
(付記10)
各モジュール分割候補に関する制約条件が予め設定され、
前記制約条件を満たすモジュール分割候補を作成する、または、前記制約条件を満たすモジュール分割候補を前記分割対象モジュールとして選択する、処理を、前記コンピュータに実行させる、付記7〜付記9のいずれか一項に記載のプログラム。
【0176】
(付記11)
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、付記10に記載のプログラム。
【0177】
(付記12)
前記データフローグラフにおける入力側のノードからトポロジカル順に前記コストを算出する、処理を、前記コンピュータに実行させる、付記7〜付記11のいずれか一項に記載のプログラム。
【0178】
(付記13)
コンピュータによって実行される情報処理方法であって、
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、
作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出し、
算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する、情報処理方法。
【0179】
(付記14)
前記所定コストは、最小コストである、付記13に記載の情報処理方法。
【0180】
(付記15)
前記コストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和(総カット数)であり、
前記重みは、当該重みを付与された前記エッジに対応する前記入出力信号線の配線幅に応じた値である、付記13または付記14に記載の情報処理方法。
【0181】
(付記16)
各モジュール分割候補に関する制約条件が予め設定され、
前記制約条件を満たすモジュール分割候補を作成する、または、前記制約条件を満たすモジュール分割候補を前記分割対象モジュールとして選択する、付記13〜付記15のいずれか一項に記載の情報処理方法。
【0182】
(付記17)
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、付記16に記載の情報処理方法。
【0183】
(付記18)
前記データフローグラフにおける入力側のノードからトポロジカル順に前記コストを算出する、付記13〜付記17のいずれか一項に記載の情報処理方法。