Simulink®モデル演算時間短縮のヒント<Optimize（最適化）>
SIMulation Workbench™上でのSimHydraulics®モデル実行時間測定
E-Mail:info@ccur.co.jp

Web:

http://www.ccur.co.jp/Wiki:

http://wiki.simwb.com/wiki/Main_Page

コンカレント日本株式会社
東京都台東区柳橋 2-19-6 柳橋ファーストビル 4F
TEL 03-3864-5713 URL http://www.ccur.co.jp

Title

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >No

RevisionPage1はじめに：
コンカレント日本株式会社では、米国
Concurrent Computer Corporation 社の提 供するリアルタイム・ソリューションを販 売 して居 ります。弊 社 では、ハードリアルタイム OS である
RedHawk™ Real-Time Linux とリアルタイムシミュレーション・プラットフォームである SIMulation
Workbench™を、ドライビングシミュレータや HILシステム・プラットフォームとしてご提 供 しております。このレポートは、４０年余 りに亘りリアルタイム OS およびリアルタイム・ソリューションをご提供 してまいりましたコンカレントが、OS、プログラミングおよびコンピュータ・プラットフォームの専門家の立場から、MathWorks 社の Simulink®で製作 されたプラントモデルの高速化の手法に関してご提案するものです。
Simulink®モデルを、対象 となる OS（ここでは、RedHawk Linux）上でリアルタイムシミュレーションを行 う場 合 、様 々なコンピュータ・プラットフォームがあります 。弊 社 の RedHawk Real-TimeLinux OS は、ｘ86 およびｘ86-64 アーキテクチャの CPU 上で動作する Linux です。主に Intel©
社の提供する CPU を対 象としており、近年ではNehalem 、 Westmere 、 Sandy-bridge そ し て
Ivy-bridge とその内部のマイクロアーキテクチャの目 覚 ましい進 歩 が続 いています。CPU の性

能 は一 概 にその動 作 クロックのみによって決 まるものではなく、マイクロアーキテクチャの違 いにより大きく演 算 速 度に差 が生 じる場 合もあります 。 ま た 、 最 近 の CPU で は マ ル チ コ ア（ Multi-Core ） や メ ニ ー コ ア （ Many-Core ） 、Nehalem アーキテクチャ以降マルチ CPU 構 成がトレンドとなってきています。
MathWorks® 社 の SimHydraulics® はSimscape™拡 張 ツールとして油 圧 および制 御 シ
ステムのモデリングやシミュレーション機 能 をSimulink® に 追 加 す る こと が で きま す 。そ して、
SimHydraulics® を 使 用 し た モ デ ル も 同 社 のReal-Time Workshop™ （ Simulink® バ ー ジ ョ ン
R2011b 以 降では、Simulink® Coder™）でコード生 成 し 、 そ の 実 モ デ ル を SIMulation
Workbench™上 でリアルタイムに実 行 することが可能です。一般的には SimHydraulics®モデル
は演 算 処 理 に時 間 がかかるため、リアルタイム
処 理 には不 向 きとされてきましたが、今 回 はSIMulation Workbench ™ Version4.1 上 で1msec のシミュレーションループに設定されたサ
イクル毎 に SimHydraulics® のサンプルモデルの演 算 に掛 かる時 間 を計 測 した結 果 を報 告 します。

測定環境：
コンピュータCPU
RCIM
MemoryOS (Kernel)
SIMulation Workbench™
使用モデル:Concurrent iHawk™ HQT55 シリーズ(DELL Precision T5500 相当): Intel® Xeon® CPU X5667 @ 3.07GHz(2 quad core): Concurrent RCIM-III Real-Time Clock & Interrupt Module (PCIe): 6GB: RedHawk5.2.5 (2.6.26.8-RedHawk-5.2.5-trace, 32bit): Version 4.1-5(32bit): sh_hydraulic_closed_loop_actuator_fixed_step.mdl※今 回 使 用 した Simulink®モデルは、MATLAB®/Simulink®の開 発 パッケージにサンプルプログ
ラムとして付属 されているモデルを使用 しました。

Title

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >No

Revision
Page2

Hydraulic Closed-Loop Actuator with Fixed-Step Integration
Motion Sensor
Position Rodf(x)=0Force
Sensor1

Pipe_ATF

A

B

Double-Acting
Hydraulic Cylinder[Er_1]

BACSPRIFSMPipe_B

SWPosition1

RC

B

Actuator

SWForce

B

S

A

Force

F

A

R

R

RCC

SolverConfiguration1

0.35
0.01s+1
Transfer Fcn

BTP

SWError[Er_2]From1

S PS

ReturnSPS_1

Power Outlet

Proportional
Valve Actuator
Motion Sensor1

Subtract SWDifferencePower Unit

Position Rod

Signal 1

f(x)=0Force

Pipe_A1

Actuator1

SWForce1

B

Force
Sensor2

R

M1

TF1

C

B

Double-Acting
Hydraulic Cylinder(Simple)

F

S

A

A

C

SPR1
IFS1

RR

R

C

C

B

SolverConfiguration

A

Control Unit

S4-Way Directional
Valve

GotoA

From
[Er_1]

Pipe_B1BA

SWPosition2

A

Hydraulic Fluid

Transfer Fcn1

P

4-Way Ideal ValveS
0.35
0.01s+1

B[Er_2]
Goto1

S PS
SPS_2

Proportional
Valve Actuator1?

PS Constant

Double-click here for details【備考】
コンカレント社の SIMulation Workbench™では、複 数 の Simulink®モデルが別 々のプログラ
ム（スレッド）として、またアナログ/デジタル信 号の入出力および CAN/FlexRay/EtherCAT 等の 通 信 バ スへ の 入 出 力 も 各 々 別 の プログ ラム（スレッド）として独立して動作します。
SIMulation Workbench™ は 、 独 自 の RTDB
（Real-Time Data Base）変数テーブルを共 有メ
モリ上に構 築し、各 信 号 やバスの入 出 力 および複 数 のプラント/制 御 モデル間 で自 由 にこの変数 テーブルを使 用 することでデータの受 け渡 しを行っています
Simulink®モデル上の Input および Output（または Source/Sink）を SIMulation Workbench™の管理する RTDB 変数テーブル上の変数として登 録 す る 必 要 が あ りま す 。 Simulink® モ デ ル
上の I/O 名を RTDB へ登録は、モデルで使用
さ れ る 全 て の Input お よ び Output （ ま た はTitle

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >Source/Sink ） を自 動 的 に 登 録 す る 方 法 と 、 今回の測定で使用 した、モデル上の Scope 名称に SIMulation Workbench™の RTDB 変数として認 識 させるための ”SW”プリフィックスを追 加 す
る方 法の二 通 りあります。SW プリフィックスを追加した Scope は以 下の通 りです。
Position1、Position2、Force、Force1、Error、Difference

な お 、 Simulink® モ デ ル を Real-TimeWorkshop™および Simulink® Coder™を使用 してコード生 成する際に、生 成されるファイル名が長 すぎると SIMulation Workbench™の環 境 上でエラーが発 生 します。このエラーを回 避 する
為 、本 来 のサンプルモデルのファイル名 で有 る”
sh_hydraulic_closed_loop_actuator_fixed_step.
mdl” を 、 ”sh_hydraulic_pk.mdl” に 変 更 し てあ ります。

NoRevisionPage3

Standard Forms
測定結果：Simulink®モデルを SIMulation Workbench™
4.1 環 境 でリアルタイム実 行 した結 果 を以 下 に示 します。シミュレーションループサイクルは1msec 、 シ ミ ュ レ ー シ ョ ン 全 体 の 実 行 時 間 は10sec です。

モデル名：sh_hydraulic_closed_loop_actuator_fixed_step.mdl(sh_hydraulic_pk.mdl)
最 適 化 オプション
Avg. runtime(μ sec)
Max runtime(μ sec)
-O
555.0914594.54-O2
530.1713766.33-O3430.51
12247.98

SIMulation Workbench™4.1 には、ループサ
イク ルの フレーム 毎 の モデ ル実 行 時 間 を記 録する機 能 があります。次 に示 すグラフは、図 -1が最 適 化オプション-O の時、図 -2 が最 適 化 オプション-O2 の場合の結果で、それぞれ 10secの実 行 時 間 中 の、モデルの計 算 時 間 を表 しています。

黄色：Position1(モデル入力値に相当 )赤色：Force(出力制御値 相当)
緑色：runtime(モデル計算時間)
本 モ デ ルの シミ ュ レー ショ ン で は、 Position1の入 力 値 の変 化 に応 じて、Force の結 果 も変動し、同時に runtime のモデル計算時 間も大きく変動する様子が表れています。
最 適 化 オプション-O の場 合 、シミュレーション開始直 後に 14.6msec の演算時間がかかり、その後 Position1 の入 力 が変化するたびに 1msを超える演算 時間がかかっています。

最 適 化オプション-O2 を付加した場 合は、モデル演算時 間は開 始直 後の 13.8msec の演算時間以 外は、すべて 1msec 以内の演算時間に収 まっている様 子が観 測されます。シミュレーション開 始 直 後 に大 きく演 算 時 間 がかかっているのは、ソルバーモデルの初期 化に時間 を要 している為です。

【備考】
Simulink®モデルをコンパイルする際
は 、コ ン カレ ン ト の 提 供 す る 『 Simulink®
Tools』をお手 持 ちの Simulink®環 境 へイン ス ト ー ル し 、 Simulink® の メ ニ ュ ー バー へ 追 加 さ れ た 『 SIMulation
Workbench™ Target』メニューから呼ばれる『SIMulation Workbench™
Target Configuration Tool』画 面上の『Generate, Export, and MAKE』
ボタンをクリックします。
最適化は、『Additional Compiler
Option』入力欄へ Optimize オプシ
ョン（-o、-o2、-o3）を記 述 するだけで、複雑 な手順 は必要 ありません。

Title

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >NoRevision
Page4

Standard Forms
図 －1 最 適 化オプション –O の場 合のフレームサイクル毎のモデル演 算時間
Avg.runtime:
555.09μ sec
Max.runtime:
14594.54μ sec

Position1 入 力Force 出 力runtime※

図 -1、２は、SIMulation Workbench Version 4.0 から導 入 された『Data Logger （DL） Viewer』を使 用 して描 画 したグラフからの抜 粋 です。SIMulation Workbench™では、
RTDB 上 へ変 数 登 録 された Simulink®モデルの Input および Output（または Source/Sink）を、シミュレーション周 期 毎 にハードディスクへロギングすることが出 来 ます 。
DL Viewer は格 納 したログデータを、図 の様 に同 一 時 間 上 で重 ねて表 示 することが出 来 ます。

Title

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >NoRevisionPage5

Standard Forms
図 －２ 最 適化オプション –O2 の場合のフレームサイクル毎のモデル演 算時 間
Avg.runtime:
530.17μ sec
Max.runtime:
13766.33μ sec

Position1 入 力Force 出 力runtime※

DL Viewer は、縦 軸 /横 軸 のスケール値 を自 由 に設 定 することが可 能 です。図 -２は比 較 の為 、図 -１と同 じスケールで『runtime』（演 算 時 間 ）を描 画 しています。

Title

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >NoRevision
Page6

Standard Forms
最 適 化オプション-O2 を付加した場 合のモデル演 算時間データに関 して、ソルバーモデルの初 期 化 の影 響 を排 する為 に開 始 後 ３サイクル以 降のデータを Excel にてグラフ化 し演算 時間 軸を拡 大したものを、時 間軸をそろえて表したものが下の図です。

Position1 入 力Force 出 力runtime

※1

※2

Title

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >NoRevision
Page

7

Standard Forms
ソルバーモデルの初 期 化 の影 響 を排 したモ
デル演算時 間データでは、図の様に Position1の 入 力 値 が 変 化 し な い 場 合 は 420 μ sec 、Position1 の入 力 値 が変 化 する場 合 はその変化量に関わらず 450μsec 近辺の安定 した演算時間を示しています。
しかし、開 始 から約 7.37sec である図 の※1
印 の部 分 では 430μsec 程 度 となっており、単調減少 中の Position1 の入力値には変 化は見られません。また、図の※1 印の後に続く図の※Avg.runtime
Max.runtime
Min.runtime

なお、ソルバーモデルの初 期 化 の影 響 を排したモデル演 算 時 間 データの平 均 値 および最大・最小 値は以 下の通りです。

:435.42μ sec（標準 偏 差 11.24 μ sec）
:467.81μ sec:404.22μ sec【結果考 察】以 上 の結 果 から最 適 化 オプションの有 無 による出 力 値 の差 が見 られない本 モデルの場 合 、最 適 化 はモ デ ル 演 算 時 間 を 短 縮 す る 為 の 強
力 な手 段 になり得 るものと考 えられます。さらに、入 力 条 件 によるモデル演算 時 間 の分 散が改 善されることから、最 適 化 は単 にモデル演 算 時 間の短縮だけにとどまらず上記の図の※1 印および※2 印 の観 測 に見 られるように、モデルの挙動 に関 し解 析 を実 施 する為 のツールとしてSIMulation Workbench ™を使 用 する可 能 性 に

Title

2 印の部分では 405μsec 程度とこの部 分も他
では見ることの出来 ない演 算時 間が観 測されます。この※1 印および※2 印の両区間内では、他 で観 測 される±15μsec 程 度 の演 算 時 間 のバラつきが観測されていないことが判ります。

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >関しても示 唆しています。
今回使 用した CPU は、現在市場で入 手できる Intel© Xeon CPU ではミドルクラスであり、さらに高 速 な構 成 のコンピュータも手 ごろな価 格 で入手 することが可能 です。比較 的 高 速なアーキ
テクチャの CPU を搭載したコンピュータを使用することにより、Simulink®モデルや RTW の創出した C コードに対してユーザが改良を加える
こと無 く、更 に数 十 パーセントかそれ以 上 速 度を向上 させることも可能で有ると考えられます。

No

Revision
Page

8Standard Forms
参考：
モデルのコンパイル時 に最 適 化 オプションを付 加 する以 外 にも、最 適 化 (高 速 化 )の方 法 は幾 つかあります。その方 法 を以 下 に紹 介 しましょう。

① Solver ブロックパラメータ変更：
今回のモデルには Solver ブロックが含まれており、このブロックパラメータを変 更 することで最適化をはかることができます。
以 下 は①の方 法 による最 適 化 の例 と結 果 を示しています（表 中には下 側 3 行がその結果で、上側 3 行は比較のために先の結果をそのまま掲載しています)。
モデル中の Solver ブロックパラメータの次の項目を変更します。

Use fixed-cost runtime consistency iterations: チェックNonlinear iterations:3

モデル名：sh_hydraulic_closed_loop_actuator_fixed_step.mdl(sh_hydraulic_pk.mdl)
最 適 化 オプション
Avg. runtime(μ sec)
Max runtime(μ sec)
-O555.09
14594.54-O2530.17
13766.33-O3430.51
12247.98-O ＋Nonlineaitarations=3440.52
13664.54-O2 ＋Nonlineaitarations=3416.13
12875.36-O3 ＋Nonlineaitarations=3338.7211398.13

Title

Simulink®モデル演 算 時 間 短 縮 のヒント
<Optimize（ 最 適 化 ） >No

RevisionPage

9Standard Forms② モデルの分散化(並 列化)：
今 回 のモデルは上 側 と下 側 で分 割 して別 のモデルとして計 算 することも可 能 です。２つのモデルに分 割 した上 で、それぞれのモデルタスクを SIMulation Workbench™/RedHawk が動作するコンピュータ上 の任意 の CPU に割 当 てて実行すれば演 算時 間 (負 荷)は分 散され、より短い時間での計算が可能 となります。

③ OS/SIMulation Workbench™の 64bit 化：
コンカレントの提 供 する RedHawk Linux とSIMulation Workbench ™ はと も に 32bit/64bit
何 れの環 境 でも動 作 します。弊 社 のこれまでの経験上 、32bit 環境で動 作した Simulink®モデ

ルを 64bit 環境で再コンパイルして実行するだ
けで 20%～50%程 度 の演 算 時 間 の短 縮 が確 認されています。

④ CPU の高速化：
SIMulation Workbench™と RedHawk Linuxは Intel©/AMD©系 アーキテクチャの CPU 上で動 作 します。より高 速 な計 算 を必 要 とする場 合は、より最 新 の アーキ テクチャを使 用 した 最 速の CPU を選択することで、ソルバのモデルを高速に計算する事が可能 となります。

⑤ Linux コンパイラ：
Linux 標 準搭 載コンパイラ gcc と Intel©コンパイラ(icc)が使用 可能であり、一 般的に icc を使用 してコンパイルを実 行 した場 合 が高 速 となるプログラムが多 いことが報 告 されています。プロ

TitleSimulink®モデル演 算 時 間 短 縮 のヒント<Optimize（ 最 適 化 ） >グラム中 で使 用する命 令 セット等の条 件に依存する為 に一 概 には規 定 できませんが、インターネット上の情報等によると 20～40％の高速化が実現できるものもあります。

NoRevision
Page10