حوسبة متوازية: الفرق بين النسختين

[نسخة منشورة][نسخة منشورة]
تم حذف المحتوى تمت إضافة المحتوى
JarBot (نقاش | مساهمات)
JarBot (نقاش | مساهمات)
ط بوت:إزالة تصنيف عام (3.5) إزالة تصنيف:حوسبة علمية لوجود (تصنيف:حوسبة متوازية))
سطر 8:
* التوازي على مستوى المهام.
 
استخدم التوازي لسنوات عديدة، وخاصة في ال[[حوسبة عالية الأداء]]، ولكن الاهتمام به ازداد أكثر في الآونة الأخيرة بسبب العوائق المادية التي تحول دون توسيع حجم العمليات المعالجة.<ref>S.V. Adve et al. (November 2008). [http://www.upcrc.illinois.edu/documents/UPCRC_Whitepaper.pdf "Parallel Computing Research at Illinois: The UPCRC Agenda"] (PDF). Parallel@Illinois, University of Illinois at Urbana-Champaign. "The main techniques for these performance benefits – increased clock frequency and smarter but increasingly complex architectures – are now hitting the so-called power wall. The computer industry has accepted that future performance increases must largely come from increasing the number of processors (or cores) on a die, rather than making a single core go faster." {{Webarchive|url=https://web.archive.org/web/20130507001710/http://www.upcrc.illinois.edu/documents/UPCRC_Whitepaper.pdf |date=05 2يناير3 }}</ref> حيث صار استهلاك أجهزة الحاسوب للطاقة (وبالتالي الحرارة الناتجة عن ذلك) مصدرًا للقلق في السنوات الأخيرة،<ref>Asanovic et al. Old [conventional wisdom]: Power is free, but transistors are expensive. New conventional wisdom is that power is expensive, but transistors are "free".</ref> فإن الحوسبة المتوازية أصبحت النموذج المهيمن في [[هندسة الحاسوب|هندسة الحواسيب]]، وخاصة في نماذج [[معالج متعددةمتعدد الأنويةاللب|المعالجات متعددة الأنوية]].<ref name="View-Power">Asanovic, Krste et al. (December 18, 2006). [http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf "The Landscape of Parallel Computing Research: A View from Berkeley"] (PDF). University of California, Berkeley. Technical Report No. UCB/EECS-2006-183. "Old [conventional wisdom]: Increasing clock frequency is the primary method of improving processor performance. New [conventional wisdom]: Increasing parallelism is the primary method of improving processor performance&nbsp;... Even representatives from Intel, a company generally associated with the 'higher clock-speed is better' position, warned that traditional approaches to maximizing performance through maximizing clock speed have been pushed to their limit." {{Webarchive|url=http://web.archive.org/web/20180706014906/https://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf |date=06 يوليو 2018}}</ref>
 
يُمكن أن تُصنّف الحواسيب المتوازية وفقًا لتصنيف المستوى الذي يدعم العتاد فيه عملية الموازاة. فالحواسيب مُتعددة المُعالجات أو متعددة الأنوية تحتوي على عناصر معالجة متعددة داخل جهاز واحد، في حين أن [[عنقود (حوسبة)|العناقيد (clusters)]]، و[[معالجحاسوب متوازي هائل|المعالجات المتوازية الهائلة (MPPS)]]، ومصفوفات الحواسيب تستخدم عدة حواسيب للعمل على نفس المهمة. تُستخدم هندسة الحواسيب المتوازية المتخصصة أيضا في بعض الأحيان في المُعالجات التقليدية لتسريع أداء مهام محددة.
 
تُعتبر كتابة البرامج الموجهة للحواسيب المتوازية أكثر صعوبة من البرامج ذات المهام التسلسلية، <ref>Patterson, David A. and John L. Hennessy (1998). ''Computer Organization and Design'', Second Edition, Morgan Kaufmann Publishers, p.&nbsp;715. ISBN 1-55860-428-6.</ref> لأن توازي المهام يسمح بظهور أنواع جديدة محتملة من [[خطأ برمجي|الأخطاء البرمجية]]، والتي يُعتبر مشكلة '''[[حالة تسابق|حالة تعارض]]''' أحد أشهر أمثلتها.
 
عادة ما تكون الاتصالات والتزامن بين المهام الفرعية المُختلفة إحدى أكبر العقبات أمام الحصول على برامج متوازية عالية الأداء. يخضع مقدار [[تسريع|التسريع]] في برنامج معين نتيجة لعملية موازة ل[[قانون أمدال]].
سطر 18:
== الخلفية ==
[[ملف:Cray 2 Arts et Metiers dsc03940.jpg|تصغير|كراي-2 أسرع حاسوب في العالم في الفترة بين 1985 إلى 1989.]]
عادة ما تكون البرامج الحاسوبية مكتوبة بطريقة تسلسلية. فلحل مشكلة ما، تُبنى وتطبق [[خوارزمية]] على شكل تعليمات متسلسلة. وتُنفذ هذه التعليمات على [[وحدة معالجة مركزية|وحدة المعالجة المركزية]] لجهاز حاسوب واحد. حيث تنفذ تعليمة واحدة فقط في نفس الوقت، وبعدَ الانتهاء منها تُنفذ التعليمة التالية.<ref name="llnltut">{{مرجع ويب |مسار=http://www.llnl.gov/computing/tutorials/parallel_comp/ |عنوان=Introduction to Parallel Computing |تاريخ الوصول=2007-11-09 |مؤلف=Barney, Blaise |ناشر=Lawrence Livermore National Laboratory| مسار أرشيف = https://web.archive.org/web/20060928221351/http://www.llnl.gov/computing/tutorials/parallel_comp/ | تاريخ أرشيف = 28 سبتمبر 2006 }}</ref>
 
أما الحوسبة المتوازية فتستخدم في وَقت واحد عدة عناصر معالجة لحل مشكلة معينة. وتقسَّم المشكلة إلى أجزاء مستقلة بحيث يمكن لكل عنصر من عناصر المعالجة تنفيذ الجزء الخاص به من الخوارزمية في وقت واحد مع العناصر الأخرى. تتنوع العناصر المعالجة وتشمل موارد مختلفة مثل جهاز حاسوب واحد مع معالجات متعددة أو شبكة من عدة حواسيب أو معدات متخصصة أو أي مزيج مما ذكر.<ref name="llnltut" />
سطر 24:
كان رفعُ سرعة تنفيذ العمليات الهم الرئيسي لتحسين أداء الحواسيب منذ منتصف ثمانيات القرن العشرين وحتى عام [[2004]]. حيث أن مدة تنفيذ برنامج تساوي عدد التعليمات مضروبًا في متوسط الوقت اللازم لتنفيذ تعليمة واحد. الحفاظ على كل شيء ثابتًا، وزيادة تردد الساعة الداخلية يخفض من متوسط الوقت المستغرق لتنفيذ تعليمة. وبالتالي يُقلل وقت التنفيذ لجميع البرامج ذات العمليات المحدودة.<ref>John L. Hennessy and David A. Patterson (2002). ''Computer Architecture: A Quantitative Approach''. 3rd edition, Morgan Kaufmann, p.&nbsp;43. ISBN 1-55860-724-2.</ref>
 
يحسب استهلاك الشرائح للطاقة من خلال المعادلة P = C × V<sup>2</sup> × F،حيث ترمز P إلى الطاقة، وترمز C إلى عدد [[مكثفةمكثف (كهرباء)|المكثفات]] المستعملة أثناء عمل دورة كاملة (تتناسب مع عدد الترانزستورات التي تتغير مدخلاتها)، وترمز V إلى الجهد، أما F فترمز إلى تردد المعالج (دورة في الثانية).<ref>Rabaey, J. M. (1996). ''Digital Integrated Circuits''. Prentice Hall, p.&nbsp;235. ISBN 0-13-178609-1.</ref> وتزيد زيادة التردد من كمية الطاقة المستهلكة. أجبَرَت زيادة استهلاك المعالجات للطاقة في النهاية شركة [[إنتل]] في مايو [[2004]]على إلغاء إنتاج معالجاتها [[إنتل تيجاس وجهوك|تيجاس وجهوك]]، والتي تعتبر عمومًا نهاية سياسة رفع التردد كنموذج شائع لمعمارية الحواسيب.<ref>Flynn, Laurie J. [http://www.nytimes.com/2004/05/08/business/08chip.html?ex=1399348800&en=98cc44ca97b1a562&ei=5007 "Intel Halts Development of 2 New Microprocessors"]. ''The New York Times'', May 8, 2004. Retrieved on April 22, 2008. {{Webarchive|url=http://web.archive.org/web/20150403214302/http://www.nytimes.com/2004/05/08/business/08chip.html?ex=1399348800&en=98cc44ca97b1a562&ei=5007 |date=03 أبريل 2015}}</ref>
 
على الرغم من قضايا استهلاك الطاقة إضافة للتنبؤات المتكررة عن نهايته، فإن قانون مور ظل صحيحًا. فقد نصَّ [[قانون مور]] (الناتج عن ملاحظة تجريبية) على أن كثافة [[ترانزستور|الترانزستورات]] في المعالجات الدقيقة تتضاعف كل 18 إلى 24 شهرًا.<ref name="Moore1965paper">{{مرجع ويب| الأول=Gordon E.|الأخير = Moore|سنة =1965|مسار=ftp://download.intel.com/museum/Moores_Law/Articles-Press_Releases/Gordon_Moore_1965_Article.pdf| عنوان =Cramming more components onto integrated circuits| تنسيق =PDF| صفحات =4| عمل=[[Electronics (magazine)|Electronics Magazine]]| تاريخ الوصول = 2006-11-11| مسار أرشيف = https://web.archive.org/web/20130114202353/http://download.intel.com/museum/Moores_Law/Articles-Press_Releases/Gordon_Moore_1965_Article.pdf | تاريخ أرشيف = 14 يناير 2013 }}
سطر 80:
في هذا المثال، لا توجد اعتمادية بين التعليمات، وبالتالي يمكن تنفذهم جميعا بالتوازي.
 
شروط برنشتاين لا تسمح باشتراك الذاكرة بين العمليات المختلفة. لذلك، فإن فرض بعض الترتيب بين عمليات الوصول للذاكرة ضروري، مثلا نظام [[سيمافور (توضيح)|إشارات (semaphores)]]، أو [[حاجز (حوسبة)|الحواجز]] أو بعض طرق [[تزامن (حوسبة)|التزامن]] الأخرى.
 
=== حالة السباق واستبعاد التشارك والتزامن والتباطؤ في التوازي ===
سطر 103:
|}
 
إذا تم تنفيذ التعليمة 1ب بين 1أ و3أ، أو إذا تم تنفيذ التعليمات 1أ بين 1ب و3ب، سيقوم البرنامج بإنتاج بيانات غير صحيحة. وهذا هو المعروف باسم [[حالة سباقتسابق|حالة السباق]] {{إنج|Race condition}}. يجب على المبرمج استخدام [[قفل (حوسبة)|قفل]] لضمان [[استبعاد التشارك]]. [[قفل (حوسبة)|القفل]] هو بناء في لغة البرمجة يسمح لخيط واحد بالسيطرة على متغير ومنع الخيوط الأخرى من القراءة أو الكتابة بها، حتى تحرير المتغير من القفل. الخيط الذي قام بعملية القفل يمكنه تنفيذ الجزء الحرج (القسم من البرنامج الذي يتطلب وصول حصري إلى المتغير)، وبعدها يقوم بتحرير البيانات بعدما ينهي هذا الجزء. لذلك، لضمان تنفيذ البرنامج السابق بشكل صحيح، يمكن إعادة صياغته باستخدام الأقفال:
 
{| class="wikitable" style="width:100%;"
سطر 160:
=== التوازي على مستوى البت ===
{{مفصلة|توازي على مستوى البت}}
منذ بدايات تكنولوجيا [[دارة التكامل الفائق|دارات التكامل الفائق]] {{إنج|Very-large-scale integration VLSI}} في تصنيع رقائق الحاسوب في [[عقد 1970|سبعينات القرن العشرين]] وحتى حوالي عام 1986، كانت تتم عملية التسريع في هندسة الحاسبات من خلال مضاعفة حجم كلمة الحاسوب، والتي بدورها تزيد كمية المعلومات التي يمكن للمعالج أن يعالجها في كل دورة.<ref>Culler, David E.; Jaswinder Pal Singh and Anoop Gupta (1999). Parallel Computer Architecture - A Hardware/Software Approach. Morgan Kaufmann Publishers, p. 15. ISBN 1-55860-343-3.</ref> زيادة حجم الكلمة يقلل من عدد التعليمات التي يجب على المعالج تنفيذها لأداء عملية على متغيرات حجمها أكبر من طول الكلمة. على سبيل المثال، عند جمع رقمين صحيحين مكونين من 16 بت على معالج 8 بت، فإن المعالج يقوم بجمع أول 8 بت من كل رقم باستخدام تعليمة الجمع، ثم يجمع ثاني 8 بت مع الإعارة من العملية السابقة، وبالتالي فإن معالج 8 بت يحتاج لتعليمتين لإكمال عملية واحدة، بينما معالج 16 بت معالج سيكون قادر على إكمال العملية بتعليمة واحدة.
 
تاريخيا، تم استبدال المعالجات 4-بت بمعالجات 8 بت ثم 16 بت، ثم 32 بت. وبشكل عام فقد وصل هذا الاتجاه إلى نهايته مع إدخال معالجات 32 بت، التي سائدة في الحاسبات العامة لعقدين من الزمن. ولكن ليس إلى غاية وقت قريب (2003-2004)، حيث ظهرت هندسة x86-64، والتي تحوي على معالجات 64 بت وشاع استخدامها.
سطر 185:
موازاة البيانات هي عملية الموازاة المتأصلة في جمل التكرار في البرنامج، التي تركز على توزيع هذه البيانات عبر عقد الحوسبة المختلفة بحيث تتم معالجتها بشكل متواز. "غالبا ما تؤدي موازاة التكرار بصورة مماثلة (ليست بالضرورة مطابقة) إلى تسلسل العمليات أو المهام التي تؤدى على عناصر بيانات ذات هياكل كبيرة." <ref name=Culler124>Culler et al. p. 124.</ref> العديد من التطبيقات العلمية والهندسية تستعمل توازي البيانات.
 
الاعتمادية في حلقات التكرار هي اعتمادية حلقة تكرار على ناتج واحدة أو أكثر من حلقات التكرار السابقة لها. وهذه الاعتمادية في حلقات التكرار تمنع القيام بعمل توزيع لعمليات التكرار. على سبيل المثال، بالنظر إلى الكود التالي الذي يحسب بعض أعداد [[ليوناردو فيبوناتشي|فيبوناتشي]] الأولى :
<div dir=ltr>
<code>
سطر 224:
المعالج متعدد الأنوية {{إنج|Multicore}} هو معالج يتضمن عدة وحدات تنفيذ ("النوى") على نفس الشريحة. هذه المعالجات تختلف عن المعالجات "سوبرسكيلر" {{إنج|Superscalar}}، والتي يمكنها تمرير تعليمات متعددة لكل دورة من سيل واحد من التعليمات (خيط أو thread)؛ على النقيض من ذلك، يمكن للمعالجات متعددة الأنوية تمرير تعليمات متعددة لكل دورة من سيول تعليمات متعددة. كل نواة في المعالج متعدد الأنوية يمكنها أن تكون سوبرسكيلر. ففي كل دورة، ويمكن لكل نواة تمرير تعليمات متعددة من سيل واحد.
 
معالجة متزامنة لعدة خيوط {{إنج|Multithreading}} في وقت واحد (و[[تقنية خيوط المعالجة الفائقة]] لإنتل هي الأكثر شهرة) وشكل مبكر من شبه تعدد الأنوية {{إنج|Pseudo-multicoreism}}. معالج قادر على معالجة متزامنة لعدة خيوط لديه وحدة تنفيذ واحدة ("نواة")، ولكن عندما تكون وحدة التنفيذ خاملة (مثل حالة جلب بيانيات)، فإنها تستخدم في تنفيذ الخيط الثاني. معالج [[آي بي إم]] Cell، المصمم للاستخدام في [[بلاي ستيشن 3|سوني بلاي ستيشن 3]]، هو معالج بارز آخر متعدد الأنوية.
 
==== المعالجة المتعددة المتماثلة ====
سطر 238:
[[ملف:Beowulf.jpg|thumbnail|عتاد مُجمّع ويسمح بتوظيف المعالجات لأداء مهام متوازية في ما يُعرف بـ[[بيولف (حاسوب)|عنقود بياولف]] ]]
 
العنقود {{إنج|Cluster}}، هو مجموعة من أجهزة الحواسيب المتقاربة التي تعمل معا بشكل وثيق، حتى أنه في بعض النواحي تعتبر بمثابة جهاز حاسوب واحد.<ref>[http://www.webopedia.com/TERM/c/clustering.html What is clustering?] Webopedia computer dictionary. Retrieved on November 7, 2007. {{Webarchive|url=http://web.archive.org/web/20170923142310/http://www.webopedia.com:80/TERM/C/clustering.html |date=23 سبتمبر 2017}}</ref> تتكون العناقيد من مجموعة من آلات مستقلة متعددة ومتصلة بواسطة [[شبكة حاسوب|شبكة حاسوبية]]. لا يشترط أن تكون آلات العنقود الواحد متماثلة، ولكن عملية موازنة الحمل فيما بينها تصبح أكثر صعوبة إذا لم تكن كذلك. النوع المتعارف عليه هو [[بياولفبيوولف (حاسوب)|عنقود بياولف]] {{إنج|Beowulf cluster}}، وتمثل مجموعة من أجهزة الحاسوب متعددة ومتطابقة مرتبطة ب[[شبكة محلية]] تعمل بحزمة برتوكولات [[حزمة بروتوكولات الإنترنت]] بوصلات إيثرنت.<ref>[http://www.pcmag.com/encyclopedia_term/0,2542,t=Beowulf&i=38548,00.asp Beowulf definition.] ''PC Magazine''. Retrieved on November 7, 2007. {{Webarchive|url=http://web.archive.org/web/20121010215231/http://www.pcmag.com/encyclopedia_term/0,2542,t=Beowulf&i=38548,00.asp |date=10 أكتوبر 2012}}</ref> قام بتطوير تقنية بياولف كل من [[توماس ستيرلينغ]] و[[دونالد بيكر]]. وتشكل الحواسيب العنقودية الغالبية العظمى من حواسيب قائمة [[توب 500]] لأقوى أنظمة الحواسيب في العالم.<ref>[http://www.top500.org/stats/list/29/archtype Architecture share for 06/2007]. [[توب 500]] Supercomputing Sites. Clusters make up 74.60% of the machines on the list. Retrieved on November 7, 2007. {{وصلة مكسورة|date= يوليو 2017 |bot=JarBot}} {{Webarchive|url=http://web.archive.org/web/20110613202046/http://www.top500.org/stats/list/29/archtype |date=13 يونيو 2011}}</ref>
 
===== المعالجة عالية التوازي =====
سطر 246:
[[ملف:BlueGeneL cabinet.jpg|تصغير|خزانة تحوي مكونات من بلو جين/L، رابع أسرع حاسوب عملاق في العالم وفقا لترتيب نوفمبر [[2008]] TOP500.]]
 
بلو جين/L المعالج عالي التوازي هو خامس أسرع [[حاسوب فائق|حاسوب عملاق]] في العالم وفقا لتصنيف [[توب 500]] ليونيو [[2009]].
 
===== الحوسبة الشبكية =====
سطر 252:
الحوسبة الشبكية {{إنج|Grid computing}} هي الشكل الأكثر انتشارا للحوسبة المتوازية. إنه يستخدم اتصال أجهزة الحاسوب عبر [[إنترنت|الإنترنت]] للعمل على مشكلة معينة. وبسبب انخفاض سرعة تدفق البيانات والبطء التباعد العالي للغاية على شبكة الإنترنت، فإن الحوسبة الشبكية تتعامل عادة فقط مع مشاكل التوازي الحرج. تم إنشاء عدة برمجيات للحوسبة الشبكية، أشهرها:<ref>Kirkpatrick, Scott (January 31, 2003). "Computer Science: Rough Times Ahead". Science, Vol. 299. No. 5607, pp. 668 - 669. DOI: 10.1126/science.1081623</ref> [[ستي@هوم]] و[[فولدنغ@هوم]].
 
معظم برمجيات الحوسبة الشبكية تستخدم برمجيات وسيطة {{إنج|Middleware}}، وهي برمجيات تعمل بين نظام التشغيل والبرمجيات الأخرى لإدارة موارد الشبكة وتوحد الواجهة البرمجية. أكثر البرمجيات الوسيطة للحوسبة الشبكية شيوعا هي [[بنية باركلي التحتية المفتوحة للحوسبة الشبكية|بنية باركلي التحتية المفتوحة للحوسبة شبكية]] {{إنج|Berkeley Open Infrastructure for Network Computing-BOINC}}. في كثير من الأحيان، تقوم برامج الحوسبة الشبكية بإتمام "دورات إضافية"، وأداء عمليات حسابية عندما يكون جهاز الحاسوب خاملا.
 
==== الحواسيب المتوازية المتخصصة ====
سطر 258:
 
===== الحوسبة قابلة لإعادة التشكيل مع FPGA =====
الحوسبة القابلة لإعادة التشكيل هو استخدام [[مصفوفة البوابات المنطقية القابلة للبرمجة|مصفوفات البوابات المنطقية القابلة للبرمجة في الميدان]] {{إنج|Field-Programmable Gate Array-FPGA}} كمعالج مشارك للأغراض العامة للحاسوب. FPGA في جوهره شريحة حاسوب يمكنها إعادة ربط نفسها لمهمة معينة.
 
يمكن برمجة FPGA بلغة وصف الأجهزة [[في إتش دي إل|VHDL]] أو "فيريلوج". لكن البرمجة بهذه اللغات قد تكون مملة، لهذا تم إنشاء عدة لغات من فئة '''C to HDL''' كمحاولة لمحاكاة صياغة ودلالات [[سي (لغة برمجة)|لغة البرمجة سي]]، التي اعتاد عليها معظم المطورين. الأكثر شهرة بين لغات C to HDL هي Mitrion-C و Impulse C و DIME-C و Handel-C. كما يوجد مجموعات فرعية معينة من SystemC مبنية على أساس [[سي++]] يمكن أن تستخدم أيضا لهذا الغرض.
 
قرار [[إي إم دي|أي إم دي]] بفتح تكنولوجية هيبرترانسبورت للمطورين العاديين فتح المجال لتكنولوجيا لإعادة تشكيل الحوسبة عالية الأداء.<ref name="DAmour">D'Amour, Michael R., Chief Operating Officer, DRC Computer Corporation. "Standard Reconfigurable Computing". Invited speaker at the University of Delaware, February 28, 2007.</ref> وفقا إلى مايكل ر. دامور، الرئيس التنفيذي للعمليات في شركة DRC للحوسبة: "في الأول عندما كنا نسير نحو أي إم دي، وصفونا ''بسارقي المأخذ''. والآن يسموننا بشركائهم".<ref name="DAmour"/>
 
===== الحوسبة للأغراض العامة على وحدات المعالجة الرسومية =====
سطر 287:
== البرمجيات ==
=== لغات البرمجة المتوازية ===
من أجل برمجة الحواسيب المتوازية، تم إنشاء لغات البرمجة والمكتبات وواجهات برمجة التطبيقات ونماذج للبرمجة المتوازية. وعموما تنقسم [[لغة برمجة|لغات البرمجة]] إلى فئات استنادا إلى ما تقدمه من الافتراضات حول هندسة الذاكرة و[[ذاكرة مشتركة|الذاكرة المشتركة]] و[[ذاكرة موزعة|الذاكرة الموزعة]]، أو [[ذاكرة مشتركة موزعة|الذاكرة المشتركة الموزعة]]. لغات البرمجة التي تتعامل بذاكرة مشتركة تتواصل عن طريق التلاعب بالمتغيرات في الذاكرة المشتركة. مع الذاكرة الموزعة يستخدم تمرير الرسائل. خيوط بوسيكس {{إنج|POSIX Threads}} و[[أوبن أم بي]] من أكثر واجهات برمجة التطبيقات بذاكرة مشتركة استخداما. في حين أن [[واجهة تمرير الرسائل|إم بي آي]] {{إنج|Message Passing Interface-MPI}} هو نظام تمرير الرسائل الأكثر استخداما على نطاق واسع.<ref>The [http://awards.computer.org/ana/award/viewPastRecipients.action?id=16 Sidney Fernbach Award given to MPI inventor Bill Gropp] refers to MPI as the "the dominant HPC communications interface" {{Webarchive|url=http://web.archive.org/web/20180509081724/https://awards.computer.org/ana/award/viewPastRecipients.action?id=16 |date=09 مايو 2018}}</ref> أحد المفاهيم المستخدمة في كتابة البرامج المتوازية هو مفهوم المستقبل، حيث يعِد جزء واحد من البرنامج بتسليم المسند المطلوب إلى جزء آخر من برنامج في وقت ما في المستقبل.
 
=== الموازاة التلقائية ===
استحداث موازاة تلقائيا لبرنامج متسلسل يقوم بها برنامج ترجمة ([[مصرفمحول (برمجة)برمجي|مترجم-Compiler]]) هي قمة الحوسبة المتوازية. ورغم مرور عقود من عمل الباحثين على المترجمات، إلا أن الحصول على موازاة تلقائيا سجلت نجاح محدود فقط.<ref>Shen, John Paul and Mikko H. Lipasti (2005). ''Modern Processor Design: Fundamentals of Superscalar Processors''. McGraw-Hill Professional. p.&nbsp;561. ISBN 0-07-057064-7. "However, the holy grail of such research - automated parallelization of serial programs - has yet to materialize. While automated parallelization of certain classes of algorithms has been demonstrated, such success has largely been limited to scientific and numeric applications with predictable flow control (e.g., nested loop structures with statically determined iteration counts) and statically analyzable memory access patterns. (e.g., walks over large multidimensional arrays of float-point data)."</ref>
 
المذهب الأساسي في لغات البرمجة المتوازية يبقى إما توازي صريح أو (في أحسن الأحوال) ضمني جزئيا، حيث يعطي المبرمج التوجيهات للمترجم بالموازاة. يوجد عدد قليل من لغات البرمجة المتوازية ضمنيا، مثل "السيزال" و"برلال هاسكل"، و(من أجل FPGA) يستعمل Mitrion-C.
سطر 307:
* [[طريقة مونت كارلو|محاكاة مونتي كارلو]].
* المنطق التوافقي (مثل تقنيات القوة الغاشمة في التشفير).
* الرسم البياني الاجتيازي (مثل [[خوارزمية ترتيب|خوارزميات الترتيب]]).
* البرمجة الديناميكية.
* أساليب التفريع والربط {{إنج|Branch and bound methods}}.
* النماذج الرسومية (مثل الكشف عن نموذج ماركوف المخفي وبناء [[شبكات بايزية|شبكة بايزية]]).
* محاكاة آلة محدودة الأوضاع.
 
== تاريخ ==
[[ملف:ILLIAC 4 parallel computer.jpg|تصغير|ILLIAC 4، "الحاسوب العملاق النكرة".]]
أصول التوازي الصحيح (عمليات مختلفة على بيانات مختلفة-MIMD) يعود إلى لويجي فيديريكو، كونت Menabrea وما قدمه في "وصف مقتضب للمحرك التحليلي الذي اخترعه [[تشارلز بابيج|تشارلز باباج]].<ref>[[Federico Luigi, Conte Menabrea|Menabrea, L. F.]] (1842). [http://www.fourmilab.ch/babbage/sketch.html Sketch of the Analytic Engine Invented by Charles Babbage]. Bibliothèque Universelle de Genève. Retrieved on November 7, 2007. {{Webarchive|url=http://web.archive.org/web/20180729205045/https://www.fourmilab.ch/babbage/sketch.html |date=29 يوليو 2018}}</ref><ref name=PH753>Patterson and Hennessy, p.&nbsp;753.</ref> أدخلت شركة [[آي بي إم]] حاسوب 704 في عام 1954، من خلال المشروع الذي كان جين أمدال أحد المهندسين الرئيسيين فيه. ليصبح أول حاسوب تجاري متاح لاستخدام مجموعة كاملة من الأوامر الحسابية بطريقة تلقائية.<ref>{{مرجع ويب | مسار = http://www.columbia.edu/acis/history/704.html | عنوان = Columbia University Computing History: The IBM 704 | تاريخ الوصول = 2008-01-08 | سنة = 2003 | مؤلف = da Cruz, Frank | ناشر = Columbia University| مسار أرشيف = https://web.archive.org/web/20110514005400/http://www.columbia.edu/acis/history/704.html | تاريخ أرشيف = 14 مايو 2011 }}</ref>
 
في أبريل 1958، ناقش س. جيل (فيرانتي) البرمجة المتوازية، والحاجة إلى التفرع والانتظار.<ref>Parallel Programming, S. Gill, The Computer Journal Vol. 1 #1,
pp2-10, British Computer Society, April 1958.</ref> في عام 1958، ناقش الباحثان جون كوك ودانيال سلوتنيك (العاملين في شركة آي بي إم) استخدام التوازي في العمليات الحسابية العددية للمرة الأولى.<ref name=G_Wilson>{{مرجع ويب | مسار = http://ei.cs.vt.edu/~history/Parallel.html | عنوان = The History of the Development of Parallel Computing | تاريخ الوصول = 2008-01-08 | الأول = Gregory V | الأخير = Wilson | سنة = 1994|ناشر=Virginia Tech/Norfolk State University, Interactive Learning with a Digital Library in Computer Science| مسار أرشيف = https://web.archive.org/web/20181228130250/http://ei.cs.vt.edu/~history/Parallel.html | تاريخ أرشيف = 28 ديسمبر 2018 }}</ref> أدرجت شركة بوروز {{إنج|Burroughs Corporation}} معالج D825 في سنة 1962، وهو معالج حواسيب رباعي يمكنه الوصول إلى 16 وحدات ذاكرة من خلال العارضة التبديل <ref>{{مرجع ويب | مسار = http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=65878 | عنوان = The Power of Parallelism | مؤلف = Anthes, Gry | تاريخ الوصول = 2008-01-08 | تاريخ = November 19, 2001 | عمل = [[Computerworld]]| مسار أرشيف = https://web.archive.org/web/20090106185833/http://www.computerworld.com:80/action/article.do?command=viewArticleBasic&articleId=65878 | تاريخ أرشيف = 06 يناير 2009 | وصلة مكسورة = yes }}</ref> في عام 1967، نشر سلوتنيك وأمدال نقاشا حول جدوى المعالجة المتوازية في مؤتمر جمعيات الاتحاد الأمريكي للمعالجة المعلومات.<ref name=G_Wilson/> ومن خلال هذه المناقشة صيغ قانون أمدال لتحديد الحد الأقصى للسرعة المكتسبة من عملية الموازاة.
 
في عام 1969، قدمت الشركة الأمريكية [[هانيويل|هونيويل]] نظامها الأول مالتيكس، وهو نظام متعدد المعالجات المتماثلة قادر على تشغيل ما يصل إلى ثمانية معالجات بالتوازي.<ref name=G_Wilson/> مشروع C.mmp في سبعينيات القرن العشرين التابع لجامعة كارنيجي ميلون هو أول متعدد المعالجات بمعالجات قليلة".<ref name=PH753/> "إن أول ناقل لوصل عدة معالجات مع مخابئ التطفل {{إنج|Snooping caches}} هو Synapse N+1 كان ذلك في عام 1984." <ref name=PH753/>
 
ويمكن إرجاع الحواسيب المتوازية (تعليمة واحدة على بيانات مختلفة) إلى سبعينيات القرن العشرين. كان الدافع وراء هذا النوع من الحواسيب في وقت مبكر هو توزيع تأخير بوابة التحكم لوحدة المعالجة على تعليمات متعددة.<ref>Patterson and Hennessy, p.&nbsp;749.</ref> في عام 1964، اقترح "سلوتنيك" بناء حاسوب متوازية على نطاق واسع لمختبر لورانس ليفرمور الوطني.<ref name=G_Wilson/> موّل التصميم، الذي كان من أوائل الحواسيب المتوازية،<ref name=G_Wilson/> من قبل سلاح الجو الأمريكي، وسمي "ILLIAC 4". المفتاح في تصميمه كان التوازي العالي نوعا ما، مع ما يصل إلى 256 معالج، والتي تسمح للآلة بالعمل على مجموعات كبيرة من البيانات في ما عرف لاحقا بالمعالجة المتجهية. ومع ذلك، 4 ILLIAC سمي "أكثر الحواسيب العملاقة المجهولة"، وذلك لأن المشروع لم يكن سوى أحد الأربعة اكتمالا، ولكن استغرق 11 سنوات، وتكلفة فاقت أربع مرات تقريبا عن التقديرات الأصلية.<ref>Patterson and Hennessy, pp.&nbsp;749–50: "Although successful in pushing several technologies useful in later projects, the ILLIAC IV failed as a computer. Costs escalated from the $8&nbsp;million estimated in 1966 to $31&nbsp;million by 1972, despite the construction of only a quarter of the planned machine&nbsp;... It was perhaps the most infamous of supercomputers. The project started in 1965 and ran its first real application in 1976."</ref> وأخيرا عندما صار على استعداد للتشغيل الحقيقي في التطبيق الأول في عام 1976، كانت قد تفوقت عليه حواسيب عملاقة تجارية مثل [[كراي-1|كراي 1]].
 
==دماغ بيولوجي كحاسوب عال التوازي==
سطر 373:
 
[[تصنيف:حوسبة متوازية]]
[[تصنيف:حوسبة علمية]]
[[تصنيف:حوسبة متزامنة]]
[[تصنيف:حوسبة موزعة]]