التوازي الضمني

في علوم الحاسوب ، يُعدّ التوازي الضمني سمةً من سمات لغة البرمجة ، إذ يسمح للمترجم أو المفسر باستغلال التوازي الكامن في العمليات الحسابية التي تُعبّر عنها بعض بنيات اللغة تلقائيًا. وعلى عكس التوازي الصريح ، لا تحتاج لغة البرمجة المتوازية ضمنيًا إلى توجيهات أو عوامل أو دوال خاصة لتمكين التنفيذ المتوازي .

تشمل لغات البرمجة ذات التوازي الضمني Axum و Binary Modular Dataflow Machine (BMDFM) و High Performance Fortran (HPF) و Id و LabVIEW و MATLAB M-code و NESL و Single Assignment C (SAC) و Streams and Iteration in a Single Assignment Language ( SISAL ) و Z-level programming language (ZPL) و pH. [ 1 ]

مثال

إذا كانت مشكلة معينة تتضمن إجراء نفس العملية على مجموعة من الأرقام (مثل حساب جيب أو لوغاريتم كل منها بدوره)، فإن اللغة التي توفر التوازي الضمني قد تسمح بكتابة التعليمات على النحو التالي:

الأرقام = [ 0 1 2 3 4 5 6 7 النتيجة = sin ( الأرقام 

يمكن للمترجم أو المفسر حساب جيب كل عنصر بشكل مستقل، وتوزيع الجهد على معالجات متعددة إذا كانت متوفرة.

المزايا

لا يحتاج المبرمج الذي يكتب شيفرة متوازية ضمنيًا إلى القلق بشأن تقسيم المهام أو التواصل بين العمليات، بل يركز بدلًا من ذلك على المشكلة التي يهدف برنامجه إلى حلها. يُسهّل التوازي الضمني عمومًا تصميم البرامج المتوازية، وبالتالي يُحسّن إنتاجية المبرمج بشكل ملحوظ.

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

العيوب

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

تكمن المشكلة الأكبر في أن كل برنامج يتضمن منطقًا متوازيًا وآخر تسلسليًا. على سبيل المثال، يتطلب الإدخال/الإخراجWrite() الثنائي دعم عمليات تسلسلية مثل و Seek(). إذا رُغِبَ في التوازي الضمني، فإن هذا يُنشئ متطلبًا جديدًا للبنى والكلمات المفتاحية لدعم التعليمات البرمجية التي لا يمكن تنفيذها بشكل متوازي أو توزيعها.

ملحوظات

  1. ^ نيخيل، ريشيور؛ أرفيند (20 فبراير 2024). البرمجة الموازية الضمنية في الرقم الهيدروجيني . مورغان كوفمان للنشر. رقم ISBN 978-1-55860-644-9.
  2. حريدي، سيف (14 يونيو 2006). "مقدمة". دليل أوز (تقرير). مؤرشف من الأصل في 14 مايو 2011. تم الاطلاع عليه في 20 سبتمبر 2007 .