پیاده سازی Rust از OpenCL در Mesa اکنون از OpenCL 3.0 پشتیبانی می کند

پیاده‌سازی OpenCL جدید (rusticl) که به زبان Rust نوشته شده است و برای پروژه Mesa توسعه می‌یابد، مجموعه آزمایشی CTS (مجموعه تست انطباق Kronos) را که توسط کنسرسیوم Khronos برای ارزیابی سازگاری با مشخصات OpenCL 3.0 استفاده می‌شود، با موفقیت پشت سر گذاشته است. این پروژه توسط Karol Herbst از Red Hat که در توسعه Mesa، درایور Nouveau و پشته باز OpenCL نقش دارد، توسعه می یابد. خاطرنشان می شود که Carol با Khronos در رابطه با صدور گواهینامه رسمی پشتیبانی OpenCL 3.0 در rusticl تماس گرفت.

آزمایشات روی سیستمی با پردازنده گرافیکی نسل دوازدهم اینتل (دریاچه آلدر) تکمیل شد. کار با استفاده از درایور Mesa Iris انجام شد، اما این پروژه باید با سایر درایورهای Mesa که از نمایش میانی بدون نوع (IR) سایه زن های NIR استفاده می کنند نیز کار کند. درخواست ادغام Rusticle با Mesa هنوز در دست بررسی است و هیچ تصمیمی در مورد گنجاندن کد Rust در Mesa گرفته نشده است. قبل از اینکه Rusticl در ترکیب اصلی Mesa پذیرفته شود، می توانید از یک شاخه جداگانه برای ساختن استفاده کنید که در هنگام کامپایل باید پارامترهای ساخت را مشخص کنید "-Dgallium-rusticl=true -Dopencl-spirv=true -Dshader-cache=true -Dllvm=" درست است، واقعی".

Rusticle به عنوان آنالوگ از OpenCL Clover جلویی Mesa عمل می کند و همچنین با استفاده از رابط Gallium ارائه شده در Mesa توسعه یافته است. سهام Clover برای مدت طولانی رها شده است و rusticl به عنوان جایگزین آینده آن قرار گرفته است. علاوه بر دستیابی به سازگاری با OpenCL 3.0، پروژه Rusticle در پشتیبانی از برنامه های افزودنی OpenCL برای پردازش تصویر با Clover متفاوت است، اما هنوز از فرمت FP16 پشتیبانی نمی کند.

برای تولید اتصالات برای Mesa و OpenCL، که به شما امکان می دهد توابع Rust را از کد C فراخوانی کنید و بالعکس، rust-bindgen در Rusticle استفاده می شود. امکان استفاده از زبان Rust در پروژه مسا از سال 2020 مورد بحث قرار گرفته است. از جمله مزایای پشتیبانی Rust، افزایش امنیت و کیفیت درایورها به دلیل خلاص شدن از مشکلات معمول هنگام کار با حافظه و همچنین امکان گنجاندن پیشرفت های شخص ثالث در Mesa مانند Kazan (پیاده سازی Vulkan) ذکر شده است. در رست). معایب عبارتند از افزایش پیچیدگی سیستم ساخت، عدم تمایل به گره خوردن به سیستم بسته محموله، نیازهای گسترده برای محیط ساخت و نیاز به گنجاندن کامپایلر Rust در وابستگی های ساخت مورد نیاز برای ساخت اجزای اصلی دسکتاپ در لینوکس.

منبع: opennet.ru

اضافه کردن نظر