〒225-0002 神奈川県横浜市青葉区美しが丘 2-21-10
inquiry@nextream.bz

emmtrix

emmtrixツールの概要

More Speed

  • アプリケーションの応答時間と処理スループットを向上
  • 開発の初期段階でのパフォーマンス予測
  • 強力なハードウェアを使用してアプリケーションを高速化

More Quality

  • 正しい設計によるアプローチ
  • シーケンシャル・コードと並列コードの統合機能テスト
  • セーフティ・クリティカルなアプリケーションの開発(例:ISO 26262およびD0178C)

More Done

  • 自動化して制御を維持
  • マルチコア・ターゲット向けモデルベース・ソフトウェア開発
  • シンプルなワークフローへの統合

サポートされているプラットフォーム

上記に示したプラットフォームはほんの一例です。当社は組み込みシステム向けにさらに多くのプラットフォームをサポートしています。お客様の特定のプラットフォームへの対応は当社までご連絡ください

解析ツール

emmtrix Performance Estimator (ePE)

アプリケーションのパフォーマンスを向上させるツール

emmtrix Performance Estimator (ePE)はCコードの静的タイミング解析を実行します。ハードウェアでのシミュレーション測定と比較すると、静的パフォーマンス解析は開発プロセスのかなり早い段階で適用でき、一般的なオートモーティブHILSと比較して平均6か月早く結果を得ることができます。解析には最大でも数分しかかからず、対象ハードウェアとは関係なく開発者のPC上で実行されます。機能モデルの開発者は、完全に統合されたプログラムを必要とせずに、ランナブルまたはSWC(Software Configuration)を解析できます。

特長的な機能としては、TargetLinkまたはEmbedded Coderで生成されたコードを解析出来る点です。測定オーバーヘッドなしで、静的パフォーマンス推定により、断片的な最小のコードでも解析できます。また、タイミング解析結果をSimulinkブロックにマッピングできるため、機能モデルの開発者はモデルのタイミング動作を詳細に把握できます。

見積り方法

一般に、タスクまたはブロックの実行時間は次のようにモデリングできます。

Cコード・ベースの静的コード解析では、定数の畳み込みを使用してループ境界を解析することで実行頻度を導き出します。実行中はコード内の各命令が、プロセッサの抽象化されたハードウェア・モデルのサイクル数として計算され合計されます。

ePEは、(1)Cコードの解析、(2)汎用コンパイラで最適化されたコードの解析、(3)ターゲット・コンパイラのアセンブリ・コードの解析という3つの精度を提供します。(1)では最小限の労力で結果が得られますが、(3)ではプロセッサ・パイプラインのタイミングが考慮されます。すべての方法は、CI環境で使用する場合など、ソフトウェアを変更した際に実行時間がどのように変化するか、その傾向を追跡する際に優れた信頼性を提供します。

特長

  • より詳細な解析情報のための、レポートの自動生成と可視化
  • 結果分類の信頼度レベル
  • 開発ワークフローに簡単に統合可能
  • さまざまなターゲット・プラットフォームに対する迅速な評価
  • Cコードまたはアセンブリ・コードを用いた静的パフォーマンス推定
  • シミュレータやハードウェア・プロファイリングをワークフローに統合

メリット

  • 開発プロセスの早い段階でのパフォーマンスの見積もり
  • 開発中のパフォーマンスの変化を継続的にモニタリング
  • 異なるターゲット・プラットフォームにおけるパフォーマンスの比較
  • アプリケーションのタイミング動作をよりよく理解するための詳細な情報
  • ソフトウェア・アプリケーションの処理が重たい部分や重要な部分を検出
  • コア使用率を推定し、ランナブル/タスクとコアのマッピングを最適化

並列化可能箇所などの解析結果を直感的に表示

パフォーマンス推定の結果は、インタラクティブでズーム可能な階層型プログラム・ビューを使用して視覚化できます。X軸は時間を表すため、各ブロックの幅は処理時間によって異なります。Y軸には、プログラムの制御構造が表示されます。関数呼び出し、ループ、条件などの構造には、さらにレベルが追加されます。

静的パフォーマンス推定ソリューションを強化するために、emmtrixツールは、アセンブラ・コードを解析することで適用されたコンパイラの最適化を考慮した推定を行います。プロセッサ・パイプラインのモデルと組み合わせることで、選択したハードウェア上のプログラムの処理時間を非常に高い精度で予測できます。Cとアセンブラ・コード間の高度なマッピングはGUIから直接アクセスでき、詳細を調べるために使用できます。

サポートされているプラットフォーム

emmtrix Performance Estimator (ePE)は、汎用プロセッサ(ARM Cortex-AシリーズやX8など)から特殊用途のマイクロ・コントローラ(Infineon Aurixファミリなど)まで、幅広いターゲット・プラットフォームをサポートしています。パフォーマンス推定は簡単に調整およびカスタマイズできるため、新しいプロセッサ・アーキテクチャの基本的なモデルはすぐに提供可能です。パイプラインを含む複雑で正確なハードウェア・モデルは、ご要望に応じてサポート可能です。

サポート

Simulinkサポート

組み込みプラットフォームにおける、実行時間の影響に関する情報の取得

Simulinkを使用する機能モデルの開発者は、設計上の決定がターゲットとなる組み込みプラットフォームでのアプリケーションの実行時間に、どのような影響を与えるか分からないことがよくあります。使用するデータ型や機能の実装方法に関する決定は、実際のターゲット・プラットフォームによって大きな違いを生む可能性があります。一般的なワークフローでは、機能モデルはTargetLinkEmbedded Coderなどのツールを使用してCコードに変換されます。これらのツールは、実際のターゲット・プラットフォーム向けにいくつかの最適化をすでに実行しています。emmtrix Performance Estimatorを使用すると、この生成されたコードに対して、選択したターゲット上で予想されるタイミング動作を自動的に解析できます。Cコードからのパフォーマンス推定結果は、Simulinkブロックとその階層にマッピングされます。各モジュールとサブシステムの結果には、それ自体の1回の実行時間が含まれます。可能な場合は、ブロックやループなどの制御構造と、それらがブロックの実行回数に与える影響に基づいて、平均、最小、最大の実行時間が提供されます。

この新機能により、モデルにアルゴリズムを実装する機能モデルの開発者は、処理を変更したりオプションを設定したりするときに、選択した組み込みプラットフォーム上での実行時間の影響に関する情報を取得できるようになります。結果は、並べ替え、フィルタリング、推定の信頼性に関する色付きインジケータなどの機能を備えたHTMLレポートに表示されます。

特長

  • より詳細な情報のためのレポートの自動生成と視覚化
  • 結果分類の信頼度レベル
  • 開発ワークフローに簡単に統合可能
  • コードを実行する必要のない静的パフォーマンス推定
  • さまざまなターゲット・プラットフォームの迅速な評価
  • TargetLinkによって生成されたCコードを用いた静的パフォーマンス推定、他のコード・ジェネレータも使用可能
  • アセンブリ・コードを用いた静的パフォーマンス推定

メリット

  • 開発初期段階でモデルベース設計によるパフォーマンスの推定
  • 開発時にパフォーマンスの変化を継続的にモニタリング
  • アプリケーションのタイミング動作をよりよく理解するための詳細情報
  • モデルの処理が重たい部分や重要な部分を検出
  • コードがハードウェア・テストに対応していることを確認

Simulink レポートの例

サポートされているプラットフォーム

汎用プロセッサ(ARM Cortex-AシリーズやX86など)から特殊用途マイクロ・コントローラ(Infineon Aurixファミリなど)まで、幅広いターゲット・プラットフォームがすでにサポートされています。パフォーマンス推定は簡単に調整およびカスタマイズできるため、新しいプロセッサ・アーキテクチャの基本的なモデルはすぐに提供可能です。パイプラインを含む複雑で正確なハードウェア・モデルは、ご要望に応じてサポート可能です。

TargetLinkサポート

Simulinkモデルのパフォーマンスを把握

emmtrix Performance Estimator (ePE)のTargetLink拡張機能は、TargetLinkによって生成されたCコードを解析しパフォーマンス値を元のSimulinkブロックに戻します。これにより、Simulinkモデルを扱う機能開発者は、組み込みデバイスに対する設計上の決定が、パフォーマンスに与える影響をより深く理解できます。結果は、生成されたHTMLレポートに直接アクセスすることも、ePE GUIで表示することもできるため、アプリケーションのボトルネックやホット・スポットを迅速に特定できます。

TargetLinkを使用したemmtrix Performance Estimatorワークフロー

特長

  • TargetLinkで生成されたCコードの解析
  • 最小および最大実行時間
  • サブシステムのブロックが呼び出される回数
  • インタラクティブなHTML結果レポート
    • フィルタリング
    • 探索
    • ソート

メリット

  • CIフロー統合による実行時間の継続的なモニタリング
  • ソースコードに手を加えることなく、サブシステムとモジュールの実行時間を算出
  • 実ハードウェアなしでさまざまなアーキテクチャを探索

パフォーマンスのHTMLレポートの例

サポートされているプラットフォーム

汎用プロセッサ(ARM Cortex-AシリーズやX86など)から特殊用途マイクロ・コントローラ(Infineon Aurixファミリなど)まで、幅広いターゲット・プラットフォームがすでにサポートされています。

パフォーマンス推定は簡単に調整およびカスタマイズできるため、新しいプロセッサ・アーキテクチャの基本的なモデルはすぐに提供可能です。パイプラインを含む複雑で正確なハードウェア・モデルは、ご要望に応じてサポート可能です。

emmtrix Dependency Analyzer (eDA)

アプリケーションのデータ依存関係を解析するツール

emmtrix Dependency Analyzer (eDA)はアプリケーションの安全性解析を支援します。ソースコードのデータ依存性解析の結果は、次の目的で使用できます。

  • 干渉がないことを確認
  • 変数の異なる安全レベルの伝搬
  • 混在するクリティカルな依存関係(異なる安全レベルの変数)を検出
  • システムの入出力信号間のイベント・チェーンを検証

さらなる使用例としては、ソースコードの変更によって影響を受けるサブシステムを特定することができます。さらに重要な点として、どのサブシステムが影響を受けないか、すなわち再度テストする必要がないサブシステムを特定することで、テスト戦略を最適化することもできます。このツールは、自動化、バージョン管理、ログ記録を提供するCIフローに簡単に統合できます。

AUTOSARソフトウェア・コンポーネントの依存関係解析

当社は自動車業界のお客様と協力して、emmtrix Dependency Analyzer (eDA)を使用してソフトウェア・コンポーネント(SWC)のAUTOSAR RポートとPポート間の内部データ依存関係を抽出し、それらの内部動作を解析することで視覚化できる機能を実装しました。

自動車業界の一般的な開発フローは、AUTOSARを使用してさまざまなソフトウェア・コンポーネントと実行可能エンティティを指定することです。SimulinkとStateflowを使用して実際の機能を実装し、次にTargetLinkを使用してターゲット・プラットフォーム向けのCコードを生成します。アプリケーション内のすべてのデータ交換は通常、AUTOSARランナブルを使用してモデリングされ、ランタイム環境のソースコードはすべてのコンポーネントが統合された時点で生成されます。

eDAを使用すると、生成されたCコードのデータ依存関係を自動的に解析できます。AUTOSARモデルは、解析可能なコードを生成するためのベースとして使用され、ソースコードの解析結果は、AUTOSARモデルで定義されているデータ・プロトタイプ、変数、およびSWCポートにマッピングされます。このアプローチにより、生成されたCコードにおいて、すべてのデータ依存関係がモデルに従っており、モデルの入出力ポート間に望ましくない依存関係が存在しないことを検証できます。

結果は、XMLやJSONなどのフォーマットでエクスポートしたり、以下の画像のようにインタラクティブなグラフィック表現として視覚化したりできます。

サブシステム全体の信号トレースを表示

ユースケース

排出ガス規制遵守の強化

2015年の排出ガス不正事件を受けて、世界の規制機関は、自動車の排出ガス規制の遵守と車載診断(OBD: On-Board Diagnostics)システムの完全性に関する要件を大幅に強化しました。米国の環境保護庁(EPA: Environmental Protection Agency)カリフォルニア大気資源局(CARB: California Air Resources Board)、および欧州連合の同等の機関などの主要な当局は、ヨーロッパ規格(Euro Norm)などの枠組みの下で、これらの強化された規制施行の最前線に立っています。自動車メーカは、自社の車両、特にOBDソフトウェアが不正操作されておらず、現行の排出ガス基準に準拠していることを厳密に実証することが義務付けられています。この厳格な実証には、OBDシステムの動作を詳述した包括的な文書の提出が含まれます。このような文書には、排出ガスを監視するために導入されたアルゴリズムの詳細な説明が含まれていなければならず、透明性と説明責任が保証されている必要があります。このステップは、自動車の規制遵守に対する信頼を回復し、路上を走行する車両が排出ガスを最小限に抑えることを保証する上で極めて重要であり、環境への悪影響を軽減するための排出ガス中立デフォルト・アクション・(ENDA: Emission Neutral Default Action)などの取り組みと一致しています。

課題: 自動車メーカは、自社のOBDソフトウェアが厳しい排出規制に完全に準拠していることを保証するという課題に直面しています。これには、法的要件を遵守するだけでなく、ソフトウェアがどのように排出ガスを管理し、排出に影響を与える可能性がある制御方法について透明性と追跡可能性を維持することが必要です。規制の監視が強化される中、メーカはさまざまな条件下でのOBDシステムの動作を解析し、文書化する信頼性の高い手法を必要としています。

ソリューション: emmtrix Dependency Analyzerは、排出ガス規制の複雑さに対処しようとしている自動車メーカに画期的なソリューションを提供します。この静的コード解析ツールは、OBDソフトウェアのソースコードを詳しく調べ、特定の入力変数が排出ガス出力にどのように影響するかをマッピングします。emmtrix Dependency Analyzerは、さまざまなコンポーネントと変数間の複雑な関係を識別することで、ソフトウェアの動作ロジックに関する比類のない洞察結果を提供します。

干渉解析からの解放

安全性が重要な自動車向けソフトウェアの開発では、さまざまなレベルの安全要件にわたってシステムの完全性と信頼性を確保することが最も重要です。emmtrix Dependency Analyzerは、異なる機能安全のレベル(ASIL: Automotive Safety Integrity Levels)で動作するコンポーネント間の「干渉の防止」を確保するという課題に対処するための高度なソリューションを提供します。この使用例では、emmtrix Dependency Analyzerを適用して潜在的な干渉リスクを特定および管理し、ISO 26262規格への準拠をサポートする方法について説明します。

課題: 最新の自動車システムでは、異なる安全要件を持つソフトウェア・コンポーネントが、CPU、メモリ、I/Oシステムなどのリソースを共有することがよくあります。この共有環境では、重要度の低いコンポーネントが重要度の高いコンポーネントの機能に干渉し、安全上の危険につながるリスクが高まります。干渉がないことを確認することは規制上の要件であり、ISO 26262に基づく機能安全認証を取得するために不可欠です。ただし、潜在的な干渉パスを手作業で特定し、異なるASILレベルのコンポーネントを分離するには、時間がかかるだけでなく、人為的なミスが発生しやすくなります。

ソリューション: emmtrix Dependency Analyzerは、さまざまなASILレベルにまたがるソフトウェア変数間の依存関係を特定して解析するプロセスを自動化します。このツールは、包括的な静的コード解析を実行することで、各変数が他の変数に与える影響をマッピングし、重要度の異なるコンポーネント間の潜在的な干渉リスクを強調する詳細な依存関係グラフを作成します。

イベント・チェーン解析

今日の複雑なソフトウェア環境では、システムのさまざまな部分間の依存関係と相互作用を理解することが重要です。emmtrix Dependency Analyzerは、個々の実行可能ファイル内の変数が時間の経過とともにお互いどのように影響しあうかについて深い洞察を提供することで、この課題に対処するように設計されています。このユースケースでは、emmtrix Dependency Analyzerをイベント・チェーン解析に適用する方法を探ります。これは、ソフトウェア開発プロジェクトのリスクを特定して管理するために不可欠な方法です。

課題: 大規模なソフトウェア・プロジェクト、特にリアルタイム・システムを含むプロジェクトでは、タスク間のタイミング、順序、依存関係に関する問題に遭遇することがよくあります。開発者やプロジェクト・マネージャは、システムの一部の変更が他の部分にどのように影響し、予期しない遅延、バグ、システム障害につながる可能性がないかを追跡するのに苦労することがよくあります。これらの依存関係を詳細に理解していなければ、リスクを軽減し、システムの信頼性を確保することは非常に困難になります。

ソリューション: emmtrix Dependency Analyzerは、ユーザがソフトウェア内の依存関係の詳細な解析を可能にする強力なソリューションを提供します。個々の実行可能変数に焦点を当てることで、入力変数の変更が出力変数にどのように影響するかを特定できます。これには、変数の変更が次のタイム・ステップでシステムにいつ影響を与えるかを示す遅延要素の検出も含まれます。この機能は、リスクの特定と管理に不可欠な正確にイベント・チェーン解析を実行する上で非常に重要です。

特長

  • 解析では、制御フロー・グラフのすべての可能なパスを考慮して、絶対に発生しない依存関係を無視
  • 変数間のデータと制御の依存関係を計算
  • サブ関数へのすべての呼び出しを考慮
  • 複数のコンパイル単位(ソースファイル)で構成されるプログラム解析
  • 値が変数に格納され、関数が再度呼び出されたときにのみ出力される遅延依存関係の解析

メリット

  • 予想される依存関係の確認
  • 入力信号と出力信号間に不要な接続がないことの確認
  • 入力信号によって影響を受けるすべてのモジュールを追跡して文書化
  • コード変更によって影響を受けるコードを特定し、再テストの労力を最小限に抑制
  • 必要な認証プロセスのために、すべての依存関係を文書化

技術詳細

詳細は“emmtrix tech wiki”を参照して下さい。

サポート

CI/CDワークフロー

AUTOSAR

 

最適化ツール

emmtrix Parallel Studio (ePS)

並列プログラミングのためのツール

emmtrix Parallel Studio (ePS)は、マルチコア、GPU、DSPアーキテクチャ、およびこれらの処理ユニットの任意の組み合わせにおける、組み込みアプリケーションのパフォーマンスを最適化するのに役立ちます。ePSは、並列化プロセスを自動化し、大幅に簡素化するため、いくつかの決定を行うだけで良好な結果が得られます。特許取得済みのグラフィカル・ユーザー・インタフェース(GUI)と多数のレポートにより、完全な透明性が提供され、プロセスのすべてのステップで完全に制御することができます。

ePSを用いると、既存のCコードを並列化することができます。ePS Qualification Kitと組み合わせると、ISO 26262やDO-178Cなどの機能安全要件を持つアプリケーションに対して並列化を実行できます。

ePS ワークフロー

emmtrix Parallel Studioの中核技術は、C source-to-sourceコンパイラです。これは、シーケンシャルなCコードを入力として受け取り、選択したターゲット・アーキテクチャ向けに最適化されたソースコードを生成します。シーケンシャルCコードは、手書きのレガシー・コード、emmtrixのコード・ジェネレータemmtrix Code Generator (MATLAB®、Scilab、またはGNU Octaveスクリプト用)、emmtrix Model Code Generator(Simulink用)、emmtrix C++ to C Compiler(C++用)によって生成されたコード、またはMATLAB®コーダやSimulinkコーダなどのサードパーティ・ツールによって生成されたコードのいずれかになります。

コードを最適化するために、ePSはソースコードを解析し、そのパフォーマンスを見積り、さまざまな種類の並列処理(スレッド・レベル、データ・レベル、ループ・レベル)を活用します。たとえば、マルチコア・プロセッサの場合、独立したコード部分を特定し異なるコアに分散したり、ベクトル・プロセッサの場合はベクトル化が適用されたりします。並列化またはベクトル化されたソースコードは、開発ボードまたはシミュレータを使用して、ターゲット・アーキテクチャ用に直接コンパイルしテストできます。機能安全のために、Qualification Kitはシーケンシャルな入力コードと並列化された出力コードを比較して、エラーがないことを証明します。

特長

  • 並列コードの自動生成
  • 使いやすいEclipseベースのGUIによるインタラクティブな最適化
  • 並列コードを最適化するインタラクティブなコード変換
  • ランナブル・レベルまたは関数レベルと、サブ関数レベルでの並列化
  • 並列化されたプログラムを評価ボードに直接展開
  • 関数レベル、実行可能レベル、またはサブ関数レベル(関数内)での並列化
  • スレッド・レベル、データ・レベル、ループ・レベルの並列処理
  • 論理実行時間(LET: Logical Execution Time)の原則を順守
  • 静的依存関係解析

メリット

  • アプリケーションの応答時間と処理スループットの向上
  • 強力なハードウェアの使用によるアプリケーションの高速化
  • 正しい設計によるアプローチ
  • 安全性が重要なアプリケーション向け並列化(ISO 26262やD0-178Cなど)
  • 自動化と制御を維持
  • 簡単なワークフロー統合

emmtrix Parallel Studioの画面例

アプリケーションの並列コードへの移行入力

Simulink®モデル

MATLAB®/GNU Octave/Scilabスクリプト

Cコード

ePSによるインタラクティブな並列化 – 可視化して制御を維持

  1. パフォーマンスの見積もり
  • シーケンシャルなCコードのパフォーマンス解析
  • プログラム内のクリティカルな部分(ホットスポット)を特定
  • コール・グラフ/制御構造を表示
  • アプリケーション内をナビゲート
  1. コード変換
  • 変換を選択
  • ループ・レベルとデータ・レベルの並列性を活用
  • 独立したタスク数を増加
  1. タスクの並列
  • タスク・レベルの並列処理を活用
  • ユーザー制約による並列化の微調整
  • タスクを特定のコアに固定
  • 他の目的のためにコアを確保

結果

並列スケジューリング

  • 並列パフォーマンスを解析
  • 依存関係の追跡
  • 結果の解析

リリース・ノート

新機能、改善点、バグ修正の詳細については、emmtrix Parallel Studioのリリース・ノートを参照してください。

Arndt-Michael Meyer氏(Solution Manager & Partner Manager, ETAS GmbH)のコメント

「マルチコア・ハードウェアがどこでも利用できるようになった今、開発者がアプリケーションを各コアに分割する方法が問題になっています。ePSを使用すると、開発者は、現在現場で実施しているよりもはるかに細かいレベルで並列化の決定を下すことができます。現在、ほとんどのマルチコア・ソフトウェア・プロジェクトは、完了するまでに非常に長い時間がかかるか、コアをOS、I/O、アプリケーションなどの完全に別のタスクに分けられます。その結果、パフォーマンスが向上せず、コンピューティング・パワーの50%以上がアイドル状態になることがよくあります。ePSは、パフォーマンスを向上できる箇所と方法を示します。ePSを使用することの「副次効果」として、開発者はマルチコア・ハードウェアに適したアプリケーションを開発する方法をすぐに習得できます。

サポートされているプラットフォーム

emmtrix Parallel Studio (ePS)は、汎用プロセッサ(ARM Cortex-A シリーズや X86 など)から専用マイクロ・コントローラ(Infineon Aurix ファミリなど)まで、幅広いターゲット・プラットフォームをサポートしています。一般的に、ePSは新しいプロセッサ・アーキテクチャに簡単に適応させたりカスタマイズしたりできます。コンピューティング・アーキテクチャに対する要件が最小限(使用可能なCコンパイラとメッセージ・パッシングまたは共有メモリ・コア間通信)であるため、ほぼすべてのプロセッサをサポートできます。GPUベースのアクセラレータ(OpenCLまたはCUDAを使用)やFPGA(高位合成を使用)を備えたシステムもサポートされています。

emmtrix Code Vectorizer (eCV)

アプリケーションをベクトル化するツール

eCVはデータ並列アプリケーションの実行速度を10倍以上高速化します。このようなアクセラレータを手作業でプログラミングすることは、命令セットとマイクロ・アーキテクチャに関する深い知識が必要となるため困難ですが、eCVは、この作業を大幅に簡素化するソリューションを提供します。

ベクトル化の概要

インフィニオンなどのベンダは、次世代の組み込み安全認証MCUに、いわゆる「ベクタ・ユニット」を組み込む予定です。これは、異なるデータに対して複数の類似した操作を同時に実行できるアクセラレータです。この概念は、Single Instruction Multiple Data (SIMD)として知られています。SIMDはデスクトップやサーバの分野で長年使用されてきましたが、現在では安全性が重視される組み込みシステムにも導入されつつあります。この種のハードウェアを使用すると、センサ・フュージョンやAIシステムでの推論など、線形代数に大きく依存するアプリケーションを10倍以上高速化できます。

プログラミングの観点から見ると、これらのベクトル・アーキテクチャは、多数のデータ要素を同時に処理し、処理ユニットの活性状態を維持するためにデータをローカル・メモリに保持する必要があるという点で、GPUと同じメカニズムを有しています。ただし、プログラミングは依然としてほとんどが手作業で行われるため、時間がかかる上に、バグが発生しやすくなります。また、定義済みのライブラリ関数を使用して行われるため、高速化できるアプリケーションが制限されます。

詳細については、次の3つのベクトル化シリーズ概要を参照してください。

パート1:ベクトル化 – イントロダクション(投稿日:2022年2月23日)

安全性が重要なシステムにおける画像処理やセンサ・フュージョンなど、計算負荷の高いアプリケーションを高速化する方法をお探しですか?

線形代数に大きく依存するアプリケーションの場合、ベクトル処理によって大幅な性能向上が期待できます。

インフィニオンは、他のベンダに先駆け、次世代の組み込み安全認証MCUに、いわゆる「ベクトル・ユニット」を組み込む予定です。これは、データ・ストリームに対して複数の同一演算を並列に実行できるアクセラレータです。SIMDと呼ばれるこの概念は、デスクトップおよびサーバの分野で数十年にわたって使用されており、現在では安全性が重要な組み込みシステムにも導入されています。この種のハードウェアを使用すると、画像処理、センサ・フュージョン、AIシステムでの推論など、線形代数に大きく依存するアプリケーションを10倍以上高速化できます。

この種の高速化は、複数のスレッドとその同期の管理に伴うハードウェア・オーバーヘッドのため、汎用マルチコア・プロセッサでは実現できません。対照的に、ベクトル・プロセッサは、ハードウェアが同期を管理しながら、通常のプログラム・フローの一部としてベクトル計算を実行します。したがって、デッドロックや競合状態の危険はなく、安全性が重要なシステム用途のアプリケーションの認証作業が軽減されます。

ベクトル処理は、組み込みの安全性が重要なシステムのソフトウェア・アクセラレーション向きの機能であり、リアルタイム性を保持しながら、エネルギー効率の高いアプリケーションを実現します。

この投稿は、ベクトル化に関するシリーズの第1部です。今後数週間で、ハードウェアの特殊性と、これらの種類のアクセラレータをプログラミングする方法について説明します。また、emmtrix Parallel Studioがハードウェアを効率的に活用するのにどのように役立つか、およびSimulinkを使用したモデルベースでの開発において、emmtrixのベクトル化ソリューションをどのように活用できるかについても説明します。

詳細については、当社のウェブサイト「vectorization」をご覧ください。

パート2: ベクトル化 – プログラミング・モデルと具体例(投稿日:2022年3月2日)

次世代の安全認証MCUのベクトル処理ユニットを効果的に活用して、演算負荷の高いアプリケーションを高速化する方法をお探しですか?

まずは、プログラミング・モデルの概要とベクトル処理ユニットのプログラミングの詳細について説明します。

前回の投稿では、ベクトル処理を紹介し、線形代数に基づくデータ処理集約型アプリケーションを10倍以上高速化できることを説明しました。これは、複数の同一演算を一定数のデータ要素に並列に適用することで実現されます。

たとえば、ベクトル・ユニットは、1回で16個の32ビット整数または浮動小数点の加算実行できます。作業が複数のコアに分散されるマルチコア・プログラミングとは対照的に、ベクトル処理対応コアは、通常のプログラムの一部としてベクトル演算を実行し、ベクトル命令とスカラ命令を混在させることができます。ベクトル命令は通常、専用のベクトル・レジスタからオペランドを取得し、結果もそこに書き込まれます。これらのレジスタは、並列処理されるすべてのオペランド(16×32・ビット、つまりこの例では512ビット)を収容する必要があるため、かなり大きくなります。データの局所性を向上させるために、一部のアーキテクチャでは高帯域幅のローカル・メモリを備えています。レジスタとローカル・メモリへのデータ・マッピングの管理は、通常、ソフトウェアによって行われ、ベクトル化後に最適なパフォーマンスを実現するためには極めて重要です。

ベクトル処理の、実装は、計算、並列度、メモリ・アーキテクチャなどによって異なります。このため、ベクトル・ユニットをプログラミングするための、汎用的で移植可能な方法は存在しません。

自動ベクトル化をサポートするコンパイラもありますが、ループなどの複雑なプログラム構造をベクトル命令に自動的にマッピングするのは非常に難しいため、多くの場合、非効率なコードが生成されます。そのため、アセンブラでベクトル・コードを記述するか、コンパイラ組み込み関数を使用するのが、依然として一般的な方法です。この方法は、最高のパフォーマンスが得られる可能性はありますが、時間がかかり、バグが発生しやすく、正しく実装するにはハードウェアに関する多くの知識が必要です。もう1つの一般的な方法は、あらかじめ定義されたアルゴリズムに最適な実装をベクトル・ユニット向けに提供されるライブラリ関数を利用することです。これは一般的なアルゴリズムには有効ですが、特殊な用途には適用できません。OpenMPやOpenCLなどのAPIを使用してベクトル化をサポートする取り組みもあります。ただし、これをサポートするコンパイラは、さまざまなターゲット・アーキテクチャで一般的に利用できるわけではありません。

ベクトル・ユニットは優れた高速化の可能性を秘めていますが、プログラミングには大きな課題があります。次のパートでは、emmtrix Parallel Studioがハードウェアを効率的に活用するのにどのように役立つか、またSimulinkを使用したモデルベースでの開発において、emmtrixのベクトル化ソリューションからどのようなメリットを得られるかについて説明します。

パート3: ベクトル化 – emmtrix Parallel Studioを使用した自動化されたユーザー・ガイド付きベクトル化ワークフロー(投稿日:2022年3月9日)

emmtrix Parallel Studioを使用して、次世代の安全性認証MCUのベクトル・ユニットを最大限活用。

ベクトル化に関する最初の投稿では、線形代数を使用するアプリケーションを何倍にも高速化する手段としてベクトル処理を紹介しました。2回目の投稿では、ベクトル・ユニットをプログラミングするための普遍的で移植可能な方法がないことが、その効果的な応用を妨げていることを説明しました。

この投稿では、emmtrix Parallel Studio(ePS)によってこれらの問題をどのように改善し、自動化されたユーザ・ガイド付きベクトル化ワークフローでプログラミングを簡素化できるかについて説明します。

既存コードのベクトル化は、2つのステップで行われます。最初のステップでは、並列処置を行えるようにするために、シーケンシャル・コードを書き直します。これには、ループ・アンローリングなどのループ変換が含まれます。ここでの目標は、複数のループ反復で実行される類似の処理を単一のベクトル命令にマッピングして、同時に実行できるようにすることです。ベクトル・ユニットが十分な速さでデータを取得するには、線形にアクセスできるようにメモリ内にデータを配置する必要があります。これらの最適化は、依然としてハードウェアに大きく依存しませんが、ここでは、ハードウェアのベクトル長によって、必要なループ・アンローリングの程度がすでに決定されています。これらの変換を手作業で実行するのは面倒で、エラーが発生しやすくなります。これに対して、ePSは対話型のワークフローを提供します。つまり、ツールによって実行される変換をユーザーが選択します。2番目のステップでは、ePSは、手作業で記述された部分を含まない、モジュール毎に正しいベクトル化コードを自動生成するため、テスト工数が大幅に軽減されます。ベクトル化されたコードは、ハードウェアまたはシミュレータで直接実行できます。これにより、ベクトル化によるパフォーマンスへの影響に関するフィードバックが開発者に即座に提供され、次の最適化の基礎として使用できます。その結果開発サイクルを短縮できます。

Simulinkを使用する場合、emmtrixベクトル化フローは、モデルの高速化を可能にしますemmtrix Code Generator (eCG)は、ベクトル・アーキテクチャがターゲットであることを認識すると、ベクトル・ハードウェアでうまく動作するSimulinkブロックを選択します。ここで、eCGは「コード・フュージョン」と呼ばれる機能を用いて、複数のブロックを1つに組み合わせることができるため、データの局所性が向上し、最適化されたベクトル化が行われます。

詳細については、当社のウェブサイト「vectorization」をご覧ください。

emmtrix ベクトル化ワークフロー

emmtrixは、一般的な並列化フローと同じ入力言語をサポートし、ユーザー・ガイド付きの自動ベクトル化フローを提供します。並列化と同様に、ベクトル化は自動化された対話型の処理です。emmtrix Parallel Studioは、選択したターゲット・アーキテクチャに対して、最初の自動ベクトル化を実行します。生成されたコードは、機能とタイミングを確認するために、ターゲット・システムで実行できます。さらに、emmtrix Parallel Studioは、それぞれのターゲット・プラットフォームの疑似サイクル・シミュレータまたはサイクル精度シミュレータに接続するためのインタフェースを提供します。このシミュレータは、ベクトル化されたコード実行時の動作に関する情報を返します。これにより、ターゲット・ハードウェアがすぐに利用できない可能性があるプロジェクトの初期段階またはCIでの作業が簡素化されます。このデータは、ベクトル化の成功に対するフィードバックとしてユーザーに提示されます。ユーザーは、必要に応じて結果を改善するためにベクトル化を変更することができます。このサイクルは、開発者がベクトル化の結果に満足するまで繰り返されます。コードPSによって自動的に変更されます。開発者は、このプロセスにおいてベクトル化されたコードを記述する必要は一切ありません。

開発者が適用できるコード変換には、分裂、融合、分割、アンロールなどの一般的なループ変換だけでなく、パディングなどのメモリ・レイアウトの最適化も含まれます。

自動ベクトル化を実行するには、ターゲット・ハードウェアに関する多くの情報が必要です。これには、並列実行可能な演算の数、ベクトル・レジスタの幅、レイテンシとスループットを含むサポートされるデータ・タイプと命令、および帯域幅やレイテンシを含むメモリ階層に関する情報が含まれます。これのすべての情報は、包括的なハードウェア・モデルに

取り込まれます。また、生成されたコードの構文も定義されますが、これはターゲットのハードウェアおよびソフトウェア環境に大きく依存します。これには、たとえばインライン・アセンブリ、コンパイラによってマシン・コードに変換された組み込み関数、または開発者に優しい方法で機能とメモリ割り当てを指定できるようにするCの拡張機能などがあります。

以下では、15×15の2つの行列の乗算という、単純な例を使用してワークフローを説明します。アルゴリズム自体は単純ですが、ベクトル化には良好なパフォーマンスを得るためにいくつかのコード変換が必要です。

個々の行列要素を計算するには、対応する行列Aの行ベクトルと行列Bの列ベクトルのスカラ積を計算する必要があります。この方式の並列実装では、行ベクトルの最大16要素が、要素ごとに並列に列ベクトルの16要素と乗算され、積が合計されます。ただし、その前に、ベクトルをベクトル・レジスタにロードする必要があります。行列Aの行ベクトルはメモリ内に線形に存在するため、その要素は1回の操作でロードできます。ただし、行列Bの列ベクトルは、行列Bのメモリ全体に分散しています。したがって、すべての要素を収集するには16回の個別のメモリ・アクセスが必要であり、ベクトル化によって達成できる高速化が無効になります。

これは、行列Bに転置演算を適用して行列の行と列を交換することで解決できます。その結果、列ベクトルが線形メモリに格納されるメモリ・レイアウトが作成され、1回のメモリ・アクセスで読み取ることができます。最後に、ベクトル・アクセラレータがサポートする並列演算の数だけ内部ループをアンロールする変換が適用されます。これにより、これらの計算をアクセラレータの命令に自動的に効率良くマッピングできるようになり、順次実行に比べて大幅な速度向上が実現できます。

Infineon 32ビットTriCore™ AURIX™ TC4x MCUでは、emmtrix Parallel Studio によって生成された15×15行列乗算のベクトル化された実装により、17.5倍の高速化が実現できました。

AIワークフロー: MLモデルのベクトル化

ベクトル化フローは、AIアプリケーションに特に役立ちます。機械学習(ML)モデルは、ベクトル化に適した行列演算として実装されることがよくあります。emmtrixベクトル化フローを使用すると、ターゲット・ハードウェア上でのこれらの演算を高速化できます。TensorFlow、Caffe2、MATLAB、PyTorchなどのお気に入りのフレームワークでMLモデルを実装し、ONNX形式にエクスポートします。次に、ONNXモデルは、emmtrixコードeCVの入力として使用されるシーケンシャルなCコードに変換されます。結果として得られるベクトル化されたCコードは、シミュレータまたはターゲット・ハードウェアで実行して、パフォーマンスに関するフィードバックを取得し、さまざまなベクトル化を試すことができます。最後に、結果として得られるコードをアプリケーションに統合できます。

特長

  • ターゲット・プラットフォームに依存しないベクトル・コードの機能テスト
  • データ・レベルの並列性を改善し、ベクトル化のためにコードを最適化するコード変換
  • パフォーマンス推定のためのターゲット・プラットフォーム・シミュレータとの統合
  • Simulink®モデルからのベクトル化を考慮したコード生成
  • コード・フュージョン: Simulink®モデルのブロック・クロッシング・ベクトル化
  • 汎用ライブラリまたはターゲット固有の組み込み関数を使用したベクトル拡張付きCコードの生成

メリット

  • 並列ベクトル・ハードウェアの容易な活用
  • ベクトル化されたコードを手作業で記述する必要無し
  • 必要最小限のハードウェアに関する知識
  • テスト労力の削減
  • ハードウェア無しでの機能テスト
  • 短い開発サイクル

サポートされているプラットフォーム

本ツールは、次世代のInfineon 32ビットTriCore™ AURIX™ TC4x MCUNeonまたはScalable Vector Extension (SVE)命令セットを備えたARM Cortex Aコアを搭載した MPU、Advanced Vector Extensions (AVX)命令セットを備えたx86プロセッサ、および RISC-V “V” Vector Extension (RVV)を実装したマイクロプロセッサのベクトル化をサポートします。

当社の汎用ソリューションにより、別のアーキテクチャ・モデルも簡単にサポートできます。必要な場合はお問い合わせください。

サポートされているコンパイラ

ベクトル命令のプログラミング方法には標準がないため、ベクトル化ツールは適応性を持つことが重要です。emmtrix Code Vectorizerは、あらゆるCプログラミングに簡単に適応できるため、さまざまなプラットフォームやコンパイラに柔軟に対応できます。

C 言語には、主に3つのベクトル・プログラミング・モデルがあります。

  1. インライン・アセンブリ:このアプローチでは、Cコード内でインライン・アセンブリを使用するため、ハードウェアを細かく制御できますが、プロセッサのアーキテクチャに関する深い知識が必要です。
  2. プラットフォーム固有の組み込み関数(__builtin関数) : これらは、特定のハードウェア機能を活用するためにコンパイラ・ベンダによって提供される特別な関数です。インライン・アセンブリと比較してより抽象的な方法でベクタ・ユニットにアクセスできますが、プラットフォーム固有の詳細な知識が必要です。
  3. コンパイラ固有のベクトルC拡張 + プラットフォーム固有の組み込み関数 : このアプローチでは、ベクトル・データ型やオーバーロード演算子などのコンパイラ固有のC言語拡張機能を使用して、プログラミングの容易性、ベクトル化コードの移植性、可読性を実現します。ただし、ベクトルC拡張機能はベクトル・ユニットの基本的な機能のみをカバーしているため、移植性とパフォーマンスの最適化のバランスをとるために、プラットフォーム固有の組み込み関数と組み合わせて使用する必要があります。

emmtrix Code Vectorizerは3つのプログラミング・モデルすべてをサポートし、通常は最も抽象的なモデルを使用して、生成されたコードを読みやすくします。

当社の公式 Web サイトで入手可能なツールを補完するプラットフォームとコンパイラに関する詳細な技術情報については、emmtrix wikiをご覧ください。

コード生成および変換ツール

Emmtrix C++ to C Compiler (eCPP2C)

C++コードのサポート

emmtrix C++ to Cコンパイラ(eCPP2C)は、C++ソースコードを解析可能なCコードに自動的に変換します。本ツールの開発目標は、元のC++コードをコンパイルしてできたバイナリと、変換後のCコードをコンパイルしてできたバイナリをほぼ同一に保つことです。これにより、生成されたコードの機能的な正確性が保証されます。eCPP2Cは、急速に進化するC++標準の最新機能のサポートを可能にするために、LLVM/Clangコンパイラ・テクノロジを活用しています。emmtrix Parallel Studioと組み合わせることで、eCPP2CはC++で記述されたソフトウェアの並列化を可能にします。

特長

  • C++からC11 (ISO/IEC 9899:2011)ソースコードへの変換
  • 最新のLLVM/Clangコンパイラ技術を活用
  • 検証ツールによって生成されたCコードの機能的な正確性を保証
  • eCPP2C認証キット(ISO 26262、DO-178C/330または同等の規格)は、リクエストに応じて提供
  • C++コードがアセンブラにコンパイルされる仕組みを説明
  • (認証された)CコンパイラおよびCコード解析ツールと組み合わせての利用
  • Emmtrix Parallel Studio GUIに統合され、C++コードの並列化が可能

リリース・ノート

サポートされているC++言語機能

次のリストは、C++からCへのコンパイラでサポートされているC++言語機能の一部を示しています。

Emmtrix C++ to C Compilerは現在積極的に開発されており、C++17 (ISO/IEC 14882:2017)標準の完全な機能セットと一般的なGCC / Clang言語拡張をサポートすることを目指しています。

Emmtrix C++ to C Compilerは現在C++例外処理をサポートしていませんが、リクエストに応じてソリューションを提供できます。(連絡先を参照してください)。

emmtrix C++ to C Compiler Online

Compiler Explorerを搭載したemmtrix C++ to C Compiler Onlineをお試しください。さまざまなコンパイラを実行し、コンパイル・プロセスの中間結果をすべて表示できます。経験豊富な開発者でも、開発を始めたばかりの開発者でも、コーディング・スキルを学習して磨くための貴重なプラットフォームを提供します。自分のコードを入力し、プログラミング言語(C、C++)を選択し、コンパイラの設定を調整するだけで、その効果をリアルタイムに確認できます。eCPP2CはCompiler Explorerフレームワークに統合されているため、C++コードをCコードに変換したり、Clangとgccを使用して両方の言語の内部表現(IR)を表示したりできます。C++とCプログラムのIRはほぼ同じで、Compiler Explorerで調べることができるのはわずかな違いしかありません。さまざまな設定によってコードのパフォーマンスと効率がどのように変化するかを確認してください。

認証ツール

ePS Qualification Kit (ePS-QKIT)

安全な並列化のためのソリューション

emmtrix Parallel Studio用emmtrix Qualification Kit (ePS-QKIT)は、DO-178C/330、ISO 26262、および同等の機能安全規格に準拠したemmtrix Parallel Studioの安全性認証に必要なツールとプロセスを提供します。これにより、最高レベルの安全性が求められるソフトウェアに当社の並列化テクノロジを使用できるようになります。QKITは、シーケンシャル・ソフトウェア(入力)と並列化されたソフトウェア(出力)がまったく同じように動作するかどうかを確認する検証ツールです。

認証取得のステップ

emmtrix Qualification Kitは、エンド・ユーザーの運用環境で実行されるemmtrix Parallel Checker (ePC)と呼ばれる検証ツールで構成されています。並列チェッカは、並列化のたびに実行して、並列Cコードの正確性を証明し、関連する安全性ドキュメントを生成できます。静的コード解析を使用して、シーケンシャルCコードと並列Cコードを比較します。並列コードに元のコードとまったく同じ計算が含まれており、並列化エラー(競合状態、デッドロック、同期、通信エラーなど)がない場合にのみチェックは成功します。

この認証取得ステップでは、並列化の正確性をチェックすることで、emmtrix Parallel Studioのリスク(誤った動作)を排除します。正確性チェックのリスク(誤った動作を検出できない)は少ないですが、認証キットを使用することで並列化の正確性を確認できます。これにより、emmtrix Parallel Studioを使用して、安全性が極めて高いレベルの安全性が求められるソフトウェアの並列化が可能になります。

特長

  • 追加の検証ツールの助けを借りて正式な同等性チェックを実行
  • 検証ツールは各並列化の後に実行
  • 機能の正確性を保証
  • デッドロックや競合状態が存在しないことを証明
  • ePSによって発生する潜在的なエラーを検出
  • 安全レポートを生成
  • 入力コードの安全性認証を保持
  • 共通原因回避のためにさまざまなプログラミング言語と、テクノロジを使用して開発された検証ツール
  • シーケンシャルCコードと並列Cコード間のステートメントの双方向トレーサビリティ

ISO 26262

  • 最高レベルのISO 26262安全レベル(ASIL-D)まで適用可能
  • 「ソフトウェアツールの検証」認証方法を使用

DO-178C/330

  • TQL 5に準拠した検証ツール
  • 検証ツールを使用すると、並列コードの検証プロセスを排除および削減できます。
  • DAL-Cプロジェクトまで適用可能
  • TQL 4およびDAL-A(リクエストに応じて)

検証ツールのレポート

検証ツールのレポートは、シーケンシャル入力コード(左)と並列出力コード (右)の双方向のトレーサビリティを提供します。この例では、1つの関数が2つの並列関数に分割され、それぞれ異なるコアで実行されています。ePSは、通信ステートメント(EMXAPI_Send および EMXAPI_Recv)が並列ソースコードに挿入されています。検証ツールは、右側と左側で一致するステートメントを自動的に検出し、レポートで一致を視覚化します。センシティブなステートメント(プログラムの結果に影響を与える可能性がある場合)は赤でマークされます。

プレゼンテーション

機能安全を考慮したソフトウェアの並列化

emmtrix Technologies GmbHのマネージング・ディレクターであるTimo Stripf博士が、シーケンシャル・アプリケーションを並列プログラムに自動変換する方法と、ePS Qualification Kitを紹介します。

emmtrixツールでのAUTOSARの使用

自動車向け機能強化

AUTOSARクラシックは、マイクロ・コントローラからアプリケーションまでの複数の抽象化レイヤを定義する標準仕様です。基本ソフトウェア(BSW)レイヤは、オペレーティング・システム、通信、診断、およびアプリケーション・レイヤへの標準化されたインタフェースを提供するハードウェア抽象化レイヤなどのサービスで構成されます。ランタイム環境(RTE)は、アプリケーション・ソフトウェアと基本ソフトウェア・ レイヤ間の通信を可能にするミドルウェアとして機能し、ハードウェアとBSWモジュールの複雑さを抽象化します。最後に、アプリケーション・レイヤには、OEMまたはサプライヤによって開発された機能的なソフトウェア・コンポーネントが含まれます。これは、RTEによって提供される抽象化により、さまざまなハードウェア・プラットフォーム間で簡単に移植できます。

AUTOSAR環境の機能

  • トリガ・イベントに基づいて関連するランナブルを自動抽出
  • Infineon AURIX、ARM Cortex、RISC-Vプロセッサなどを使用した、さまざまな組み込みアーキテクチャ上の個々のランナブルのパフォーマンス推定
  • AUTOSARで規定されている依存関係を検証し、個々のランナブルによるデータ依存関係の抽出により詳細な情報を確認可能
  • ランナブルごとのインタラクティブな依存関係の可視化
  • 複数のSWCにわたるイベント・チェーン解析が可能
  • OBD関連部品の検出などシステム全体の信号とその安全レベルの追跡

emmtrix解析ツール ePE および eDAは、アプリケーション・ソフトウェア・コンポーネント (SWC)の一部であり、アプリケーションの機能部分を構成する実行可能ファイルの形式で、アプリケーション・レイヤ上のCコードを解析するように設計されています。他の実行ファイルとのすべてのやり取りはRTEへの関数呼び出しを通じて処理されるため、これらはシステムの残りの部分から分離して実行されていると見なすことができます。

解析や最適化のエントリ・ポイントは通常、実行可能ファイル、具体的には実行可能ファイルの機能を実装するCの関数です。RTEはさまざまなベンダから提供されることがあり、関連するすべての開発者がアクセスできるわけではないため、当社では実行可能ファイルの解析を容易にするために、AUTOSAR仕様から独自のカスタムRTEを生成しています。これにより、データ型、必要な関数、マクロ定義など、関連するすべてのトピックがカバーされ、ソースコードの正しい解析が可能になります。

CI/CDワークフローでの自動解析

自動車向けサポートの強化

現代のソフトウェア開発手法の多くは、CI/CDワークフロー(継続的インテグレーション/継続的デリバリー)に依存しています。このワークフローの目的は、ソフトウェアのビルド、テスト、および展開のプロセスを自動化し、バージョン管理システム内のソースコードへの変更が失敗かどうかの判断と、徹底的なテストのためにすぐにテスト環境に取り込めるようにすることです。

emmtrix ツールのePEとeDAは、このフローに直接統合して、開発プロセス全体を通じて開発者に追加情報を提供します。JenkinsなどのツールをベースとしたCI/CDパイプラインのセットアップは次のようになります。

ビルドプ後に、追加の「解析実行」パスを追加できます。コンパイル可能なソースコードは、両ツールでの解析の前提条件になります。

利用可能なレポート

  • ブラウザでJenkinsの結果として直接表示できるHTMLレポート
    • ePE: 検索および並べ替えができ、項目を表示または非表示するオプション
    • eDA: 関連する依存関係を強調表示するインタラクティブな視覚化
  • データベースへの取り込みや他のツールでの使用など、自動処理に使用可能なXMLおよびJSON形式の結果ファイル解析のさらなる理解に役立つ警告やその他の重要な情報を含む、すべての解析手順を記録する詳細なログファイル

CI/CDワークフローでemmtrixツールを使用する利点

  • 開発の初期段階から使用して、ライフサイクルを通じてプロジェクトを追跡し、パフォーマンスや依存関係が時間の経過とともにどのように変化するかを監視でき、影響の大きいコード変更を正確に特定し、アプリケーションのタイミングも把握可能
  • 機能モデルの開発者はブラウザで簡単に結果にアクセス可能
  • しきい値の自動監視により、実行時間が長すぎる場合に設計者やアーキテクトに自動通知
  • アプリケーションの一部に焦点を当てたレポートによって、コード変更の影響に関する即時のフィードバック提供