تم نشر مجموعة أدوات ZLUDA، مما يسمح لك بتشغيل تطبيقات CUDA على وحدات معالجة الرسومات AMD

قام مشروع ZLUDA بإعداد تطبيق مفتوح لتقنية CUDA لوحدات معالجة الرسومات AMD، والذي يسمح لك بتشغيل تطبيقات CUDA غير المعدلة بأداء قريب من أداء التطبيقات التي تعمل بدون طبقات. توفر مجموعة الأدوات المنشورة توافقًا ثنائيًا مع تطبيقات CUDA الحالية التي تم تجميعها باستخدام مترجم CUDA لوحدات معالجة الرسومات NVIDIA. يعمل التنفيذ أعلى مكدس ROCm ووقت التشغيل HIP (واجهة الحوسبة غير المتجانسة لقابلية النقل) التي طورتها AMD. كود المشروع مكتوب بلغة Rust ويتم توزيعه بموجب تراخيص MIT وApache 2.0. يدعم العمل على نظامي Linux وWindows.

تم تطوير طبقة تنظيم عمل CUDA على الأنظمة التي تحتوي على وحدات معالجة الرسومات AMD على مدار العامين الماضيين، لكن المشروع له تاريخ أطول وتم إنشاؤه في الأصل لضمان عمل CUDA على وحدات معالجة الرسومات Intel. يُفسر التغيير في سياسة دعم GPU بحقيقة أن مطور ZLUDA في البداية كان موظفًا في Intel، ولكن في عام 2021 اعتبرت هذه الشركة أن توفير القدرة على تشغيل تطبيقات CUDA على وحدات معالجة الرسومات Intel ليس له أي مصلحة تجارية ولم يتم تسريعه تطوير المبادرة.

في بداية عام 2022، ترك المطور شركة Intel وتم التعاقد مع AMD لتطوير طبقة متوافقة مع CUDA. أثناء التطوير، طلبت AMD عدم الإعلان عن اهتمام AMD بمشروع ZLUDA وعدم الالتزام بمستودع ZLUDA العام. بعد ذلك بعامين، قررت AMD أن تشغيل تطبيقات CUDA على وحدات معالجة الرسوميات AMD لم يكن ذا أهمية للأعمال، مما سمح للمطور، وفقًا لشروط العقد، باكتشاف عمله. وبما أن الشركات المصنعة لوحدة معالجة الرسومات توقفت عن تمويل المشروع، فإن مصيره يعتمد الآن على مصلحة المجتمع وتلقي مقترحات التعاون من الشركات الأخرى. بدون دعم خارجي، لن يتمكن المشروع من التطور إلا في الاتجاهات التي تهم المؤلف شخصيًا، مثل DLSS (أخذ العينات الفائقة للتعلم العميق).

في شكله الحالي، يتم تقييم مستوى جودة التنفيذ كإصدار ألفا. ومع ذلك، يمكن بالفعل استخدام ZLUDA لتشغيل العديد من تطبيقات CUDA، بما في ذلك Geekbench و3DF Zephyr وBlender وReality Capture وLAMMPS وNAMD وwaifu2x وOpenFOAM وArnold. يوفر الحد الأدنى من الدعم للمكتبات والمكتبات الأولية لـ cuDNN وcuBLAS وcuSPARSE وcuFFT وNCCL وNVML.

يحدث الإطلاق الأول لتطبيقات CUDA التي تعمل بنظام ZLUDA مع تأخيرات ملحوظة نظرًا لأن ZLUDA يقوم بتجميع كود GPU. لا يوجد مثل هذا التأخير في عمليات التشغيل اللاحقة، حيث يتم تخزين التعليمات البرمجية المترجمة في ذاكرة التخزين المؤقت. عند تشغيل التعليمات البرمجية المترجمة، يكون الأداء قريبًا من الأداء الأصلي. عند تشغيل Geekbench على وحدة معالجة الرسوميات AMD Radeon 6800 XT، كان أداء إصدار ZLUDA من مجموعة معايير CUDA أفضل بشكل ملحوظ من إصدار OpenCL.

تم نشر مجموعة أدوات ZLUDA، مما يسمح لك بتشغيل تطبيقات CUDA على وحدات معالجة الرسومات AMD

يتم تنفيذ دعم واجهة برمجة تطبيقات برنامج تشغيل CUDA الرسمية والجزء ذي الهندسة العكسية من واجهة برمجة تطبيقات CUDA غير الموثقة في ZLUDA عن طريق استبدال استدعاءات الوظائف بوظائف مماثلة متوفرة في وقت تشغيل HIP، والذي يشبه في العديد من الطرق CUDA. على سبيل المثال، يتم استبدال الدالة cuDeviceGetAttribute() بـ hipDeviceGetAttribute(). يتم ضمان التوافق مع مكتبات NVIDIA مثل NVML وcuBLAS وcuSPARSE بطريقة مماثلة - بالنسبة لمثل هذه المكتبات، توفر ZLUDA مكتبات ترجمة بنفس الاسم ونفس مجموعة الوظائف، والتي تم إنشاؤها كوظائف إضافية عبر مكتبات AMD المماثلة.

تتم ترجمة كود تطبيق GPU الذي تم تجميعه في تمثيل PTX (تنفيذ الخيط المتوازي) أولاً بواسطة مترجم خاص إلى التمثيل الوسيط LLVM IR، والذي يتم على أساسه إنشاء الكود الثنائي لوحدات معالجة الرسومات AMD.

تم نشر مجموعة أدوات ZLUDA، مما يسمح لك بتشغيل تطبيقات CUDA على وحدات معالجة الرسومات AMD


المصدر: opennet.ru

إضافة تعليق