simulink モデルの高速化手法...5 キーメッセージ...

53
1 © 2012 The MathWorks, Inc. Simulink ® モデルの高速化手法 MathWorks Japan アプリケーションエンジニアリング部 チームリーダー / シニアアプリケーションエンジニア 宅島 章夫

Upload: others

Post on 20-Jan-2020

166 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

1 © 2012 The MathWorks, Inc.

Simulink®モデルの高速化手法

MathWorks Japan

アプリケーションエンジニアリング部

チームリーダー / シニアアプリケーションエンジニア

宅島 章夫

Page 2: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

2

はじめに、

何を高速化する話なのかを明確にします

Simulinkモデルに対する

ユーザのアクション

• モデルのオープン/クローズ

• モデルの編集

• シミュレーションの実行

• コード生成/ビルドの実行

• レポートの自動生成

• テストベクタの自動生成

• …

シミュレーションフェーズ

1. 初期化処理

2. シミュレーションループ

3. 終了処理

「高速化」にも色々ありますが…

ここではシミュレーションループでの高速化手法を紹介します

(Tips / トラブルシュート法)

Page 3: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

3

いきなりですが、クイズです

シミュレーション速度低下の要因を

このモデルからいくつ見つけられますか?

Page 4: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

4

いきなりですが、クイズです

シミュレーション速度低下の要因を

このモデルからいくつ見つけられますか?

どんな対処法・改善法が考えられるでしょうか?

Page 5: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

5

キーメッセージ

様々な課題に対して、様々な高速化手法があります。

時にはモデルの本質を洞察することも必要でしょう。

本講演では、身近な例を使って、突破口を開くための基本的な指針を与えることを目標にします。

パフォーマンスを引き出すためのコツ・ノウハウを知って、品質改善・コスト低減・生産性向上につなげましょう。

Page 6: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

6

アジェンダ

まずはここから – 今すぐ簡単に試せる高速化手法

本質を探ろう! – 3つのケースから得られる教訓

まだある高速化手法 – アドバンストトピックス・関連情報

まとめ

Page 7: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

7

アジェンダ

まずはここから – 今すぐ簡単に試せる高速化手法

本質を探ろう! – 3つのケースから得られる教訓

まだある高速化手法 – アドバンストトピックス・関連情報

まとめ

カテゴリ Tips トラブルシュート

想定レベル 初級 中級 上級

対象ソルバー 連続 離散

可変ステップ 固定ステップ

Page 8: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

8

ぜひ試してください

ワンクリックでできるシミュレーション高速化

ドロップダウンリストから

選択するだけ

2つの高速化モードを提供

– アクセラレータ

– ラピッドアクセラレータ

モデルの一部/全体をビルドして

バイナリ変換(DLL, 実行ファイル)することで高速化を実現

– シミュレーション開始前にコード生成・コンパイル・リンクを自動実行

Page 9: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

9

どのくらい高速化できるのでしょうか?

シミュレーション実行時間:約10倍~50倍

オーバーヘッド時間?

ノーマル アクセラレータ ラピッドアクセラレータ

シミュレーション時間

シミュレーション実行時間オーバーヘッド時間

ブロック総数: 77

連続状態量の数: 10

シミュレーション終了時間: 1000(秒)

約10倍

約50倍

Page 10: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

10

考慮すべきトレードオフがあります

オーバーヘッド時間の

大部分は、ビルド/再ビルドに要する時間です

ビルド/再ビルド時間が

支配的なモデルでは

効果が上がりません

– ノーマルモードが

最速ということも…

シミュレーションの

実行時間が支配的な

モデルほど効果が

あります シミュレーション終了時間 or タイムステップ数

実行に要する時間

実線部

モデルのビルド/

再ビルドを要する場合

破線部

モデルのビルド/

再ビルドを要しない場合

Page 11: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

11

R2012b Simulinkの最新ツールでは

トレードオフを予測し、指針を与えてくれます

「パフォーマンスアドバイザー」を使ってみましょう

ノーマルモード使用時とアクセラレータモード使用時の

トレードオフ予測値を計算

シミュレーション回数 実行に要する時間

ノーマル

アクセラレータ

Page 12: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

12

この方法だけでは

大きな高速化がのぞめないケースもあります

タイムステップの総数が少ないモデル

コンパイル済みS-Functionを多用したモデル

他に高速化の手立てはあるのでしょうか?

Page 13: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

13

アジェンダ

まずはここから – 今すぐ簡単に試せる高速化手法

本質を探ろう! – 3つのケースから得られる教訓 (その①)

まだある高速化手法 – アドバンストトピックス・関連情報

まとめ

カテゴリ Tips トラブルシュート

想定レベル 初級 中級 上級

対象ソルバー 連続 離散

可変ステップ 固定ステップ

Page 14: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

14

ケース1: 再び、冒頭のモデルに戻ります

なぜこんなに遅いのでしょうか?

>> tic, sim('sample_solver1'), toc

経過時間は 9.604059 秒です。

シミュレーションに要した時間

Page 15: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

15

結果もおかしい?

信号 ‘y2’ の結果は妥当といえますか?

Page 16: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

16

高速化の話から少しだけ離れて

この「気になる結果」を検証してみましょう

対象が小規模なので、厳密解を考えてみましょう

0 0.2 0.4 0.6 0.8 10

0.5

1

1.5

2

2.5

伝達関数 時間関数

伝達関数を逆ラプラス変換して

y2の時間関数を求めます

本当はこうなるはず!

Page 17: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

17

なぜ、そうならないのでしょうか?

シミュレーションの条件を色々と変えてみましょう

ソルバーのステップサイズを強制的に小さくしてみましょう

最大ステップサイズ: 1e-6

最大ステップサイズ: 1e-7

最大ステップサイズ: 1e-5

厳密解に近い応答! 厳密解に近い応答!

最大ステップサイズ設定

Page 18: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

18

所望の応答は得られましたが…

当然ですが、余計に計算時間が掛かってしまいます

最大ステップサイズ: 1e-6

最大ステップサイズ: 1e-7

最大ステップサイズ: 1e-5

約10秒 約30秒! 約285秒!!

アクセラレータモード、ラピッドアクセラレータモードを

使って高速化を図りますか???

Page 19: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

19

実はこのモデル、ソルバータイプを変更すると

劇的なスピードアップ&精度を両立できます

ソルバータイプを ode15s に変更してみましょう

>> tic, sim('sample_solver1'), toc

経過時間は 0.255232 秒です。

シミュレーションに要した時間

シミュレーション速度が大きく改善!

厳密解に近い応答! 0 0.2 0.4 0.6 0.8 1

0

0.5

1

1.5

2

2.5

厳密解

シミュレーション

ソルバータイプ設定

Page 20: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

20

このモデルは「Stiff (スティッフ)」なシステムです

(相対的に)変化の緩やかな系と

速い系が混在したシステムです

Stiff なシステムには

陰解法のソルバーを使いましょう

ソルバー

可変ステップ vs

固定ステップ

陽解法 vs

陰解法

離散 可変ステップ -

ode45 可変ステップ 陽解法

ode23 可変ステップ 陽解法

ode113 可変ステップ 陽解法

ode15s 可変ステップ 陰解法

ode23s 可変ステップ 陰解法

ode23t 可変ステップ 陰解法

ode23tb 可変ステップ 陰解法

離散 固定ステップ -

ode8 固定ステップ 陽解法

ode5 固定ステップ 陽解法

ode4 固定ステップ 陽解法

ode3 固定ステップ 陽解法

ode2 固定ステップ 陽解法

ode1 固定ステップ 陽解法

ode14x 固定ステップ 陰解法

変化の

緩やかな系

変化の

速い系

Page 21: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

21

R2012b Simulinkの最新ツールでは

ソルバー選択の指針も与えてくれます

再び「パフォーマンスアドバイザー」が登場です

精度・計算時間の観点から

パフォーマンス改善が見込める

ソルバーを推奨

Page 22: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

22

他の速度低下の要因を探してみましょう

Simulinkプロファイラーを

使用してみましょう

– ブロックメソッドやソルバー

メソッドの実行時間を計測

してくれます

ScopeやDisplayなど

表示系ブロックがボトル

ネックになっています

データロギング系の

処理も速度低下の

一因となります

Page 23: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

23

必要な箇所だけ可視化しましょう

R2012b Simulinkではブロックを「コメントアウト」できます

ブロック線図を編集することなく、

動作を無効にすることが可能!

簡易操作でボトルネックを最小化!

Page 24: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

24

必要な箇所だけ可視化しましょう

本質は同じですが、こんな方法もあります

Page 25: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

25

このケースから得られた教訓

時には、モデルの本質を洞察することも必要です。

– ソルバーの設定で計算時間・結果が大きく変わる場合があります。

結果が変わらなくなるまで精度を厳しくしてみましょう。

Stiff なシステムには陰解法のソルバーを使いましょう。

– 最終的には試行錯誤ですが、「パフォーマンスアドバイザー」が

ソルバー選択の大まかな指針を与えてくれます。

データ表示、データロギング系の処理は、必要最小限の使用が望ましいです。

– ただしタイムステップの総数が少なければ影響は少ないでしょう。

– Simulinkプロファイラーを使用するとボトルネックを調査できます。

Page 26: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

26

アジェンダ

まずはここから – 今すぐ簡単に試せる高速化手法

本質を探ろう! – 3つのケースから得られる教訓 (その②)

まだある高速化手法 – アドバンストトピックス・関連情報

まとめ

カテゴリ Tips トラブルシュート

想定レベル 初級 中級 上級

対象ソルバー 連続 離散

可変ステップ 固定ステップ

Page 27: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

27

ケース2: 次に、このようなモデルを考えてみます

複数の連続システムが

離散的なイベントで切り替わる

「ハイブリッドシステム」

– 1階の連立微分方程式で表さ

れる連続システムが3つ存在

– 3つのシステムを状態変数の

値に応じて切り替え

Page 28: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

28

このモデルで何が起こるのでしょうか?

シミュレーションを実行してみましょう

シミュレーションが固まってしまった?!

シミュレーションが先に進まない…

固まってしまった???

Page 29: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

29

「ゼロクロッシング」が頻発している可能性があります

なぜ、シミュレーションが進まないのでしょうか?

拡大

状態ゼロ近傍で遷移が

繰り返し発生

Page 30: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

30

本来、ゼロクロッシングは

とてもパワフルなメカニズムです

タイムステップ間のゼロ交差点、

不連続点を検出し、計算精度を

向上させるためのメカニズムです

ゼロクロッシングを検出すると

ソルバーが計算時間点を追加します

可変ステップソルバーで使用する

ことができます

ゼロクロッシング

ポイント

問題がないケースでは

とてもパワフルなメカニズム!

Page 31: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

31

「ゼロクロッシング」は

こんなシステムで頻発する傾向があります

連続状態、離散状態が混在した

システム

– 特に、離散的なイベントでシステム

の特性が頻繁に切り替わる場合

不連続性を有するシステム

チャタリング挙動を含むシステム

+

+

Page 32: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

32

ゼロクロッシングが頻発すると

シミュレーション速度が著しく

低下します

ゼロクロッシングが既定回数

以上「連続して」発生すると、

エラーでシミュレーションが

停止します (デフォルト設定では1000回)

「ゼロクロッシング」が持つ側面

朗報:対処法が2つあります!

Page 33: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

33

対処法1: ゼロクロッシング検出を無効にします

モデル全体を一括無効に

する方法と、ブロック単位で

無効にする方法があります

シミュレーションの進行を

妨げる要因を排除できます

正確な不連続点を検出でき

ないため、計算精度が犠牲

になることがあります

モデル全体への一括設定

ブロック単位での設定

Page 34: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

34

対処法2(R2008a以降対応): 適応ゼロクロッシングアルゴリズムを使います

シミュレーションが固まらなくなります

ステップサイズが設定値を下回るか、ゼロクロッシングの

連続発生回数が設定値を超えると、検出を「あきらめて」 次のタイムステップに移ります

ステップサイズ、連続発生回数の

設定で計算精度をコントロールできます

この対処法が

おすすめです

Page 35: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

35

このケースから得られた教訓

ゼロクロッシングは本来、計算精度向上のメカニズムです。

– シミュレーション速度を低下させることがありますが、問題にならな

い程度なら常に使用するようにしておくことが望ましいでしょう。

– しかし、ゼロクロッシングが「連続で」検出されると、上限回数を超え

たところでエラー停止します。

シミュレーション速度・結果に問題があれば、2つの対処法を試してみましょう。

– ゼロクロッシングの有効/無効設定

– 適応ゼロクロッシング設定

Page 36: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

36

アジェンダ

まずはここから – 今すぐ簡単に試せる高速化手法

本質を探ろう! – 3つのケースから得られる教訓 (その③)

まだある高速化手法 – アドバンストトピックス・関連情報

まとめ

カテゴリ Tips トラブルシュート

想定レベル 初級 中級 上級

対象ソルバー 連続 離散

可変ステップ 固定ステップ

Page 37: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

37

ケース3: こんな状況に遭遇したことはありませんか?

シミュレーションを実行すると警告メッセージが…

Page 38: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

38

代数ループを構成するモデルの典型例です

フィードバックされた出力が

同じタイミングで自身の入力に

戻っています

数学的には、代数ループの

入出力関係は代数方程式で

記述されます

常微分方程式のソルバーとは

別に、代数ループソルバーが

機能します

代数ループ

Page 39: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

39

代数ループの困りごとは…

計算コストが増大します

– 代数ループソルバーは数値

探索解法です

– 毎時間ステップで代数解の

探索が実行されます

– 解が得られなければエラーで

停止します

コード生成することができません

– 代数ループを含むモデルからは

コード生成を行うことができません

– (アクセラレータモードの使用は

可能です(R2011b以降))

代数ループのないモデルが理想です

Page 40: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

40

一見、分かりにくいですが、

こんな代数ループもあります

問題の無さそうなディジタルローパスフィルタですが…

「直接フィードスルーあり」の

ブロック出力が、同じタイミングで

入力に戻されていないか

チェックしましょう!

積分手法:後退型オイラー

Discrete-Time Integrator

ブロックのヘルプドキュメント

左記と等価なモデル

代数ループ

Page 41: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

41

代数ループの発生箇所は

このようにして確認できます

ソルバーの診断設定で、

「代数ループ」の診断レベルを

「エラー」に変更します

シミュレーションを実行すると

エラーとともに代数ループの

発生箇所が赤色でハイライト

表示されます

Page 42: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

42

2つの回避方法を紹介します

対処法1:モデリング前に数式を見直す

モデリング前に数式を見直して

代数ループが発生しない表現に

直します

これで回避ができれば、最も

本質的・効果的です

しかし、微分/差分方程式が

多数混在するシステムでは

大変な労力が必要でしょう

Page 43: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

43

2つの回避方法を紹介します

対処法2:微小な「遅れ」要素を追加

フィードバックループに微小な

「遅れ」要素を与えて近似します

– Transfer Fcnブロック

微小な時定数をもつ1次遅れの

伝達関数を挿入

– Unit Delayブロック

離散信号に対して1サンプル分の

遅延を挿入

– Memoryブロック

連続信号に対して1積分ステップ分

の遅延を挿入 (可変次数ソルバー(ode15s, ode113)

使用時にはお勧めできません)

Page 44: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

44

このケースから得られた教訓

代数ループを構成しないモデルが理想です。

– 代数ループソルバーの計算コストが高く、シミュレーション速度が著

しく低下する場合があります。

– 代数解が探索できない場合、エラーでシミュレーションが停止します。

– 代数ループを含むモデルからは、コード生成ができません。

モデルの本質を押さえ、代数ループの解消を図りましょう。

– モデリング前に代数ループの発生しない数式に直す

– フィードバックループに微小な遅れを与える

Page 45: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

45

アジェンダ

まずはここから – 今すぐ簡単に試せる高速化手法

本質を探ろう! – 3つのケースから得られる教訓

まだある高速化手法 – アドバンストトピックス・関連情報

まとめ

カテゴリ Tips トラブルシュート

想定レベル 初級 中級 上級

対象ソルバー 連続 離散

可変ステップ 固定ステップ

Page 46: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

46

複数回シミュレーションの

実行効率改善を図りましょう

シミュレーションを複数回

実行する際の高速化手法

を紹介します

どんなユース・ケースが

ありますか?

– モンテ・カルロシミュレーション

– パラメータ・スタディ

– 設計パラメータ最適化

– …

Page 47: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

47

並列処理を上手く活用しましょう!

Computer Cluster

Workers

Desktop System

Workers

Simulation 1

Simulation 2

matlabpool open parfor idx = 1:iterations load_system(mdl); set_param([mdl '/Road-Suspension Interaction'],... 'MaskValues',{'Kf',num2str(Cf_sweep(idx)),'Kr','Cr'}); simout(idx) = sim(mdl,'SimulationMode','normal'); end matlabpool close

Parallel

Computing

Toolbox™

MATLAB®

Distributed

Computing Server™

並列計算プロセスの初期化

並列 for-ループ

シミュレーション実行

Page 48: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

48

計算プロセス (Worker)の数を増やせば

確実に高速化できます!

Worker の数が多いほど

高速化の効果が高くなります

– Parallel Computing Toolbox

のみでも12 workers まで使用可能

(R2011b以降)

シミュレーション回数が多いほど

オーバーヘッド時間の影響が

少なくなり、高速化の効果が

高くなります

0 5 100

2

4

6

8

10

12

Number of Workers Used

Sp

ee

d u

p (

se

ria

l tim

e/p

ara

llel t

ime

)

100 iterations

500 iterations

5000 iterations

0 5 1010

-1

100

101

102

103

Number of Workers Used

Tim

e (

min

ute

s)

Page 49: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

49

並列処理を上手く活用しましょう!(番外編) モデルのビルドプロセスの高速化も実現できます

モデルリファレンス使用時に効果があります(R2009a以降)

ビルドプロセスを高速化

することができます

– アクセラレータ

– ラピッドアクセラレータ

– Stateflowチャート初期化

– MATLAB Functionブロック初期化

– 自動コード生成 etc.

各レベルの参照モデルを

並列処理でビルド

Page 50: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

50

関連情報の紹介: カバーしきれなかった内容がたくさんあります

モデルの更なる快適実行にお役立てください

– オンデマンドWebセミナー

「Simulinkモデルの高速化: 複数シミュレーションの並列実行」

「Speeding Up Simulink Applications(英語)」

– 技術資料

「Simulinkシミュレーション精度の改良例」

「Improving Simulation Performance in Simulink(英語)」

– Simulinkヘルプドキュメント

「シミュレーション – シミュレーションの構成」

「シミュレーション – システム動作の検証」

「シミュレーション – テストとデバッグ」

「パフォーマンス – モデルの最適化」

「パフォーマンス – 速度の向上」

Page 51: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

51

アジェンダ

まずはここから – 今すぐ簡単に試せる高速化手法

本質を探ろう! – 3つのケースから得られる教訓

まだある高速化手法 – アドバンストトピックス・関連情報

まとめ

Page 52: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

52

まとめ

Simulinkにはシミュレーション高速化を図るための様々な手段が用意されています。

– ワンクリックで簡単に高速化できるものから、モデルの本質を捉える

必要があるものまで様々なレベルがあります。

– 新機能や並列計算オプションなどもフル活用し、精度・速度のトレー

ドオフをうまく最適化しましょう。

紹介したコツ・ノウハウが、品質改善・コスト低減・生産性

向上のブレークスルーの一助となれば幸いです。

お悩みの点があれば弊社まで

お気軽にお問い合わせください!

Page 53: Simulink モデルの高速化手法...5 キーメッセージ 様々な課題に対して、様々な高速化手法があります。 時にはモデルの本質を洞察することも必要でしょう。

53

ご清聴ありがとうございました MathWorks 宅島 章夫

[email protected]

© 2012 The MathWorks, Inc. MATLAB and Simulink are registered

trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks

for a list of additional trademarks. Other product or brand names may be

trademarks or registered trademarks of their respective holders.