Mesa の OpenCL の Rust 実装が OpenCL 3.0 をサポートするようになりました

Mesa プロジェクト用に開発されている、Rust で書かれた新しい OpenCL 実装 (rusticl) は、Khronos コンソーシアムが OpenCL 3.0 仕様との互換性を評価するために使用する CTS (Kronos Conformance Test Suite) テスト スイートに合格しました。 このプロジェクトは、Mesa、Nouveau ドライバー、および OpenCL オープン スタックの開発に携わっている Red Hat の Karol Herbst によって開発されています。 Carol が、rusticl での OpenCL 3.0 サポートの公式認定に関して Khronos に連絡したことが注目されます。

テストは、第 12 世代 Intel GPU (Alder Lake) を搭載したシステムで完了しました。 この作業は Mesa Iris ドライバーを使用して実行されましたが、プロジェクトは NIR シェーダーのタイプレス中間表現 (IR) を使用する他の Mesa ドライバーでも動作するはずです。 Rusticle と Mesa のマージ要求はまだ検討中であり、Rust コードを Mesa に含めるかどうかについては決定されていません。 Rusticl がメインの Mesa コンポジションに受け入れられる前に、ビルドに別のブランチを使用できます。コンパイル時にビルド パラメータ「-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=」を指定する必要があります。真実"。

Rusticle は、Mesa の OpenCL フロントエンド Clover の類似物として機能し、Mesa で提供される Gallium インターフェイスを使用して開発されています。 クローバーステークは長い間放棄されており、ラスティクルは将来の代替として位置付けられています。 OpenCL 3.0 との互換性を実現することに加えて、Rusticle プロジェクトは画像処理用の OpenCL 拡張機能をサポートする点で Clover とは異なりますが、FP16 形式はまだサポートしていません。

Mesa と OpenCL のバインディングを生成して、C コードから Rust 関数を呼び出すこと、またはその逆を可能にするために、Rusticle では Rust-bindgen が使用されます。 Mesa プロジェクトで Rust 言語を使用する可能性については、2020 年から議論されてきました。 Rust サポートの利点の XNUMX つは、メモリを操作する際の典型的な問題を取り除くことによるドライバーのセキュリティと品質の向上、および Kazan (Vulkan の実装) などのサードパーティ開発を Mesa に含めることができることです。 Rustでは)。 デメリットとしては、ビルド システムの複雑さの増加、カーゴ パッケージ システムへの結びつきへの抵抗、ビルド環境の要件の拡大、Linux 上で主要なデスクトップ コンポーネントをビルドするために必要なビルド依存関係に Rust コンパイラを含める必要があることが挙げられます。

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

コメントを追加します