JP6004818B2 - 並列化方法、システム、及びプログラム - Google Patents
並列化方法、システム、及びプログラム Download PDFInfo
- Publication number
- JP6004818B2 JP6004818B2 JP2012174491A JP2012174491A JP6004818B2 JP 6004818 B2 JP6004818 B2 JP 6004818B2 JP 2012174491 A JP2012174491 A JP 2012174491A JP 2012174491 A JP2012174491 A JP 2012174491A JP 6004818 B2 JP6004818 B2 JP 6004818B2
- Authority
- JP
- Japan
- Prior art keywords
- segment
- block
- blocks
- segments
- initial segment
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/13—Differential equations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
Description
a)内部状態を持つブロックは当該ブロックへの入力を必要とせず、自身が持つ内部状態からその出力を計算できるため、任意のタイミングで出力を計算してよい。図3におけるブロック302、ブロック304が内部状態を持つブロックであるとすると、これらのブロックから出力計算を開始することができる。
b)内部状態を持たないブロックは、自身への入力を元に出力を計算するため、上流のブロックの出力として自身への入力が計算された後に当該ブロックの出力を計算する。図3におけるブロック302、ブロック304以外のブロックは、入力が計算された後、初めて出力を計算することができる。ただし、入力を持たないブロックの場合には、そのブロックから出力計算を開始することができる。
因みに、Simulink(R)において、NDFを持つ可能性があるブロックの例として、これには限定されないが、次のものがある。
Integrator: 積分計算のブロック
DiscreteFilter:無限インパルス応答(IIR)フィルタと有限インパルス応答(FIR)フィルタを実現するブロック
TransferFunction:伝達関数を表すブロック(NDFはdx/dtに該当)
S-function: ユーザが機能を自由に定義できるブロック
RateTransition : サンプルタイムが変化することを表すブロック
内部状態をもつブロックをブロック402、ブロック404及びブロック406とする。
グラフG := (V,E) ここで、Vはノード(ブロック)の集合で、Eはエッジ(リンク)の集合である。
P(v) := {u ∈ V:(u,v) ∈ E} (ノード v の親ノードの集合)
C(v) := {u ∈ V:(v,u) ∈ E} (ノード v の子ノードの集合)
|W| := 集合Wの要素の数
path(u,w) := {u,v1,v2,...,vn-1,vn,w ∈ V:
(u,v1),(v1,v2),...,(vn-1,vn),(vn,w) ∈ E}
T(v) := A(v) ∪ {v}
R(v,s) := (D(v) ∪ {v}) ∩ s where s ⊆ V
||v|| := ノードv ∈ Vの計算時間
rは、0 < r < 1を満たす実数である。
図6及び図7は、セグメント抽出ルーチン208の処理のフローチャートを示す図である。
L' := {v ∈ W: |C(v)| = 0}
また、初期セグメント内の並列性に基づいて初期セグメントを再分割するための各種変数の初期値を下記のとおりセットする。
V' := V (全ノードの集合)
r := 事前に定義される実数 0 < r < 1
X := Φ (空の基点ノード集合)
このgainの値は、ノードvから依存関係の逆方向に辿って得られるセグメントの計算時間と、vの親ノードから依存関係の逆方向に辿って得られるセグメントの最大計算時間の差であり、この値が大きいほどノードvによって一つのセグメントになってしまうことにより失われる並列性が大きい、逆に言えばvを取り除いて得られる並列性が大きいことを意味する。
Sdown := Φ
Sup := Φ
その後、ステップ824において、sからR'を除去したノードの集合W'を用意し、ステップ826において前記segments(W')を呼び出すことで、W'から上流セグメントを抽出し、Sup := Sup ∪ segments(W')として得られたセグメントを全てSupに加える。ちなみに、sがX中のノードを含まない(すなわちX ∩ s = Φである)場合には、sがそのままSupの要素として追加されることになる。
この繰り返しにより全ての初期セグメントに対して上記処理が完了するとS'ini は空集合となる。ステップ818でS'ini = Φと判断すると、セグメント再分割ルーチン212は、上流セグメントの集合Supおよび下流セグメントの集合Sdownをファイル214としてハードディスク・ドライブ116に書き出して処理を終わる。
S'up = merge(p,Sup,V)
S'down = merge(p,Sdown,V)
Sfinal = Φ
ここで、pは並列数であり、Vは全ノードの集合である。後述のように、mergeルーチンは第二引数に与えられたセグメント集合に含まれるセグメントをp個以下のセグメントにマージし、その結果を返す。
sup ∈ S'up, ||sup|| ≧ ||-t||, ∀t ∈ S'up
但しここで、||(u,v)||は、(u,v)の通信コストであり、
である。
sf := sup ∪ sdownとしてsupとsdownの和集合sfを新たに作り、Sfinal := Sfinal ∪ {sf}として、Sfinalにsfを加える。
このsetbinpack1の処理の詳細は、図11及び図12のフローチャートを参照して後で説明するが、setbinpack1は箱の容量が第一引数に与えられる値であったときに、第二引数で与えられたセグメントを全て詰め込むのに必要ななるべく少ない箱の数を返すものである。
a := (nup - nlow)/(vup - vlow)
b := nlow - a・vlow
vnext := (p - b)/a
n := setbinpack1(vnext,S)
a := (nup - nlow)/(vup - vlow)
b := nlow - a・vlow
vnext := (p - b)/a
s ∈ S', ||s|| ≧ ||t||, ∀t∈ S'
そしてステップ1108から1110、1114、1116の一連の処理で、最初にsが入る箱の番号i を 1から順に探す。そのためステップ1108ではまずi:= 1として iに1をセットする。
x1' = f1(x(t),t)
x2' = f2(x(t),t)
...
xn' = fn(x(t),t)
104a、104b、・・・104n CPU
106 メイン・メモリ
116 ハードティスク・ドライブ
202 シミュレーション・モデリング・ツール
204 ブロック線図のコード
208 セグメント抽出ルーチン
212 セグメント再分割ルーチン
216 マージ処理ルーチン
220 コード変換ルーチン
224 コンパイラ
228 実行環境
Claims (18)
- 複数のプロセッサをもつコンピュータの処理により、ブロックがノードであり、依存関係がリンクであるグラフ状のモデルで表現される、複数の常微分方程式で記述される、連立方程式を解く方法であって、単一の常微分方程式を表現するグラフを、グラフの分割アルゴリズムを用いて複数のプロセッサをもつコンピュータの処理により解く方法において、
前記モデルにおける内部状態をもつブロックおよび出力を持たないブロックから出発して、前記依存関係を逆に辿ることにより、前記内部状態をもつブロックおよび出力を持たないブロック毎に、互いに重複を含んでいてもよい、他と独立に実行可能な前記ブロックの集合を初期セグメントsとして抽出するステップと、
抽出された前記初期セグメントsにおいて、該初期セグメントs内部の並列性に基づいて前記初期セグメントsの中の一部のブロックの集合を選択するステップと、
前記初期セグメントsにおいて、前記選択されたブロックの集合を処理対象から外すことで、子ブロックをもたなくなったブロックから出発して、前記依存関係を逆に辿ることにより、前記子ブロックをもたなくなったブロック毎に、互いに重複を含んでいてもよい、他と独立に実行可能な前記ブロックの集合であるセグメントを抽出するステップと、
前記抽出されたセグメント及び、前記初期セグメントsの中でその内部のブロックが処理対象から外されなかったものを上流セグメントとし、前記選択され処理対象から外されたブロックの集合を下流セグメントとし、上流セグメント同士、下流セグメント同士を、重複を減らすようにマージし、前記上流セグメントおよび下流セグメントが所定並列実行数以下になるようにするマージ・ステップと、
前記マージされた結果のセグメントの各々をコンパイルして実行可能コードに変換するステップと、
前記セグメント毎の実行可能コードを、前記複数のプロセッサに個別に割り当てて並列に実行させるステップを有する、
方法。 - 前記初期セグメントsとして抽出するステップが、内部状態をもつブロックへの入力など、1タイムステップ内ではないものとしてよい依存関係を介した親ブロックは含まないようにして、親ブロックを辿りつつ、ブロックをセグメントに追加するステップを有する、請求項1に記載の方法。
- 前記初期セグメントsの中の一部のブロックの集合を選択するステップが、
ノードのgainが所定の値より大きいことで前記ブロックの集合を選択するステップを有する、
請求項1に記載の方法。 - 前記マージするステップが、bin packing問題を繰り返し解くステップを含む、請求項1に記載の方法。
- 前記内部状態をもつブロックが、積分計算のブロック、またはユーザー定義のブロックである、請求項1に記載の方法。
- 前記複数のプロセッサをもつコンピュータが、マルチコアのプロセッサを含む、請求項1に記載の方法。
- 複数のプロセッサをもつコンピュータの処理により、ブロックがノードであり、依存関係がリンクであるグラフ状のモデルで表現される、複数の常微分方程式で記述される、連立方程式を解くプログラムであって、単一の常微分方程式を表現するグラフを、グラフの分割アルゴリズムを用いて複数のプロセッサをもつコンピュータの処理により解くプログラムにおいて、
前記コンピュータに、
前記モデルにおける内部状態をもつブロックおよび出力を持たないブロックから出発して、前記依存関係を逆に辿ることにより、前記内部状態をもつブロックおよび出力を持たないブロック毎に、互いに重複を含んでいてもよい、他と独立に実行可能な前記ブロックの集合を初期セグメントsとして抽出するステップと、
抽出された前記初期セグメントsにおいて、該初期セグメントs内部の並列性に基づいて前記初期セグメントsの中の一部のブロックの集合を選択するステップと、
前記初期セグメントsにおいて、前記選択されたブロックの集合を処理対象から外すこ
とで、子ブロックをもたなくなったブロックから出発して、前記依存関係を逆に辿ることにより、前記子ブロックをもたなくなったブロック毎に、互いに重複を含んでいてもよい、他と独立に実行可能な前記ブロックの集合であるセグメントを抽出するステップと、
前記抽出されたセグメント及び、前記初期セグメントsの中でその内部のブロックが処理対象から外されなかったものを上流セグメントとし、前記選択され処理対象から外されたブロックの集合を下流セグメントとし、上流セグメント同士、下流セグメント同士を、重複を減らすようにマージし、前記上流セグメントおよび下流セグメントが所定並列実行数以下になるようにするマージ・ステップと、
前記マージされた結果のセグメントの各々をコンパイルして実行可能コードに変換するステップと、
前記セグメント毎の実行可能コードを、前記複数のプロセッサに個別に割り当てて並列に実行させるステップを実行させる、
プログラム。 - 前記初期セグメントsとして抽出するステップが、内部状態をもつブロックへの入力など、1タイムステップ内ではないものとしてよい依存関係を介した親ブロックは含まないようにして、親ブロックを辿りつつ、ブロックをセグメントに追加するステップを有する、請求項7に記載のプログラム。
- 前記初期セグメントsの中の一部のブロックの集合を選択するステップが、
ノードのgainが所定の値より大きいことで、前記ブロックの集合を選択するステップを有する、
請求項7に記載のプログラム。 - 前記マージするステップが、bin packing問題を繰り返し解くステップを含む、請求項7に記載のプログラム。
- 前記内部状態をもつブロックが、積分計算のブロック、またはユーザー定義のブロックである、請求項7に記載のプログラム。
- 前記複数のプロセッサをもつコンピュータが、マルチコアのプロセッサを含む、請求項7に記載のプログラム。
- 複数のプロセッサをもつコンピュータの処理により、ブロックがノードであり、依存関係がリンクであるグラフ状のモデルで表現される、複数の常微分方程式で記述される、連立方程式を解くシステムであって、単一の常微分方程式を表現するグラフを、グラフの分割アルゴリズムを用いて複数のプロセッサをもつコンピュータの処理により解くシステムにおいて、
記憶手段と、
前記記憶手段に保存された、前記モデルのファイルと、
前記モデルにおける内部状態をもつブロックおよび出力を持たないブロックから出発して、前記依存関係を逆に辿ることにより、前記内部状態をもつブロックおよび出力を持たないブロック毎に、互いに重複を含んでいてもよい、他と独立に実行可能な前記ブロックの集合を初期セグメントsとして抽出する手段と、
抽出された前記初期セグメントsにおいて、該初期セグメントs内部の並列性に基づいて前記初期セグメントsの中の一部のブロックの集合を選択する手段と、
前記初期セグメントsにおいて、前記選択されたブロックの集合を処理対象から外すことで、子ブロックをもたなくなったブロックから出発して、前記依存関係を逆に辿ることにより、前記子ブロックをもたなくなったブロック毎に、互いに重複を含んでいてもよい、他と独立に実行可能な前記ブロックの集合であるセグメントを抽出する手段と、
前記抽出されたセグメント及び、前記初期セグメントsの中でその内部のブロックが処理対象から外されなかったものを上流セグメントとし、前記選択され処理対象から外されたブロックの集合を下流セグメントとし、上流セグメント同士、下流セグメント同士を、重複を減らすようにマージし、前記上流セグメントおよび下流セグメントが所定並列実行数以下になるようにするマージ手段と、
前記マージされた結果のセグメントの各々をコンパイルして実行可能コードに変換する手段と、
前記セグメント毎の実行可能コードを、前記複数のプロセッサに個別に割り当てて並列に実行させる手段を有する、
システム。 - 前記初期セグメントsとして抽出する手段が、内部状態をもつブロックへの入力など、1タイムステップ内ではないものとしてよい依存関係を介した親ブロックは含まないようにして、親ブロックを辿りつつ、ブロックをセグメントに追加する手段を有する、請求項13に記載のシステム。
- 前記初期セグメントsの中の一部のブロックの集合を選択する手段が、ノードのgainが所定の値より大きいことで、前記ブロックの集合を選択する手段を有する、請求項13に記載のシステム。
- 前記マージ手段が、bin packing問題を繰り返し解く手段を有する、請求項13に記載のシステム。
- 前記内部状態をもつブロックが、積分計算のブロック、またはユーザー定義のブロックである、請求項13に記載のシステム。
- 前記複数のプロセッサをもつコンピュータが、マルチコアのプロセッサを含む、請求項13に記載のシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012174491A JP6004818B2 (ja) | 2012-08-07 | 2012-08-07 | 並列化方法、システム、及びプログラム |
US13/952,077 US9311273B2 (en) | 2012-08-07 | 2013-07-26 | Parallelization method, system, and program |
US13/972,226 US9218317B2 (en) | 2012-08-07 | 2013-08-21 | Parallelization method, system, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012174491A JP6004818B2 (ja) | 2012-08-07 | 2012-08-07 | 並列化方法、システム、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014035548A JP2014035548A (ja) | 2014-02-24 |
JP6004818B2 true JP6004818B2 (ja) | 2016-10-12 |
Family
ID=50066995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012174491A Expired - Fee Related JP6004818B2 (ja) | 2012-08-07 | 2012-08-07 | 並列化方法、システム、及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (2) | US9311273B2 (ja) |
JP (1) | JP6004818B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9594854B1 (en) * | 2012-10-15 | 2017-03-14 | The Mathworks, Inc. | Using abstract nodes to test the behavior of a dynamic system |
US9335981B2 (en) * | 2013-10-18 | 2016-05-10 | Nec Corporation | Source-to-source transformations for graph processing on many-core platforms |
WO2018092237A1 (ja) * | 2016-11-17 | 2018-05-24 | 三菱電機株式会社 | プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム |
CN117093502B (zh) * | 2023-10-13 | 2024-01-30 | 支付宝(杭州)信息技术有限公司 | 程序代码的并行性检测方法和装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6165336A (ja) * | 1984-09-07 | 1986-04-03 | Hitachi Ltd | 高速演算方式 |
JPH04211858A (ja) | 1990-04-02 | 1992-08-03 | Mitsubishi Electric Corp | データフローグラフ分割装置及び分割方法 |
JPH0844577A (ja) | 1994-07-26 | 1996-02-16 | Sumisho Electron Kk | データ分割方法及びマルチプロセッサシステム |
US7409656B1 (en) * | 2005-09-12 | 2008-08-05 | Cadence Design Systems, Inc. | Method and system for parallelizing computing operations |
US7870556B2 (en) * | 2006-05-16 | 2011-01-11 | Ab Initio Technology Llc | Managing computing resources in graph-based computations |
US20080120266A1 (en) * | 2006-11-22 | 2008-05-22 | Jean-Paul Theis | Software method for solving systems of linear equations having integer variables |
US8516029B1 (en) * | 2008-06-12 | 2013-08-20 | Carnegie Mellon University | Methods and apparatuses for solving graph Laplacians |
JP4886838B2 (ja) | 2009-10-30 | 2012-02-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 並列化方法、システム、及びプログラム |
JP5479942B2 (ja) * | 2010-02-22 | 2014-04-23 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 並列化方法、システム、及びプログラム |
JP5692739B2 (ja) * | 2010-03-11 | 2015-04-01 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 常微分方程式を解くための方法、プログラム及びシステム |
JP6021342B2 (ja) | 2012-02-09 | 2016-11-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 並列化方法、システム、及びプログラム |
-
2012
- 2012-08-07 JP JP2012174491A patent/JP6004818B2/ja not_active Expired - Fee Related
-
2013
- 2013-07-26 US US13/952,077 patent/US9311273B2/en not_active Expired - Fee Related
- 2013-08-21 US US13/972,226 patent/US9218317B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US9311273B2 (en) | 2016-04-12 |
US20140047421A1 (en) | 2014-02-13 |
US9218317B2 (en) | 2015-12-22 |
US20140046992A1 (en) | 2014-02-13 |
JP2014035548A (ja) | 2014-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4931978B2 (ja) | 並列化処理方法、システム、及びプログラム | |
JP5209059B2 (ja) | ソース・コード処理方法、システム、及びプログラム | |
JP4886838B2 (ja) | 並列化方法、システム、及びプログラム | |
Ozik et al. | From desktop to large-scale model exploration with Swift/T | |
JP6021342B2 (ja) | 並列化方法、システム、及びプログラム | |
Benelallam et al. | Distributed Model-to-model Transformation with ATL on MapReduce | |
JP2010134614A (ja) | 並列化処理方法、システム、及びプログラム | |
JP5479942B2 (ja) | 並列化方法、システム、及びプログラム | |
US20090007064A1 (en) | Size vector sharing in code generated for variable-sized signals | |
JP6004818B2 (ja) | 並列化方法、システム、及びプログラム | |
Bakhtin et al. | DVM-approach to the automation of the development of parallel programs for clusters | |
US9280382B1 (en) | Parallel processing of multidimensional arrays | |
Cunha et al. | Parallel Program development for cluster computing: methodology, tools and integrated environments | |
US9135065B1 (en) | Parallel processing of multidimensional arrays | |
US11593540B1 (en) | Systems and methods for performing concurrency analysis in simulation environments | |
Genin et al. | System design, optimization and intelligent code generation for standard digital signal processors | |
Stavåker | Contributions to parallel simulation of equation-based models on graphics processing units | |
Tripakis | Compositional model-based system design and other foundations for mastering change | |
Alefragis et al. | Mapping and scheduling hard real time applications on multicore systems-the argo approach | |
Doroshenko et al. | Automated design of parallel programs for heterogeneous platforms using algebra-algorithmic tools | |
Ivutin et al. | Low-level Code Auto-tuning for State-of-the-art Multicore Architectures | |
Glanon et al. | Estimating latency for synchronous dataflow graphs using periodic schedules | |
Gebremedhin | Automatic and explicit parallelization approaches for mathematical simulation models | |
Alzahrani et al. | Data Aware Simulation of Complex Systems on GPUs | |
Van Dang et al. | Algebraic Semantics of Register Transfer Level in Synthesis of Stream Calculus-Based Computing Big Data in Livestream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141224 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160415 |
|
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: 20160816 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160906 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6004818 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |