LLVM プロジェクトは、CPU、GPU、FPGA、アクセラレータ用のコンパイラである HPVM 1.0 を導入しました。

LLVM プロジェクトの開発者は、異種システムのプログラミングを簡素化し、CPU、GPU、FPGA、およびドメイン固有のハードウェア アクセラレータのコードを生成するツールを提供することを目的とした HPVM 1.0 (異種並列仮想マシン) コンパイラのリリースを公開しました。 FGPA とアクセラレータは 1.0 リリースには含まれていませんでした)。 プロジェクト コードは、Apache 2.0 ライセンスに基づいて配布されます。

HPVM の主なアイデアは、コンパイル時に並列実行可能プログラムの統一表現を提供することです。これは、GPU、ベクトル命令、マルチコア プロセッサ、FPGA など、並列コンピューティングをサポートするさまざまなタイプのハードウェアを使用した実行に使用できます。さまざまな特殊なアクセラレータ チップ。 他のシステムとは異なり、HPVM は異種コンピューティングを組織するために、言語およびハードウェアに依存しない中間表現、仮想命令セット アーキテクチャ (ISA)、およびランタイム スケジューリングという XNUMX つの機能を組み合わせることを試みました。

HPVM のターゲットに依存しない中間表現 (IR) は、LLVM 9.0 の中間命令表現に基づいて構築されており、それを階層データ フロー グラフで拡張して、タスク、データ、およびパイプライン レベルの並列処理をキャプチャします。 HPVM 中間表現には、ベクトル命令と共有メモリも含まれます。 中間表現を使用する主な目的は、効率的なコード生成と異種システムの最適化です。

仮想命令セット アーキテクチャ (ISA) により、異なるタイプの並列コンピューティング ハードウェア間での移植性が可能になり、異種システムの異なる要素を使用する場合でもパフォーマンスを失わないようにすることができます。 仮想 ISA を使用して、CPU、GPU、FPGA、およびさまざまなアクセラレータを使用して実行できる汎用の実行可能プログラム コードを提供することもできます。

開発の現在の段階では、HPVM は、NVIDIA GPU (cuDNN および OpenCL)、Intel AVX ベクトル命令、およびマルチコア x86 CPU を使用して実行するために、仮想 ISA を使用して定義されたアプリケーション ノードを変換できるコード ジェネレーターを提供します。 実行時に、HPVM は柔軟な計算プロセス スケジューリング ポリシーを適用します。これは、プログラム情報 (グラフ構造) に基づいて実装されるほか、システム内で利用可能なターゲット コンピューティング デバイス上で実行できるように個々のプログラム ノードをコンパイルすることによって実装されます。

HPVM を使用すると、生産性が大幅に向上することがわかります。 HPVM トランスレーターのパフォーマンスは、GPU およびベクトル コンピューティング デバイス用の手書きの OpenCL コードに匹敵します。

最初のプレビュー リリースと比較して、HPVM 1.0 には、線形代数テンソル演算、Pytorch および Keras のフロントエンド、畳み込み演算子の近似、および特定のテンソル演算に最適な近似を自動的に選択し、最適なパフォーマンスを提供する構成を選択する近似調整フレームワークのサポートが含まれています。

出所: オープンネット.ru

コメントを追加します