في العصر الرقمي المترابط للغاية اليوم، أصبحت قابلية نقل الأداء مشكلة مهمة في تطوير البرمجيات. تشير قابلية نقل الأداء إلى قدرة التطبيق على العمل بفعالية على منصات الأجهزة المختلفة. عندما يقوم المطورون بتصميم تطبيقات محمولة وممكنة الأداء، فإنهم يحتاجون إلى دعم منصات متعددة دون المساس بالأداء، ومن الناحية المثالية مع تقليل التعليمات البرمجية الخاصة بالمنصة. ص>
تعتبر إمكانية نقل الأداء ميزة مطلوبة للغاية في مجتمع الحوسبة عالية الأداء (HPC)، ولكن لا يوجد حاليًا معيار قياس عالمي أو ثابت. ص>
يتم قياس الأداء بطريقتين: الأولى هي مقارنة أداء الإصدار المحسن من التطبيق مع نسخته المحمولة؛ والأخرى تعتمد على عدد عمليات الفاصلة العائمة (FLOPs) التي يتم تنفيذها والانتقالات من الذاكرة الرئيسية أثناء التنفيذ البيانات إلى تردد المعالج لمقارنة أداء الذروة النظري للتطبيق. مع تزايد تنوع الأجهزة، يصبح من الأهمية بمكان تطوير برمجيات يمكن تشغيلها على مجموعة واسعة من الأجهزة، مما يؤثر على الاستخدام طويل المدى للتطبيق وإمكانية تحديثه. ص>
يتم ذكر قابلية نقل الأداء على نطاق واسع في الصناعة، وعادة ما تشير إلى: أولاً، القدرة على تشغيل نفس التطبيق على منصات أجهزة متعددة، ثانيًا، تحقيق أهداف أداء معينة على هذه الأنظمة الأساسية. في مؤتمر قابلية نقل الأداء الذي عقدته وزارة الطاقة الأمريكية (DOE) في عام 2016، ذكر أحد الخبراء أنه "يمكن اعتبار التطبيق تطبيقًا إذا كان بإمكانه تحقيق مستوى ثابت من الأداء على كل منصة مقارنة بأفضل تطبيق معروف". من أجل الكفاءة وقابلية النقل. ص>
أشار جيف لاركن (NVIDIA) بشكل مباشر إلى أن قابلية نقل الأداء هي "يمكن تشغيل نفس كود المصدر بشكل منتج على بنيات مختلفة متعددة." ص>
لذلك، أصبحت إمكانية نقل الأداء موضوعًا مهمًا للمناقشة في مجتمع الحوسبة عالية الأداء. يعقد شركاء من الصناعة والأوساط الأكاديمية ومختبرات وزارة الطاقة الوطنية بانتظام "منتدى إنتاجية الأداء وقابلية النقل والكفاءة العالية للحوسبة" منذ عام 2016 لتعزيز البحث وتطوير قابلية نقل الأداء. ص>
مع استمرار تطور بنية الحوسبة، تظل إمكانية نقل الأداء أمرًا مهمًا. يفترض المطورون أن قاعدة التعليمات البرمجية الفردية الخاصة بهم ستحقق أداءً مقبولاً في البنى الأحدث، بالإضافة إلى مجموعة متنوعة من البنى الحالية التي لم يتم اختبارها بعد. مع زيادة تنوع الأجهزة، سيصبح من الضروري تطوير برامج يمكن تشغيلها عبر منصات متعددة. ويرتبط هذا بحيوية التطبيقات وأهميتها المستمرة. ص>
يؤكد مشروع حوسبة Exascale التابع لوزارة الطاقة الأمريكية (ECP) على أن قابلية نقل الأداء تمثل مصدر قلق مستمر، خاصة في بيئة متعددة المنصات. ص>
منذ عام 2016، عقدت وزارة الطاقة ورش عمل متعددة لمناقشة الأهمية المتزايدة لقابلية نقل الأداء. دعا مؤتمر 2017 للمشاركة من العديد من المؤسسات المعروفة بما في ذلك المركز الوطني للحوسبة العلمية لأبحاث الطاقة (NERSC) ومختبر لوس ألاموس الوطني (LANL). ص>
لقياس الوقت الذي حقق فيه البرنامج إمكانية نقل الأداء، يجب أخذ عاملين في الاعتبار. أولاً، يمكن قياس قابلية نقل الأداء من خلال مقارنة عدد أسطر التعليمات البرمجية المستخدمة عبر البنيات مقابل عدد أسطر التعليمات البرمجية المستخدمة فقط لبنية واحدة. ثانيا، يمكن قياس الأداء بعدة طرق. على سبيل المثال، لمقارنة أداء إصدار محسّن للنظام الأساسي لأحد التطبيقات مع إصدار محمول، تتمثل طريقة القياس الفعالة في استخدام نموذج أداء السقف، والذي يمكنه الحصول على أعلى أداء نظري للتطبيق. ص>
في مؤتمر 2016، ذكر أحد المشاركين أنه "عندما يدعي فريق التطبيق أنه أداء محمول، فإن هذا الرمز يعتبر أداءً محمولاً." ص>
في السنوات الأخيرة، أشارت الأبحاث إلى أن التعليمات البرمجية المحمولة المكتوبة لمختلف بنيات الحوسبة المتوازية يجب أن تتوافق مع نماذج البرمجة القياسية المفتوحة، ويجب تطوير التعليمات البرمجية وتحسينها على منصات متعددة في وقت واحد. يمكن لهذه الاستراتيجيات أن تساعد المطورين في العثور على معلمات مناسبة لمنصات مختلفة. ص>
هناك مجموعة متنوعة من تطبيقات وأنظمة البرمجة في السوق المصممة لمساعدة المطورين على تحقيق إمكانية نقل الأداء. تتضمن بعض الأطر الشائعة OpenCL، وSYCL، وKokkos، وRAJA، وما إلى ذلك. تدعم واجهات البرمجة هذه البرمجة متعددة المنصات متعددة العمليات. تتضمن بعض الحلول غير الإطارية لغات الضبط الذاتي واللغات الخاصة بالمجال. ص>
مع تقدم التكنولوجيا، هل نحن مستعدون لعصر جديد من البرمجة يأخذ إمكانيات قابلية الأداء إلى آفاق جديدة؟ ص>