← أحدث الأبحاث
💬 معالجة اللغات الطبيعية

CrossTL: Hub-Based Translation of GPU Programs and the Preservation of Source Rules

تقدم هذه الورقة CrossTL، وهو مترجم قائم على مركز توزيع مفتوح المصدر يوجه عشر لغات برمجة إلى أحد عشر هدفاً عبر لغة وسيطة حاملة للقواعد (CrossGL)، مما يثبت أن الحفاظ الصريح على القواعد الدلالية الخاصة بالمصدر يقلل بشكل كبير من التباينات في الترجمة مقارنة بالنهج القائم على بناء الجملة فقط، رغم أنه لا يمكنه ضمان الصحة بشكل كامل بسبب عدم توافق التنفيذ الأساسي ولا يقدم سوى مكاسب طفيفة في سهولة الاستخدام على الأكواد البرمجية الضخمة التابعة لجهات خارجية.

المؤلفون الأصليون: NRIPESH NIKETAN, VAATSALYA SHRIVASTVA, BHUSHAN SRIVASTAVA, SUSHANT MISHRA

نُشر 2026-10-20✓ Author reviewed ⓘ
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: NRIPESH NIKETAN, VAATSALYA SHRIVASTVA, BHUSHAN SRIVASTAVA, SUSHANT MISHRA

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). ✨ هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تعتمد ألعاب الفيديو الحديثة، والمحاكاة العلمية، والذكاء الاصطناعي جميعها على نوع خاص من برامج الكمبيوتر التي تعمل على معالجات الرسوميات. هذه الرقائق سريعة للغاية في إجراء العديد من الحسابات في وقت واحد، لكنها متطلبة للغاية بشأن كيفية تعاملها مع الأرقام. تستخدم الشركات المختلفة التي تصنع هذه الرقائق — مثل أبل، وإنفيديا، وإيه إم دي — لغات مختلفة لكتابة هذه البرامج. وبينما تبدو هذه اللغات متشابهة في الظاهر، إلا أنها غالباً ما تختلف في القواعد الأساسية للحساب. فعلى سبيل المثال، قد تنص لغة ما على أن جمع رقم مع نفسه عندما تكون النتيجة كبيرة جداً يجب أن يلتف حول رقم سالب صغير، بينما قد تنص لغة أخرى على أن هذا الإجراء غير محدد وقد يؤدي إلى أي شيء. إذا كتب مطور برنامجاً لنوع معين من الرقائق وحاول نقله إلى نوع آخر، يجب على أدوات الترجمة أن تقرر أي قاعدة ستتبع. وإذا أخطأت هذه الأدوات، فقد يتم تجميع البرنامج وتشغيله، ولكنه سينتج إجابة خاطئة، مما قد يؤدي إلى تعطل لعبة أو إفساد بيانات علمية.

وضع فريق من الباحثين حداً لهذه المشكلة من خلال بناء مترجم عالمي لهذه البرامج الرسومية. لقد أنشأوا نظاماً يسمى "CrossTL"، يعمل كمركز محوري. وبدلاً من بناء مترجم منفصل لكل زوج ممكن من اللغات، يقوم نظامهم بأخذ الكود من عشر لغات مصدر مختلفة وتحويله إلى تنسيق محايد واحد قبل إرساله إلى إحدى عشرة لغة هدف مختلفة. وكان التحدي الجوهري الذي واجهوه هو أن هذا التنسيق المحايد، بحد ذاته، لا يتذكر أي قاعدة محددة كان من المفترض أن يتبعها جزء من الكود. فهو يرى علامة جمع بسيطة، لكنه لا يستطيع التمييز ما إذا كانت هذه العلامة تعني "الالتفاف حول الرقم" أو "التوقف وإظهار خطأ". وبدون هذه الذاكرة، قد يغير المترجم معنى البرنامج عن طريق الخطأ، مما يؤدي إلى حالات فشل صامتة حيث يعمل الكود ولكنه يحسب نتائج خاطئة.

ولحل هذه المشكلة، طور الباحثون طريقة تسمى "حمل القواعد" (rule carrying). فقد قاموا بتعديل المترجم الخاص بهم ليرفق ملاحظة محددة بكل عملية رياضية يواجهها. تسجل هذه الملاحظة بالضبط أي قاعدة استخدمتها اللغة الأصلية لتلك العملية. وعندما ينتقل الكود عبر المركز ويتجه نحو لغة هدف جديدة، يتحقق المترجم من هذه الملاحظة. فإذا كانت لغة الهدف تتبع نفس القاعدة، فإنه يمرر العملية كما هي. أما إذا كانت لغة الهدف تتبع قاعدة مختلفة، فإن المترجم يستبدل العملية بقطعة كود مخصصة تجبر لغة الهدف على التصرف تماماً مثل اللغة المصدر. وهذا يضمن أن البرنامج يحسب النتيجة نفسها على الأجهزة الجديدة كما فعل على الأجهزة القديمة، بغض النظر عن الاختلافات في اللغات الأساسية.

اختبر الفريق هذا النظام بصرامة باستخدام مجموعة من اثنين وستين برنامج اختبار مصممة بعناية، تُعرف باسم "نواة المخاطر" (hazard kernels). صُممت هذه الاختبارات لإثارة القواعد المحددة التي تختلف فيها اللغات، مثل ما يحدث عند القسمة على صفر أو جمع أرقام كبيرة جداً. وقاموا بتشغيل هذه الاختبارات على مجموعة متنوعة من الأجهزة والبيئات البرمجية الواقعية، بما في ذلك معالجات الرسوميات من شركة أبل وعدة برامج تشغيل مفتوحة المصدر. وأظهرت النتائج أنه بدون طريقتهم الجديدة، تفقد أدوات الترجمة الحالية القواعد الصحيحة في حالات عديدة، مما يؤدي إلى مخرجات غير صحيحة. وعندما قام الباحثون بتفعيل ميزة "حمل القواعد"، نجح النظام في الحفاظ على السلوك الصحيح في كل الحالات تقريباً. ومن بين مئات عمليات الاختبار، انخفض عدد الأخطاء بشكل كبير، حيث تم إرجاع حالات الفشل القليلة المتبقية إلى خصائص معينة في كيفية تعامل بعض برامج التشغيل مع الكود، وليس إلى عيوب في منطق الترجمة نفسه.

كما بحثت الدراسة في كيفية أداء هذه الطالة الجديدة على آلاف البرامج الواقعية التي كتبها أطراف ثالثة، والتي تتراوح من مكتبات تعلم الآلة إلى محركات الرسوميات. ووجد الباحثون أنه بينما كان نظامهم الجديد أقل عرضة لإنتاج كود يقبله المترجم (compiler) مقارنة ببعض الأدوات الراسخة، إلا أنه كان أكثر موثوقية في ضمان أن الكود الذي يتم تجميعه يعمل بشكل صحيح بالفعل. وفي الواقع، لم يغير الأسلوب الجديد معدل نجاح الكود بأكثر من واحد بالمائة، مما أثبت إمكانية اعتماده دون كسر سير العمل الحالي. وخلص الباحثون إلى أنه لكي يكون المترجم أميناً حقاً، لا يمكنه مجرد نقل الصيغة (syntax) من لغة إلى أخرى، بل يجب أن يحمل القواعد الدلالية (semantic rules) للغة المصدر معه في الرحلة، لضمان بقاء معنى البرنامج سليماً طوال الطريق.

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →