Silexica

マルチコア向け組み込みソフトウェア
自動分割/生成ソリューション:Silexica

複雑なマルチコア向けプログラミングを自動化するための、Silexicaは並列ソフトウェア開発ツール·スイート(SLX Tool Suite)を提供しています。SHIM(Software-Hardware Interface for Multi-many-core)で記述された抽象度の高いハードウェア・プラットフォーム情報を別途用意することで、シングル・スレッドで記述されたC, C++コードに対して、コードの分割、各コアへのマッピング、および通信/同期コードを含む各コア向けソースコードを自動生成します。 SilexicaのHP:http://www.silexica.com/

並列可能個所解析:SLX Parallelizer

SLX Parallelizerは入力されたシーケンシャルなC, C++コードを静的・動的に解析し、並列可能な個所を探索するだけでなく、静的解析だけでは予測不可能な「並列化した場合の速度向上」を自動予測します。多くの並列化候補の中から効果の大きい個所のみを並列化することで、短期間で効率良く並列化を実施できます。

特長

  • ANSI C, C++14をフルサポート
  • ソースコードを動的に解析し、コールグラフを作成
  • ソースコード内でポインタを使用可
  • タスクレベル、データレベル、パイプラインの3種類の並列化候補を探索
  • 並列化を実行した場合の速度向上効果を定量的に算出
  • キャッシュのヒット・ミス予測

ソフトウェア分割:SLX Mapper

SLX Mapperはプロセス化されたソースコードとSHIM(Software-Hardware Interface for Multi-many-core)で記述されたアーキテクチャ情報をもとに、コア毎の各プロセスの処理時間と通信パターンを分析し、ヘテロジニアスなコアに各プロセスをマッピングし、インターコネクト、共有メモリ、DMAC等アーキテクチャ情報に登録されている通信経路の中で最適な通信方法を自動的に選択します。

シミュレーション結果(処理時間、マッピング結果、プロセッサの稼働率、タスクの状態遷移等)を可視化することも可能です。

またマニュアル・モードにも対応しており、設計者自身がマッピングや通信経路を手動で設定することもできます。

特長

  • ISS等を使用せず、各コア上での各タスクの処理時間を高速・高精度に自動算出
  • ヘテロジニアスなマルチコアに対応
  • 自動マッピングおよび手動マッピングの両方をサポート
  • 処理時間や通信経路に対する制約を与えることで、所望のマッピングを自動生成可能
  • 各種解析結果をグラフィカルに表示

ターゲット・コード自動生成:SLX Generator

SLX Generatorに実装されるOS情報やAPI情報を予め与えることで、GeneratorはMapperによって計算された分割結果を基に、ターゲット・コンパイラで即コンパイル可能な各コア向けのソースコードを自動生成します。

生成されたソースコードのコンパイル、ボードとの通信手順およびターゲット・ボードへのプログラムの書き込み等、一連の作業をスクリプト化することで、Mapperを用いてタスクの分割方法を変更しバイナリを実機に直接書き込むことで、実機上でパフォーマンスを確認できます。

特長

  • 並列化コードを自動生成する、独自のソースコード・ソースコード コンパイラ技術
  • ヘテロジニアスな各コア向けソースコードを自動生成
  • タスクのマネージメント、同期および通信のために最適なAPIを自動選択
  • 生成されたソースコードはターゲット・コンパイラでコンパイル可能
  • Pthreadコード自動生成機能によって、ホストPC上で並列化コードを実行可能