ZLUDA は AMD の ROCm スタック上で動作します
ニュースがリリースされました AMDはZLUDAの開発への資金提供を停止する決定を下した、これは AMD GPU向けのCUDAテクノロジーのオープン実装、 これにより、CUDA アプリケーションを変更せずに、追加のレイヤーなしで実行されるアプリケーションに近いパフォーマンスで実行できます。
過去 2 年間、この層の開発に取り組んできました。 AMD GPU を搭載したシステム上での CUDA アプリケーションの実行を容易にします。でもつい最近までは AMDは次のような決定を下しました。 AMD GPU で CUDA アプリケーションを実行する 商業的利益ではなかったため、開発者は開発を公開することができました 契約で合意した通り。
ズルーダについて
プロジェクト 当初は Intel GPU での CUDA 作業をサポートするために作成されました GPU サポート ポリシーの変更は、当初 ZLUDA の開発者がインテルの従業員であったという事実によるものです。 2021年には、 インテルは商業的に成り立たないと判断した Intel GPU 上で CUDA アプリケーションを実行する機能を提供するため、この取り組みの開発は中止されました。
2022年の初めに、 開発者はインテルを去り、開発を続けるためにAMDと契約を結んだ CUDA 互換性レイヤーの。開発中、AMD は、ZLUDA プロジェクトに対する同社の関心が促進されないこと、および ZLUDA パブリック リポジトリにコミットしないことを要求しました。
ZLUDA は CUDA アプリケーションのバイナリ サポートを提供します ソース コード レベルで変更を加える必要がなく、NVIDIA GPU 用の CUDA コンパイラーでコンパイルされた既存のもの。この実装は、AMD の ROCm スタックと HIP ランタイム上で動作します。
現在の状態では、 ZLUDA の変換品質レベルはアルファ版とみなされます。 プリミティブとライブラリに対する最小限のサポートを提供することに加えて、すでに多くの CUDA アプリケーションを実行できることは言及する価値がありますが、OptiX フレームワークのプロトタイプ実装も備えています。
ZLUDA比較表
ZLUDA 制御下での CUDA アプリケーションの最初の実行中に、顕著な遅延が発生する ZLUDA が GPU 用にコードをコンパイルするためです。しかし、 以降の実行では、この遅延は解消されます。 コンパイルされたコードはキャッシュされるため、コンパイルされたコードを実行するとネイティブに近いパフォーマンスが得られます。たとえば、AMD Radeon 6800 XT GPU で Geekbench を実行すると、CUDA ベンチマーク スイートの ZLUDA ベースのバージョンは OpenCL ベースのバージョンよりも大幅に優れたパフォーマンスを示しました。
さらに、公式 CUDA ドライバー API のサポートと文書化されていない CUDA API のリバース エンジニアリングが、関数呼び出しを CUDA に非常によく似た HIP ランタイムで提供される類似の関数に置き換えることによって ZLUDA に実装されていることが述べられています。
たとえば、関数 cuDeviceGetAttribute() は hipDeviceGetAttribute() に置き換えられます。 ZLUDA は、NVML、cuBLAS、cuSPARSE などの NVIDIA ライブラリとの互換性も保証します。これらのライブラリに対して、ZLUDA は、同様の AMD ライブラリ上に構築された、同じ名前と同じ機能セットを持つ変換ライブラリを提供します。 PTX (Parallel Thread Execution) 表現でコンパイルされた GPU アプリケーション コードは、特別なコンパイラーによって中間 LLVM IR 表現に変換され、そこから AMD GPU 用のバイナリ コードが生成されます。
最後に、それは言及されるべきです プロジェクトの将来はコミュニティの関心にかかっています 他社からの協力提案も可能です。外部のサポートがなければ、プロジェクトは DLSS など、著者の個人的な関心のある分野のみで開発を続けることになります。
のために プロジェクトコードに興味がある、Rust で書かれており、MIT および Apache 2.0 ライセンスの下で配布されており、プロジェクトは Linux および Windows と互換性があることを知っておく必要があります。さらに詳しく知りたい場合は、詳細を参照してください。 次のリンクで。