حوسبة متوازية: الفرق بين النسختين
[نسخة منشورة] | [نسخة منشورة] |
تم حذف المحتوى تمت إضافة المحتوى
محمد القنة (نقاش | مساهمات) |
ط قوالب الصيانة و/أو تنسيق باستخدام أوب (12023) |
||
سطر 1:
{{أنماط البرمجة}}
'''الحوسبة المتوازية''' {{
للحوسبة المُتوازية عدة مستويات مختلفة:
* التوازي على مستوى البت {{
* التوازي على مستوى التعليمات.
* التوازي على مستوى البيانات.
سطر 10:
استخدم التوازي لسنوات عديدة، وخاصة في ال[[حوسبة عالية الأداء]]، ولكن الاهتمام به ازداد أكثر في الآونة الأخيرة بسبب العوائق المادية التي تحول دون توسيع حجم العمليات المعالجة.<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."</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 ... 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."</ref>
يُمكن أن تُصنّف الحواسيب المتوازية وفقًا لتصنيف المستوى الذي يدعم العتاد فيه عملية الموازاة. فالحواسيب مُتعددة المُعالجات أو متعددة الأنوية تحتوي على عناصر معالجة متعددة داخل جهاز واحد، في حين أن [[عنقود (حوسبة)|العناقيد (clusters)]]، و[[معالج متوازي هائل|المعالجات المتوازية الهائلة (MPPS)]]، ومصفوفات الحواسيب تستخدم عدة حواسيب للعمل على نفس المهمة. تُستخدم هندسة الحواسيب المتوازية المتخصصة أيضا في بعض الأحيان في المُعالجات التقليدية لتسريع أداء مهام محددة.
تُعتبر كتابة البرامج الموجهة للحواسيب المتوازية أكثر صعوبة من البرامج ذات المهام التسلسلية، <ref>Patterson, David A. and John L. Hennessy (1998). ''Computer Organization and Design'', Second Edition, Morgan Kaufmann Publishers, p. 715. ISBN 1-55860-428-6.</ref> لأن توازي المهام يسمح بظهور أنواع جديدة محتملة من [[خطأ برمجي|الأخطاء البرمجية]]، والتي يُعتبر مشكلة '''[[حالة تعارض]]''' أحد أشهر أمثلتها.
عادة ما تكون الاتصالات والتزامن بين المهام الفرعية المُختلفة إحدى أكبر العقبات أمام الحصول على برامج متوازية عالية الأداء. يخضع مقدار [[تسريع|التسريع]] في برنامج معين نتيجة لعملية موازة ل[[قانون أمدال]].
سطر 30:
=== قانون أمدال، وقانون غوستافسون ===
{{
[[ملف:AmdahlsLaw ar.png|تصغير|300بك|تمثيل رسومي ل[[قانون أمدال]]. مقدار تسريع برنامج (بعملية الموازاة) هو محدود بكم أجزاء البرنامج التي يمكنها العمل بشكل متواز. على سبيل المثال، إذا أمكن تشغيل 90% من البرنامج بشكل متواز، فإن الحد النظري الأقصى للتسريع (باستخدام الحوسبة المتوازية) سيكون بعشر مرات مهما كان عدد المعالجات.]]
بنظرة مثالية، فإن مقدار التسريع الناتج عن عملية الموازاة سيكون خطيا، أي بمضاعفة عدد عناصر المعالجة ينبغي خفض وقت التشغيل إلى النصف، وبمضاعفته مرة أخرى ينبغي خفض وقت التنفيذ إلى النصف مرة أخرى. ومع ذلك، عدد قليل جدا من الخوارزميات المتوازية تحقق مقدار التسريع المثالي. فمعظمها لديها مقدار تسريع قريب من مقدار التسريع المثالي عند استخدام أعداد قليلة من عناصر المعالجة، والذي يتحول إلى قيمة ثابتة عند استخدام عدد أكبر من عناصر المعالجة.
إن مقدار التسريع المحتمل لخوارزمية في بيئة حوسبة متوازية تحسب باستخدام قانون أمدال، والذي وضعه [[جين أمدال]] في [[عقد 1960|ستينيات القرن العشرين]].<ref>Amdahl, G. (April 1967) "The validity of the single processor approach to achieving large-scale computing capabilities". In ''Proceedings of AFIPS Spring Joint Computer Conference'', Atlantic City, N.J., AFIPS Press, pp. 483–85.</ref> والذي ينص على أن أي جزء صغير من البرنامج لا يمكن موازاته سوف يحد من مقدار التسريع الإجمالي المتاح بعملية الموازاة. أي مشكلة رياضية أو هندسية كبيرة عادة ما تتألف من عدة أجزاء قابلة للموازاة وأجزاء أخرى غير قابلة للموازاة (أجزاء متسلسلة). وتعطى هذه العلاقة من المعادلة :
:<math>S = \frac{1}{1 - P}</math>
سطر 41:
حيث '''S''' هو مقدار تسريع البرنامج (بصفته عاملا من عوامل وقت تنفيذ الخوارزمية التسلسلية الأصلية)، و'''P''' هو الجزء القابل للموازاة. إذا كان الجزء غير القابل للموازاة من برنامج يستهلك 10% من وقت التنفيذ، فإنه من غير الممكن أن نحصل على مقدار تسريع أكثر من عشرة أضعاف، بغض النظر عن عدد المعالجات التي تم إضافتها. وهذا يضع حدا أعلى للفائدة من إضافة وحدات تنفيذ متوازية أكثر. "عندما لا يمكن تقسيم مهمة بسبب قيود تمنع عملية التقسيم، فإن تطبيق مزيد من الجهد ليس له تأثير على الجدول الزمني. فحمل الطفل يأخذ تسعة أشهر ولا علاقة لذلك بعدد النسوة".<ref>Brooks, Frederick P. Jr. ''The Mythical Man-Month: Essays on Software Engineering''. Chapter 2 – The Mythical Man Month. ISBN 0-201-83595-9</ref>
[[قانون غوستافسون]] هو قانون آخر في هندسة الحاسبات، ويرتبط ارتباطا وثيقا بقانون أمدال. ويمكن صياغته على النحو التالي :
[[ملف:Optimizing-different-part-ar.svg|تصغير|300بك|نفترض أن مهمة من جزأين مستقلين أ وب، ب يأخذ ما يقارب من 25٪ من الوقت الكامل للحساب. مع الجهد، قد يكون المبرمج قادرا على جعل هذا الجزء خمس مرات أسرع، ولكن هذا يقلل من الوقت الكامل للحساب إلا قليلا. بالمقابل، قد لا يحتاج المرء لأداء لجهد كبير لجعل الجزء أ أسرع مرتين. وهذا سيجعل الحساب أسرع بكثير من أي استفادة مثلى للجزء ب، حتى ولو حصلت على أكبر تسريع للجزء ب (5 مرات مقابل 2).]]
سطر 50:
=== الاعتمادية ===
فهم الاعتمادية على البيانات أمر أساسي في تنفيذ [[خوارزمية متوازية|الخوارزميات المتوازية]]. لا يمكن تشغيل برنامج بسرعة أكبر من أطول سلسلة من العمليات الحسابية المعتمدة على بعضها (المعروف باسم [[طريقة المسار الحرج|المسار الحرج]])، لأن الحسابات التي تعتمد على حسابات سابقة في السلسلة يجب أن تنفذ بالترتيب. ومع ذلك، فإن معظم الخوارزميات لا تتكون من مجرد سلسلة طويلة من العمليات الحسابية المعتمدة على بعضها ؛ عادة ما تكون هناك فرص لتنفيذ بالتوازي عمليات حسابية مستقلة.
ليكن P<sub>i</sub> و P<sub>j</sub> جزأين من برنامج. شروط برنشتاين <ref>Bernstein, A. J. (October 1966). "Program Analysis for Parallel Processing,' IEEE Trans. on Electronic Computers". EC-15, pp. 757–62.</ref> تصف متى يمكن تنفيذ جزأين مستقلين بشكل متواز. لكل ''P''<sub>''i''</sub>، افرض ان ''I''<sub>''i''</sub> يمثل كافة [[متغير (علم الحاسوب)|المتغيرات]] المدخلة و''O''<sub>''i''</sub> المتغيرات المخرجة، وكذلك الأمر مع ''P''<sub>''j''</sub>. فإن ''P'' <sub>''i''</sub> و''P''<sub>''j''</sub> مستقلان إذا حققا الشروط التالية:
سطر 85:
=== حالة السباق واستبعاد التشارك والتزامن والتباطؤ في التوازي ===
في برنامج مواز غالبا ما تسمى المهام الفرعية [[خيط (حاسوب)|خيوطا]] {{
غالبا ما تحتاج الخيوط إلى تحديث بعض المتغيرات مشتركة بينها. يمكن ترتيب التعليمات المشتركة بين البرنامجين بأي ترتيب. على سبيل المثال، البرنامج التالي :
سطر 104:
|}
إذا تم تنفيذ التعليمة 1ب بين 1أ و3أ، أو إذا تم تنفيذ التعليمات 1أ بين 1ب و3ب، سيقوم البرنامج بإنتاج بيانات غير صحيحة. وهذا هو المعروف باسم [[حالة سباق|حالة السباق]] {{
{| class="wikitable" style="width:100%;"
سطر 133:
كثير من البرامج المتوازية تتطلب تزامنا بين مهامها الفرعية، وهذا يتطلب استخدام حاجز. والذي عادة ما ينفذ باستخدام قفل برمجي. فئة من الخوارزميات، تعرف [[خوارزميات إقفال-تحرير وانتظار-تحرير|بإقفال-تحرير وانتظار-تحرير]]، تتجنب استخدام الأقفال والحواجز تماما. ولكن هذا النهج صعب التنفيذ غالبا ويتطلب تصميم تركيبة بيانات بشكل صحيح.
لا تؤدي كل عمليات الموازاة إلى التسريع. عموما، كلما قسمت المهام إلى خيوط أكثر فاكثر، فإن تلك الخيوط ستستهلك جزء زائد من الوقت في التواصل مع بعضهم البعض. في نهاية المطاف، فإن الوقت الزائد من عملية الاتصال يهيمن على الوقت الذي يستغرقه حل المشكلة، وكذلك عملية الموازاة (أي تقسيم عبء العمل على خيوط أكثر) تزيد بدلا من أن تقلل من مقدار الوقت المطلوب لانتهاء. يعرف هذا ب[[تباطؤ التوازي]] {{
=== توازي الحبيبات الناعمة والحبيبات الخشنة والمربك ===
غالبا ما تصنف التطبيقات وفقا لمدى حاجة المهام الفرعية للمزامنة أو التواصل مع بعضها البعض. يظهر التطبيق توازي الحبيبات الناعمة {{
=== نماذج تناسق ===
[[ملف:Leslie Lamport.jpg|تصغير|[[ليسلي لامبورت]] أول من عرف التناسق المتسلسل.]]
يجب أن يكون للغات البرمجة المتوازية ولأجهزة الحاسوب المتوازية نموذج تناسق (المعروف أيضا باسم نموذج الذاكرة). نموذج التناسق {{
واحد من نماذج التناسق هو نموذج "[[ليسلي لامبورت]]" للتناسق المتسلسل. التناسق المتسلسل هو خاصية للبرنامج المتوازي الذي ينتج عن تنفيذه بشكل متواز نفس النتائج إذا نفذ بشكل تسلسلي. بشكل أدق، يكون البرنامج متطابق تسلسليا إذا "... نتائج أي تنفيذ هي نفسها إذا ما نفذت كل العمليات على كل المعالجات بترتيب متسلسل ما، والعمليات في كل معالج تظهر في هذا التسلسل بالترتيب المحدد من قبل البرنامج".<ref>Lamport, Leslie (September 1979). "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs", IEEE Transactions on Computers, C-28,9, pp. 690–91.</ref>
''ذاكرة معاملات البرنامج'' هي نوع شائع من نماذج التناسق. تستعمل ذاكرة معاملات البرنامج مفهوما، استعير من نظريات قواعد البيانات وتطبيقها، هو [[عملية ذرية|''مفهوم المعاملات الموحدة'']] {{
رياضيا، يمكن تمثيل هذه النماذج بعدة طرق. [[شبكة بيتري]]، الذي تم عرضها في أطروحة الدكتوراه ل[[آدم كارل بيتري]] سنة 1962، كانت محاولة مبكرة لتدوين قواعد نماذج التناسق. بعدها تم بناء نظرية تدفق البيانات، وتم إنشاء هندسة تدفق البيانات كتطبيق عملي لفكرة نظرية تدفق البيانات. بدأت في أواخر [[عقد 1970|سبعينات القرن العشرين]]، حيث تم تطوير جبر العمليات مثل حسابات أنظمة الاتصالات وعمليات الاتصال التسلسلية للسماح بالتفكير بشكل جبري حول نظم مكونة من عناصر متفاعلة. إضافات جديدة إلى عائلة جبر العمليات، مثل π-calculus الذي أضاف إمكانية التفكير في طبولوجيا ديناميكية. المنطق مثل Lamport's TLA+ والنماذج الرياضية مثل التعقب ومخططات الأحداث الفاعلة، طورت أيضا لوصف سلوك النظم المتنافسة.
=== تصنيف فلين ===
{{
قام [[مايكل ج. فلين]] بإنجاز واحدة من أوائل نظم التصنيف للحاسبات والبرنامج المتوازية (والمتسلسلة)، والتي تعرف الآن باسم [[تصنيف فلين]] {{
{{تصنيف فلين}}
تصنيف تعليمة واحدة على معلومة واحدة {{
وفقا ل[[ديفيد باترسون]] و[[جون هينيسي]] فإن "بعض الآلات الهجينة من هذه الفئات، وبالطبع أن هذه النماذج الكلاسيكية قد عمر طويلا لأنها بسيطة وسهلة الفهم، وتعطي تقريبا أوليا جيد. وهو أيضا المخطط الأكثر استعمال وعلى نطاق واسع، ربما بسبب سهولة فهمه".<ref>Patterson and Hennessy, p. 748.</ref>
سطر 160:
== أنواع التوازي ==
=== التوازي على مستوى البت ===
{{
منذ بدايات تكنولوجيا [[دارات التكامل الفائق]] {{
تاريخيا ، تم استبدال المعالجات 4-بت بمعالجات 8 بت ثم 16 بت ، ثم 32 بت. وبشكل عام فقد وصل هذا الاتجاه إلى نهايته مع إدخال معالجات 32 بت، التي سائدة في الحاسبات العامة لعقدين من الزمن. ولكن ليس إلى غاية وقت قريب (2003-2004)، حيث ظهرت هندسة x86-64 ، والتي تحوي على معالجات 64 بت وشاع استخدامها.
سطر 178:
المعالجات الحديثة لديها خطوط أنابيب متعددة المراحل. كل مرحلة في خط الأنابيب توافق عملا مختلفا يقوم به المعالج على التعليمات في هذه المرحلة؛ المعالج الذي يحوي ن مرحلة في خط أنابيب يمكن أن ينجز حتى ن تعليمة مختلفة في مراحل مختلفة. وتعد المعالجات من نوع RISC مثال على المعالجات التي تعمل بنظام خطوط الأنابيب، وفي هذا النوع من المعالجات خمس مراحل: جلب التعليمة، وفك الشفرة، وتنفيذها، والوصول إلى الذاكرة، وكتابة النتائج. المعالج [[بنتيوم 4]] له 35 مراحل في خط الأنابيب.<ref>Yale Patt (April 2004). "[http://users.ece.utexas.edu/~patt/Videos/talk_videos/cmu_04-29-04.wmv The Microprocessor Ten Years From Now: What Are The Challenges, How Do We Meet Them?] (wmv). Distinguished Lecturer talk at [[Carnegie Mellon University]]. Retrieved on November 7, 2007.</ref>
[[ملف:Superscalarpipeline.svg|تصغير|300بك|سوبرسكيلر معالج بخمس مراحل المتوالية، وقادر على تمرير تعليمتين اثنتين في كل دورة. ويمكن أن تكون تعليماتين في كل مرحلة من خط الانابيب ، ليصل مجموعها إلى 10 تعليمات (كما هو موضح باللون الأخضر) يتم تنفيذها في وقت واحد.]]
بالإضافة إلى الموازاة على مستوى التعليمات باستخدام خط الأنابيب، يمكن لبعض المعالجات معالجة أكثر من تعليمة في نفس الوقت. تعرف بالمعالجات سوبرسكيلر. تجمع التعليمات معا إذا لم يكن هناك أي تبعية في البيانات فيما بينها. تعد خوارزمية "سكوربوردنج" وخوارزمية "توماسلو" (التي تشبه سكوربوردنج ولكن تقوم بإعادة تسمية السجلات) من أكثر الأساليب شيوعا لتنفيذ التعليمات بدون ترتيب في تنفيذ الموازاة على مستوى التعليمة.
سطر 201:
=== توازي المهام ===
{{
موازاة المهام هي صفة البرامج المتوازية التي تحوي "حسابات مختلفة تماما يمكن أن تنفذ في نفس المجموعة أو في مجموعة مختلفة من البيانات".<ref name=Culler124/> وهذا يتناقض مع موازاة البيانات، حيث يتم تنفيذ نفس العملية الحسابية على نفس المجموعة أو مجموعات مختلفة من البيانات. توازي المهام لا تتناسب عادة مع حجم المشكلة.<ref name=Culler125/>
== العتاد ==
=== الذاكرة والاتصالات ===
تكون الذاكرة الرئيسية في أجهزة الحواسيب المتوازية إما [[ذاكرة مشتركة]] (تشترك جميع عناصر المعالجة في مساحة تخزينية واحدة) أو [[ذاكرة موزعة]] (التي يكون فيها لكل عنصر من عناصر التجهيز مساحة تخزينية محلية خاصة به).<ref name=PH713>Patterson and Hennessy, p. 713.</ref> ومصطلح الذاكرة الموزعة يعني أن الذاكرة موزعة منطقيا، ولكن غالبا ما يعني أيضا أنها موزعة ماديا. [[ذاكرة مشتركة موزعة|الذاكرة المشتركة الموزعة]] و[[ذاكرة افتراضية|الذاكرة الافتراضية]] تجمعان بين النهجين، حيث أن كل عنصر معالجة يملك ذاكرة محلية خاصة به وسبيلا للوصول إلى ذاكرة على معالجات غير المحلية. الوصول للذاكرة المحلية عادة ما يكون أسرع من الوصول إلى الذاكرة غير المحلية.
[[ملف:Numa ar.png|تصغير|760بك|صورة منطقية لبنية الذاكرة غير الموحدة {{
هندسة الحواسيب التي يكون فيها كل عنصر من الذاكرة الرئيسية متوفرا بنفس المدة والتدفق تعرف بال[[ذاكرة موحدة الوصول]] {{
تستفيد نظم الحاسوب من مخزن صغير وسريع بقرب من المعالج لتخزين مؤقت لنسخ من قيم الذاكرة. أما أنظمة الحواسيب المتوازية فتواجه صعوبات مع هذه المخازن التي قد تخزن القيمة نفسها في أكثر من مكان واحد، مع إمكانية تنفيذ غير صحيح للبرنامج. أجهزة الحاسوب هذه تتطلب نظام تخزين متناسق، والذي يتتبع القيم المخزنة مؤقتا ويعمل على تطهير استراتيجيا لها، وبالتالي ضمان تنفيذ صحيح للبرنامج. قنوات التطفل هي واحدة من أكثر الطرق شيوعا لتتبع القيم التي يتم الوصول إليها (وبالتالي ينبغي تطهيرها). تصميم نظام تخزين متناسق عالي الكفاءة وكبير هي مشكلة صعبة للغاية في مجال هندسة الحواسيب. ونتيجة لذلك، فإن هندسة الحواسيب بذاكرة مشتركة لا تتناسب جيدا مع أنظمة الذاكرة الموزعة.<ref name=PH713/>
يمكن تنفيذ الاتصالات بين الذاكرة والمعالجات وفيما بين المعالجات باستعمال أجهزة بطرق متعددة، بما في ذلك عبر ذاكرة مشتركة أو عارضة تبديل {{
تحتاج الحواسيب المتوازية (المبنية على أساس شبكات الربط) إلى نوع من التوجيه لتمكينها من تمرير الرسائل بين العقد التي لا علاقة مباشرة بينها. من المرجح أن تكون الوسيلة المستخدمة للاتصال بين المعالجات هي التسلسل الهرمي في الأجهزة الكبيرة متعددة المعالجات.
=== فئات الحواسيب المتوازية ===
يمكن تصنيف الحواسيب المتوازية وفقا للمستوى الذي يدعم فيه الجهاز عملية التوازي. هذا التصنيف هو على نطاق واسع مماثل للمسافة بين العقد الحوسبة. كلاهما لا يستبعد بعضها البعض، على سبيل المثال، عناقيد الحواسيب متعددة المعالجات المتماثلة هي شائعة نسبيا.
==== حوسبة متعددات الأنوية ====
{{
المعالج متعدد الأنوية {{
معالجة متزامنة لعدة خيوط {{
==== المعالجة المتعددة المتماثلة ====
{{
المعالجات المتعددة المتماثلة {{
==== الحوسبة الموزعة ====
{{
الحاسوب الموزع (المعروف أيضا بالمعالجات موزعة الذاكرة) هو نظام حاسوبي موزع الذاكرة ترتبط فيه العناصر المعالجة من خلال شبكة. الحواسيب الموزعة قابلة للتزايد.
===== الحوسبة العنقودية =====
{{
[[ملف:Beowulf.jpg|thumbnail|عنقود وبياولف.]]
العنقود {{
===== المعالجة عالية التوازي =====
{{
المعالج عال التوازي {{
[[ملف:BlueGeneL cabinet.jpg|تصغير|خزانة تحوي مكونات من بلو جين/L، رابع أسرع حاسوب عملاق في العالم وفقا لترتيب نوفمبر [[2008]] TOP500.]]
بلو جين/L المعالج عالي التوازي هو خامس أسرع [[حاسوب عملاق]] في العالم وفقا لتصنيف [[TOP500]] ليونيو [[2009]].
===== الحوسبة الشبكية =====
{{
الحوسبة الشبكية {{
معظم برمجيات الحوسبة الشبكية تستخدم برمجيات وسيطة {{
==== الحواسيب المتوازية المتخصصة ====
توجد في الحوسبة المتوازية أجهزة متوازية متخصصة لم تلفت إليها الاهتمام بعد. في حين أنه من غير تعيين الميادين، فإنها تميل إلى تطبيق على عدد قليل فقط من فئات المشاكل التوازي.
===== الحوسبة قابلة لإعادة التشكيل مع FPGA =====
الحوسبة القابلة لإعادة التشكيل هو استخدام [[مصفوفات البوابات المنطقية القابلة للبرمجة في الميدان]] {{
يمكن برمجة FPGA بلغة وصف الأجهزة [[في إتش دي إل|VHDL]] أو "فيريلوج". لكن البرمجة بهذه اللغات قد تكون مملة، لهذا تم إنشاء عدة لغات من فئة '''C to HDL''' كمحاولة لمحاكاة صياغة ودلالات [[لغة البرمجة سي]]، التي اعتاد عليها معظم المطورين. الأكثر شهرة بين لغات C to HDL هي Mitrion-C و Impulse C و DIME-C و Handel-C. كما يوجد مجموعات فرعية معينة من SystemC مبنية على أساس [[سي++]] يمكن أن تستخدم أيضا لهذا الغرض.
سطر 266:
===== الحوسبة للأغراض العامة على وحدات المعالجة الرسومية =====
{{
[[ملف:NvidiaTesla.jpg|تصغير|بطاقة إنفيديا تسلا غبغبو.]]
الحوسبة للأغراض العامة على [[وحدة معالجة الرسوميات]] {{
في البدايات، استخدمت برمجيات GPGPU واجهات المكتبات الرسومية العادية لتنفيذ البرامج. ومؤخرا ظهرت لغات برمجة ومنصات جديدة بنيت لاستعمال المعالجات الرسومية لأمور عامة غير الغرض الأصلي لها. خاصة بعد أن أصدر كل من [[إنفيديا]] وأي إم دي بيئات للبرمجة هي كودا (CUDA) وسي.تي.إم (CTM) على التوالي. إضافة إلى لغات أخرى لبرمجة المعالجات الرسومية مثل BrookGPU و PeakStream و RapidMind. وقد أصدرت إنفيديا أيضا منتجات محددة لإجراء العمليات الحسابية في سلسلة تسلا (Tesla series).
سطر 282:
[[ملف:Cray-1-p1010221.jpg|تصغير|كراي - 1 هو المعالج المتجهي الأكثر شهرة.]]
المعالج المتجهي {{
ما بين سبعينيات وثمانينيات القرن العشرين، أصبحت شركة كراي مشهورة بحواسيبها متجهية المعالجة. ومع ذلك ، فإن المعالجات المتجهية مثلها مثل وحدات المعالجة المركزية وأنظمة الحواسيب الكاملة اختفت عموما. مجموعات تعليمات المعالجات الحديثة تشمل بعض التعليمات لمعالجة المتجهات مثلما هو الشأن مع AltiVec و SSE.
سطر 288:
== البرمجيات ==
=== لغات البرمجة المتوازية ===
من أجل برمجة الحواسيب المتوازية، تم إنشاء لغات البرمجة والمكتبات وواجهات برمجة التطبيقات ونماذج للبرمجة المتوازية. وعموما تنقسم [[لغة برمجة|لغات البرمجة]] إلى فئات استنادا إلى ما تقدمه من الافتراضات حول هندسة الذاكرة و[[ذاكرة مشتركة|الذاكرة المشتركة]] و[[ذاكرة موزعة|الذاكرة الموزعة]]، أو [[ذاكرة مشتركة موزعة|الذاكرة المشتركة الموزعة]]. لغات البرمجة التي تتعامل بذاكرة مشتركة تتواصل عن طريق التلاعب بالمتغيرات في الذاكرة المشتركة. مع الذاكرة الموزعة يستخدم تمرير الرسائل. خيوط بوسيكس {{
=== الموازاة التلقائية ===
سطر 305:
* الطرق الطيفية (مثل كولي-توكي تحويل فورييه السريع).
* مشاكل ن-هيئة (مثل محاكاة بارنز-هت).
* مشاكل الشبكة البنائية {{
* مشاكل الشبكة غير المنظمة (مثل الموجودة في [[طريقة العناصر المنتهية|تحليل العناصر المحدودة أو المنتهية]]).
* [[طريقة مونت كارلو|محاكاة مونتي كارلو]].
سطر 311:
* الرسم البياني الاجتيازي (مثل [[خوارزميات الترتيب]]).
* البرمجة الديناميكية.
* أساليب التفريع والربط {{
* النماذج الرسومية (مثل الكشف عن نموذج ماركوف المخفي وبناء [[شبكات بايزية|شبكة بايزية]]).
* محاكاة آلة محدودة الأوضاع.
سطر 317:
== تاريخ ==
[[ملف: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.</ref><ref name=PH753>Patterson and Hennessy, p. 753.</ref> أدخلت شركة [[آي بي إم]] حاسوب 704 في عام 1954، من خلال المشروع الذي كان جين أمدال أحد المهندسين الرئيسيين فيه. ليصبح أول حاسوب تجاري متاح لاستخدام مجموعة كاملة من الأوامر الحسابية بطريقة تلقائية.<ref>{{cite web | url = http://www.columbia.edu/acis/history/704.html | title = Columbia University Computing History: The IBM 704 | accessdate = 2008-01-08 | year = 2003 | author = da Cruz, Frank | publisher = Columbia University}}</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>{{cite web | url = http://ei.cs.vt.edu/~history/Parallel.html | title = The History of the Development of Parallel Computing | accessdate = 2008-01-08 | first = Gregory V | last = Wilson | year = 1994|publisher=Virginia Tech/Norfolk State University, Interactive Learning with a Digital Library in Computer Science}}</ref> أدرجت شركة بوروز {{
في عام 1969 ، قدمت الشركة الأمريكية [[هونيويل]] نظامها الأول مالتيكس، وهو نظام متعدد المعالجات المتماثلة قادر على تشغيل ما يصل إلى ثمانية معالجات بالتوازي.<ref name=G_Wilson/> مشروع C.mmp في سبعينيات القرن العشرين التابع لجامعة كارنيجي ميلون هو أول متعدد المعالجات بمعالجات قليلة".<ref name=PH753/> "إن أول ناقل لوصل عدة معالجات مع مخابئ التطفل {{
ويمكن إرجاع الحواسيب المتوازية (تعليمة واحدة على بيانات مختلفة) إلى سبعينيات القرن العشرين. كان الدافع وراء هذا النوع من الحواسيب في وقت مبكر هو توزيع تأخير بوابة التحكم لوحدة المعالجة على تعليمات متعددة.<ref>Patterson and Hennessy, p. 749.</ref> في عام 1964 ، اقترح "سلوتنيك" بناء حاسوب متوازية على نطاق واسع لمختبر لورانس ليفرمور الوطني.<ref name=G_Wilson/> موّل التصميم، الذي كان من أوائل الحواسيب المتوازية،<ref name=G_Wilson/> من قبل سلاح الجو الأمريكي، وسمي "ILLIAC 4". المفتاح في تصميمه كان التوازي العالي نوعا ما، مع ما يصل إلى 256 معالج، والتي تسمح للآلة بالعمل على مجموعات كبيرة من البيانات في ما عرف لاحقا بالمعالجة المتجهية. ومع ذلك، 4 ILLIAC سمي "أكثر الحواسيب العملاقة المجهولة"، وذلك لأن المشروع لم يكن سوى أحد الأربعة اكتمالا، ولكن استغرق 11 سنوات، وتكلفة فاقت أربع مرات تقريبا عن التقديرات الأصلية.<ref>Patterson and Hennessy, pp. 749–50: "Although successful in pushing several technologies useful in later projects, the ILLIAC IV failed as a computer. Costs escalated from the $8 million estimated in 1966 to $31 million by 1972, despite the construction of only a quarter of the planned machine ... It was perhaps the most infamous of supercomputers. The project started in 1965 and ran its first real application in 1976."</ref> وأخيرا عندما صار على استعداد للتشغيل الحقيقي في التطبيق الأول في عام 1976، كانت قد تفوقت عليه حواسيب عملاقة تجارية مثل [[كراي 1]].
|