開発、シミュレーション、プロファイル、展開。ソフトウェア駆動型プロセッサのパワーと、コード不要のグラフ・コンパイルによる利便性 |
ソフトウェア開発ツールキット
Chimeraソフトウェア開発ツールキット(SDK:Software Development Toolkit)は、Chimera GPNPUをターゲットとした複雑なアプリケーションを開発するための包括的な環境です。Quadric SDKは、機械学習グラフとして表現されているか、従来のC++コードとして表現されているかに関わらず、あらゆるデータ並列アルゴリズムの組み合わせを可能にします。
オンラインまたはオンプレミス
Quadric Developers Studio(DEVSTUDIO)を用いて、Chimera SDKの全機能にオンラインでアクセスできます。 DEVSTUDIOのビジュアルなドラッグ・アンド・ドロップ可能なフロントエンドにより、開発者は、C++プリプロセッシングおよびポストプロセッシング カーネルの既存の最適化ライブラリと、さまざまな既製の機械学習モデルを組み合わせて、アプリケーションを迅速にテストすることができます。
また、プライベート・クラウドやオンプレミス。システムに展開するために、Chimera SDKの完全なDockerイメージをダウンロードすることもできます。 手元のコンピュータにインストールすることで、Quadric Chimeraツールフローを使用して独自のC++コードと機械学習モデルをコンパイルし、Chimera GPNPUの疑似サイクル精度のISSモデル上でプロファイリングすることができます。新しく作成した計算カーネルやMLモデルは、DEVSTUDIOにアップロードしてSoC解析を進めたり、組織内の他のエンジニアと共有したりすることができます。
QUADRIC Chimera GRAPH COMPILER
Chimera Graph Compiler (CGC)は、主要なMLトレーニング・フレームワークから作成された機械学習推論モデルを入力し、多くの最適化を実行した上で、Chimera Compute Library (CCL)を利用してMLグラフの最適化されたC++コードを出力し、Chimera LLVM C++コンパイラでコンパイルする強力な変換およびコード最適化ツールです。
グラフのインポート
CGCは、PyTorch、TensorFlow、またはその他のフレームワークで開発されたネットワークのONNX形式の入力グラフを受け付けます。グラフイ入力処理の一部として、多くの最適化が実行されます:
– グラフの単純化/正規化
– 定数伝播 – 可能であれば、純粋に定数の引数を持つ演算子を削除
– 演算子の正規化/変換 – ML演算子をGPNPU固有の形に変換
ネットワーク・グラフの形状と構造は、可能な限り演算子を単純化するように最適化されます。互換性チェックは、すべての演算子がサポートされているかどうかを判断するために実行されます。サポートされていない演算子やカスタム演算子がソースグラフに存在する場合、ユーザはカスタム演算子を中心にグラフを分割し、サポートされていない演算子のC++モデルを記述し、新しいカスタム演算子C++カーネルをCGCによって生成されたCCLコードに再統合するオプションがあります。
グラフとメモリの最適化
CGCは、MLグラフの完全な中間表現を作成し、パフォーマンスとメモリ帯域幅の利用を最適化するという2つの目的で、最適化を複数回実行します。
メモリ最適化の手法には以下が含まれます:
– Tensor形式のレイアウト解析(L2とLRMの両方)
– フュージョン・イン・ローカル・メモリ(FILM) – LRM内のデータを保持し、処理時間のかかる中間活性化ライトバックを回避するための演算の集約。
– アレイレベル・メモリ・アダプタとTensor形状変換
– バンク競合の最小化、デフラグ
– 予測ウェイト・プリフェッチ
CHIMERA LLVM C++コンパイラと命令セットシミュレータ(ISS)
Chimera LLVM C++コンパイラは、業界最先端のLLVMコンパイと、Chimera命令セットに特化したアセンブリ・コードを生成するQuadric固有のコード生成バックエンドを利用しています。
Chimera命令セットシミュレータ(ISS)は、Chimera SDKにバンドルされているChimera GPNPUコアの実行可能モデルです。ISSは、スタンドアロン・モードでアプリケーション・コードのプロファイリングやチューニングを単独で行うことも、呼び出し可能なシステムCトランザクション・レベル・モデルとしてSoCのより包括的な仮想プロトタイプにバンドルし、より正確なメモリ・モデルの動作を使用してChimeraコードをより正確に微調整することもできます。