ICP·Devآی‌سی‌پی‌·دِو
بازگشت به مقالات
راست۶ تیر ۱۴۰۵3 دقیقه مطالعه

اکسیداسیون Mesa: نگاهی به درون Kraid، کامپایلر جدید کولابورا به زبان راست برای پردازنده‌های گرافیکی Arm Mali

شرکت کولابورا رسماً Kraid، یک کامپایلر سایه‌زن پیشگام مبتنی بر راست را با Mesa ادغام کرد. پروژه Kraid با جایگزینی کامپایلر قدیمی Bifrost، از ویژگی‌های ایمنِ نوع‌داده در زبان راست برای به اشتراک‌گذاری مستقیم کد با درایور Nouveau انویدیا بهره می‌برد.

نکات کلیدی

  • شرکت کولابورا رسماً Kraid، یک کامپایلر سایه‌زن پیشگام مبتنی بر راست را با Mesa ادغام کرد
  • پروژه Kraid با جایگزینی کامپایلر قدیمی Bifrost، از ویژگی‌های ایمنِ نوع‌داده در زبان راست برای به اشتراک‌گذاری مستقیم کد با درایور Nouveau انویدیا بهره می‌برد
اشتراک‌گذاری
اکسیداسیون Mesa: نگاهی به درون Kraid، کامپایلر جدید کولابورا به زبان راست برای پردازنده‌های گرافیکی Arm Mali

اکسیداسیون Mesa: نگاهی به درون Kraid، کامپایلر جدید کولابورا به زبان راست برای پردازنده‌های گرافیکی Arm Mali

توسعه گرافیک متن‌باز به‌تازگی نقطه عطف شگفت‌انگیزی را در مسیر خود به سمت ایمنی حافظه (memory safety) و معماری ماژولار ثبت کرده است. شرکت کولابورا رسماً Kraid — بازنویسی کامل کامپایلر سایه‌زن برای پشته درایورهای GPU نسل Arm Mali (Panfrost و PanVK) از پایه — را با مخزن اصلی Mesa ادغام کرد.

آنچه Kraid را به طرز فوق‌العاده‌ای هیجان‌انگیز می‌کند، فقط پایگاه کد مدرن آن نیست، بلکه پیاده‌سازی آن با زبان راست (Rust) است. این پروژه به عنوان یک مطالعه موردی برجسته نشان می‌دهد که چگونه زبان راست به سرعت در حال تسخیر گرافیک سطح پایین و فعال‌سازی سخت‌افزار است.

فراتر از گلوگاه Bifrost

برای سال‌ها، پشته درایور متن‌باز Panfrost به کامپایلری متکی بود که در ابتدا بر اساس ریزمعماری Bifrost شرکت Arm طراحی شده بود. با ورود معماری‌های جدیدتر مانند Valhall، پشتیبانی از آن‌ها به مرور زمان و به صورت باری به هر جهت به سیستم اضافه شد. این ساختار قدیمی به سرعت به محدودیت‌های معماری خود رسید. تیم توسعه با چالش‌های ساختاری مداومی مواجه بود، به‌ویژه در هنگام پیاده‌سازی منابع ۶۴ بیتی بومی (native)، کدهای واسط (IR) تمیزتر، و تخصیص رجیستر مطمئن‌تر.

کولابورا به جای صرف ماه‌ها وقت برای بازسازی خط لوله قدیمی مبتنی بر سی (C)، تصمیم گرفت کار را از صفر و روی یک صفحه سفید شروع کند؛ و آن‌ها راست را انتخاب کردند. Kraid نشان‌دهنده یک تغییر پارادایم کامل است که از یک رمزگذار (encoder) مشتق‌شده مستقیم از تعاریف XML اختصاصی Arm در کنار یک IR کاملاً مدرن‌سازی‌شده استفاده می‌کند.

تصویر شماتیک: یک نمودار بلوکی معماری آموزشی که اکوسیستم کامپایلر سایه‌زن مبتنی بر راست Kraid را نشان می‌دهد. در سمت چپ 'Arm Mali (Panfrost)' و در سمت راست 'NVIDIA (Nouveau)' قرار دارد. در مرکز یک هسته آبی درخشان مشترک با برچسب 'Shared Rust Compiler Algorithms (Register Allocation, IR Structure)' دیده می‌شود که از طریق رابط‌های ماژولار به هر دو سمت متصل شده است. سبک نمودار فناوری تمیز، پس‌زمینه تیره، المان‌های نئونی، وضوح بالا، بدون شلوغی، تصویر طرح‌واره‌ای واضح.

مزیت ماژولار بودن راست: اشتراک‌گذاری با انویدیا

شاید انقلابی‌ترین جنبه Kraid، هم‌افزایی ساختاری آن با سایر درایورها باشد. نوشتن کامپایلرهای GPU به طور سنتی کاری بسیار جزیره‌ای بوده است؛ محاسبات ریاضی برای پردازنده گرافیکی Arm Mali از پردازنده گرافیکی انویدیا ایزوله بود، زیرا مجموعه‌های دستورالعمل آن‌ها کاملاً با یکدیگر تفاوت دارند.

راست بازی را تغییر می‌دهد. با بهره‌گیری از ویژگی‌ها (traits) و کال‌بک‌های (callbacks) بسیار کارآمد زبان راست، کولابورا الگوریتم‌های اصلی کامپایلر — مانند تخصیص رجیستر، ساخت گراف جریان کنترل (control flow graph) و تئوری عمومی کامپایلر — را به روشی کاملاً پلاگین‌پذیر (قابل اتصال) پیاده‌سازی کرده است.

در نتیجه، Kraid قادر است این الگوریتم‌های هسته ماژولار را مستقیماً با کامپایلر مبتنی بر راست Nouveau (طراحی‌شده برای پردازنده‌های گرافیکی انویدیا) به اشتراک بگذارد. هر دو درایور بک‌اندهای مجموعه دستورالعمل بسیار تخصصی و سخت‌افزارمحور خود را حفظ می‌کنند، اما بخش عمده و سنگین تئوری کامپایلر را با یکدیگر شریک می‌شوند. این اشتراک‌گذاری کد در میان سخت‌افزارهای مختلف، در گذشته در دنیای پراکنده مهندسی GPU چیزی در حد یک رویای دست‌نیافتنی بود.

وضعیت فعلی: نحوه تست

پروژه Kraid هم‌اکنون در Mesa فعال است، اگرچه همچنان تحت توسعه فعال قرار دارد. در حالی که این کامپایلر در ابتدا تنها یک تست از مجموعه تست‌های سازگاری ولکان (Vulkan CTS) را پاس می‌کرد، اکنون تمام تست‌های مربوط به ساختار شیء بافر ذخیره‌سازی سایه‌زن (SSBO) را با موفقیت پشت سر می‌گذارد و کار روی یک تخصیص‌دهنده رجیستر کاملاً جدید آغاز شده است.

اگر مشتاق هستید کامپایلر جدید را امتحان کنید، می‌توانید آن را با استفاده از متغیر محیطی زیر فعال کنید:

bash
PAN_USE_KRAID=1

برای توسعه‌دهندگانی که توزیع‌های لینوکس را بسته‌بندی می‌کنند و هنوز زبان راست به طور کامل در زنجیره ابزار (toolchain) آن‌ها ادغام نشده است، کولابورا این کامپایلر را از طریق فلگ ساخت مِسون (Meson) یعنی -Dpanfrost-rust قابل فعال/غیرفعال‌سازی نگه داشته تا از بروز هرگونه خرابی ناگهانی در زمان ساخت جلوگیری کند. پروژه Kraid پیروزی دیگری برای «اکسیداسیون» (مهاجرت به راست) پشته گرافیکی لینوکس است که راه را برای درایورهای GPU ایمن‌تر، سریع‌تر و بسیار مشارکتی‌تر هموار می‌کند.

برچسب‌ها

#راست#کولابورا#Mesa#درایور کارت گرافیک#Arm Mali

منابع و ارجاعات مستند

پیشنهاد مطالعه بعدی

خوشتان آمد؟ مقاله بعدی را بگیرید

در خبرنامه عضو شوید تا راهنمای بعدی در ایمیلتان باشد — بدون مزاحمت، لغو عضویت در هر زمان.