SLX

難易度の高い要件を満たすプログラミング・ツール

Silexica

分析

anim-loader-1
SLX Analyse

SLXは、洗練されたコンパイラ・テクノロジを駆使してソースコードを解析することにより、お客様のアプリケーションを理解します。抽象化されたターゲット・プラットフォームのモデルまたはボード上の実行トレース・データを補足することで、ターゲット・アーキテクチャのタイミングおよび動作を理解します。次に、パターン通過フレームワークを使用することで、コード内で見落とされていた未確認の並列化を突き止めて、マルチコア・ターゲット上で実行するためにコードを分割します。タスク・レベル、パイプライン・レベル、データ・レベルなど、さまざまなレベルの並列化がサポートされています。これらの情報を収集して次のフェーズに渡し、所定のターゲット・プラットフォーム上のアプリケーションの動作を完全に把握することで、最適化を行います。

その他の「分析」詳細

SLXは、ソースコードを解析することで、アプリケーションの正確な動作を理解します。静的コンパイラと動的コンパイラ両方の洗練されたテクノロジを利用することで、全てのデータ依存およびコントロール依存を特定し、完全なアプリケーション・モデルを構築します。これには、アプリケーションのコールグラフ、ローカル変数、ヒープ変数、グローバル変数へのリード/ライト・アクセス、メモリ階層内のメモリ・アクセスの完全な把握などが含まれます。並列アプリケーションの場合、既存の通信パターンや同期パターンも分析されます。

パターン通過フレームワークを使用することで、これまで見落とされていたさらなる並列化可能な個所を検出できます。組み込み式の高性能コンピューティング・コード、AUTOSAR固有のアプリケーションで実行可能な並列化、およびFPGAベースのプラットフォームをターゲットとしたパイプライン・レベル並列化の自動抽出に合わせて、タスク・レベル、パイプライン・レベル、データ・レベルなど、さまざまなレベルの並列化がサポートされています。他の業界で必要とされる要件を追加する際にも、要件に合わせてフレームワークを簡単に適応可能です。

Silexicaのプラットフォーム・モデルから自動的に導出された場合であっても、ターゲットのトレース結果から取得した場合であっても、ターゲット・アーキテクチャの動作に必要なタイミング情報がアプリケーション・モデルに補足されます。ここではさまざまなタイプのプロセッサ・コアだけでなく、ターゲット・プラットフォームの異なるメモリ階層、また異なる相互通信アーキテクチャも考慮されます。Silexicaの柔軟性の高いプラットフォームのモデリング環境上には、再設定可能なキャッシュ解析が内蔵されており、多様なメモリ階層と設定パラメータを用いて所望のアーキテクチャを設定できます。

シーケンシャルなC/C++で記述されたアプリケーション、POSIXスレッド、データフロー、プロセス・ネットワークとタスク・グラフ、およびAUTOSAR準拠のソースコード等、多数の異なる入力形式がサポートされています。

Product-Analyse-Static-and-Dynamic-Source-Code-Analysis-analyze

統計およびダイナミック
ソースコード分析

Cache-Memory-and-Communication-Analysis-analyze

キャッシュ、メモリ、
通信分析

Cross-target-Performance-Estimation-analyze

Cross-target
性能予測手法

Product-Analyse-C-C-data-flow-task-grapfs-etc-analyze

C/C++、データフロー、タスク-グラフ、OSEK タスク、 POSIX スレッド

Silexica

最適化

anim-loader-2
SLX Optimize

洗練された最適化技術によって、前フェーズで収集された分析情報をもとに、アプリケーションを所望のホモジニアス、およびヘテロジニアスなマルチコア・プラットフォームに自動マッピングします。パフォーマンス、消費電力、メモリ要件に応じた最適化を行うと同時に、リアルタイムおよびリソースに対する制約も考慮されます。自動マッピングの結果あるいは手動でのマッピング結果に基づき、先端のシミュレーション技術によってアプリケーションがターゲット上でどのように動作するかを予測し、パフォーマンスと実行フロー、タスク状態および、プロセッサとコミュニケーション・パスの両方の稼働率に関する、詳細な解析結果をレポートします。

その他の「最適化」詳細

洗練された最適化技術によって、ヘテロジニアスなコアやアクセラレータへの最適なマッピング、論理チャネルのプラットフォームのインターコネクトおよびメモリへのマッピング、およびプロセス間通信で使用するバッファの最も効果的なメモリ割り当てを自動選択できます。パフォーマンス、消費電力、メモリ要件に応じた最適化を行うと同時に、リアルタイムおよびリソースに対する制約も考慮されます。

ツールを使用することで、各コアへの分割を決定できます。高度なシミュレーション技術によりアプリケーションのターゲット上での動作がシミュレーションされ、実行時の動作、詳しいタスク状態、プロセッサとコミュニケーション・パスの稼働率等の詳細な結果がレポートされます。高度なメモリおよび競合モデリング技法を使用することで、ターゲット・プラットフォーム上でのシミュレーションの精度と速度の適切なトレードオフが確保されます。 オプションで必要な電力状態とアプリケーションの電力、エネルギー消費の詳細を分析することで、実測された消費電力、または推定された消費電力情報をもとに電力最適化を実現する分割を実現できます。

ユーザーが編集可能な、抽象化されたマルチコア・プラットフォームモデルを使用することで、特定のプラットフォームだけでなく、様々なプラットフォームにもアプリケーションをマッピングすることができます。アーキテクトは所定のアプリケーションに対して理想的な市販のマルチコア・プラットフォームを探すことができます。またソフトウェアやハードウェアを変更する際に、「What-If」分析機能を用いることで、次世代マルチコア・システムのアーキテクチャ探求、マッピングの変更等をツール上で実施可能です。

アプリケーションを変更した際のパフォーマンスを予測したり、プロセッサ、メモリ、ハードウェア・アクセラレータを、現在のマルチコア・アーキテクチャに追加した場合の、処理速度向上の可能性を解析できます。最先端の命令セット・シミュレータと比較してシミュレーション速度が桁違いに速いため、次世代製品のデザインを大幅に改善できます。

Power-performance-and-memory-driven-distribution-of-tasks-and-buffers-optimize

消費電力、パフォーマンス、メモリ要件に応じたソフトウェアのマッピング

Powerful-scheduling-analysis-optimize

タイトなタイミング制約の下で、最適化されたタスクスケジュール

Element 1-optimize

DVFSのパワー・ステートの選択によって、ピーク時および平均消費電力を低減

Product-Optimize-Architecture-Exploration-and-Multicore-Communication-Analysis-optimize

アーキテクチャの探求とマルチコア・コミュニケーションの解析

Silexica

実装

anim-loader-3
SLX Implement

Silexica独自のソースコードからソースコードを生成するsource-to-sourceコンパイラ・テクノロジによって、開発者はソフトウェアの変更時の開発期間や生産性を大幅に改善できます。「分析・最適化」フェーズで見つかった所見は、元のソースコードの各行と変数に直接関連付けられ、ソースコード上から参照可能です。これにより正確で包括的なユーザーへのフィードバックと、source-to-sourceコンパイラを用いた自動書き換えという独自機能が可能になります。ユーザーが既存のシーケンシャル・コードから移行する際の助けになるように、強力なヒントが画面上に表示されたり、プラグマの挿入によるソースコードの自動書き換えが行われることもあります。既存の並列コード(例 データフロー、プロセス・ネットワーク、AUTOSAR仕様など)では、source-to-sourceのフレームワークによってタスク管理、同期、通信のために自動的にAPIが挿入されます。

その他の「実装」詳細 

Silexica独自のソースコードからソースコードを生成するsource-to-sourceコンパイラ・テクノロジによって、開発者はソフトウェアの変更時の開発期間や生産性を大幅に改善できます。無意味な反復作業に時間を無駄使いすることなく、必要な作業に集中できます。

Silexicaのテクノロジを使用することで、「分析・最適化」フェーズで見つかった所見は、元のソースコードの各行と変数に直接関連付けられ、ソースコード上から参照可能です。これにより正確で包括的なユーザーへのフィードバックと、source-to-sourceコンパイラを用いた自動書き換えという独自機能が可能になります。

ユーザーが既存のシーケンシャル・コードから移行する際の助けになるように、強力なヒントが画面上に表示されたり、既存の共有メモリAPIまたはカスタマイズされた内部ワークフロー向けに、プラグマの挿入によるソースコードの自動書き換えが行われることもあります。

既存の並列コード(例 データフロー、プロセス・ネットワーク、AUTOSAR仕様など)では、強力なsource-to-sourceフレームワークによって、タスク管理、同期、通信のために、ターゲットのマルチコア・プラットフォームで使用可能な実行時環境とオペレーティング・システムから選択されたAPIが自動挿入されます。出力については、プラットフォームのネイティブなコンパイラ・ツールチェーンを用いて直接コンパイルし、ターゲットに展開できます。

Clear-suggestions-where-to-spend-time-with-direct-link-to-original-source-code-implement

マルチコアの移行時の開発期間の短縮化を明確に提案

mapping-dependent-code-generation-implement

マッピング依存型コード生成マルチコア向けに

automatic-insertion-of-pragmas-openmp-HLS-etc-implement

プラグマの自動挿入 (OpenMP, HLS, など…)

AUTOSAR-support-implement

AUTOSARサポート

Silexica

Silexica

Silexica

事例

事例 - Denso
マルチコアECUへのソフトウェア移行
詳細を読む
事例 - Huawei
Silexicaのツールを使用すれば、新しいテクノロジの電力効率向上を正確に予測できます(英語)
詳細を読む
事例 - Ricoh
SLXを使用してOpenCVコンピュータビジョンライブラリで隠された並列性を発見し、活用する
詳細を読む
Silexica

お問い合わせ

ご質問はこちらまで
Silexica Europe
Silexica USA
Silexica Japan