Implementasi OpenCL Rust Mesa sekarang mendukung OpenCL 3.0

Implementasi OpenCL baru (rusticl), yang ditulis dalam Rust, sedang dikembangkan untuk proyek Mesa, telah berhasil lulus rangkaian pengujian CTS (Kronos Conformance Test Suite) yang digunakan oleh konsorsium Khronos untuk menilai kompatibilitas dengan spesifikasi OpenCL 3.0. Proyek ini dikembangkan oleh Karol Herbst dari Red Hat, yang terlibat dalam pengembangan Mesa, driver Nouveau, dan open stack OpenCL. Tercatat bahwa Carol menghubungi Khronos mengenai sertifikasi resmi dukungan OpenCL 3.0 di rusticl.

Pengujian diselesaikan pada sistem dengan GPU Intel generasi ke-12 (Alder Lake). Pekerjaan dilakukan menggunakan driver Mesa Iris, namun proyek juga harus bekerja dengan driver Mesa lain yang menggunakan representasi perantara (IR) tanpa tipe dari shader NIR. Permintaan untuk menggabungkan Rusticle dengan Mesa masih dalam peninjauan dan belum ada keputusan apakah akan menyertakan kode Rust di Mesa. Sebelum Rusticl diterima ke dalam komposisi Mesa utama, Anda dapat menggunakan cabang terpisah untuk membangun, saat mengkompilasinya Anda harus menentukan parameter build β€œ-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm= BENAR".

Rusticle bertindak sebagai analog dari frontend OpenCL Clover Mesa dan juga dikembangkan menggunakan antarmuka Gallium yang disediakan di Mesa. Taruhan Clover telah lama ditinggalkan dan rusticl diposisikan sebagai penggantinya di masa depan. Selain mencapai kompatibilitas OpenCL 3.0, proyek Rusticle berbeda dari Clover dalam mendukung ekstensi OpenCL untuk pemrosesan gambar, tetapi belum mendukung format FP16.

Untuk menghasilkan binding untuk Mesa dan OpenCL, memungkinkan Anda memanggil fungsi Rust dari kode C dan sebaliknya, Rusticle menggunakan Rust-bindgen. Kemungkinan penggunaan bahasa Rust dalam proyek Mesa telah dibahas sejak tahun 2020. Di antara kelebihan dukungan Rust, peningkatan keamanan dan kualitas driver disebutkan karena menghilangkan masalah umum saat bekerja dengan memori, serta kemampuan untuk memasukkan pengembangan pihak ketiga di Mesa, seperti Kazan (implementasi dari Vulkan di Karat). Kerugiannya termasuk meningkatnya kompleksitas sistem build, keengganan untuk terikat dengan sistem paket kargo, perluasan persyaratan untuk lingkungan build, dan kebutuhan untuk menyertakan kompiler Rust dalam dependensi build yang diperlukan untuk membangun komponen desktop utama di Linux.

Sumber: opennet.ru

Tambah komentar