1 / 30

البرمجة التفرعية

البرمجة التفرعية. الجلسة الأولى. البرامج التسلسلية. جرى تقليديَا بناء وتصميم البرمجيات لتعمل بطريقة تسلسلية: صممت ليجري تشغيلها على حواسيب وحيدة المعالج .(Single CPU) تقسم البرامج إلى أجزاء واضحة من التعليمات التسلسلية. يجري تنفيذ التعليمات التسلسلية واحدة تلو الأخرى.

teresa
Download Presentation

البرمجة التفرعية

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. البرمجة التفرعية الجلسة الأولى Eng. ramimahfoud http://irami.im

  2. البرامج التسلسلية جرى تقليديَا بناء وتصميم البرمجيات لتعمل بطريقة تسلسلية: • صممت ليجري تشغيلها على حواسيب وحيدة المعالج .(Single CPU) • تقسم البرامج إلى أجزاء واضحة من التعليمات التسلسلية. • يجري تنفيذ التعليمات التسلسلية واحدة تلو الأخرى. • يجري تنفيذ تعليمة واحدة فقط في نفس اللحظة. Eng. rami mahfoud http://irami.im

  3. البرامج التفرعية • يمكن تبسيط مفهوم الحساب التفرعي بالقول أنه مرتبط بالاستخدام المتزامن لعدة مصادر حساب من أجل حل مسألة : • يعتمد لانجازه على استخدام عدة معالجات .(Multiple CPUs) • يجري تقسيم المسألة إلى أجزاء منفصلة واضحة ويمكن حلها بشكل مستقل . • يمكن أيضًا تقسيم كل جزء من الأجزاء السابقة إلى سلسلة من التعليمات التسلسلية. • يجري تنفيذ تعليمات كل جزء بشكل متزامن على عدة معالجات بنفس الوقت. Eng. ramimahfoud http://irami.im

  4. أسباب ظهورها ظهرت فكرة البرمجة التفرعية من الحاجة إلى تسريع عمليات الحساب، حيث أن البرمجة التسلسلية لم تستطع أن تعطي حلول لبعض المسائل(مثل التبؤ الجوي، دراسة حركة الأجرام السماوية، فك التشفير ...) بزمن مقبول. وهذا لا يعني أن المسائل إما أن تكون ذات طبيعة تسلسلية أو ذات طبيعة تفرعية، بل من الممكن أن تكون المسألة ذات طبيعة تسلسلية وتفرعية معًا، وعندها نفاضل بين أسلوبي البرمجة للحصول على الحل بالأسلوب لأمثل. Eng. rami mahfoud http://irami.im

  5. خصائص المسائل التفرعية • تتمتع المسألة الحسابية المدروسة بعدة مواصفات تعكس ما يلي: • القدرة على تجزئة المسألة إلى أجزاء منفصلة من الممكن حلها بشكل متزامن. • القدرة على تنفيذ عدة تعليمات بنفس الوقت. • حل المسألة بوقت أقل عند استخدام عدة مصادر للحساب مقارنة بحالة استخدام مصدر حساب وحيد. • يعتبر الحساب التفرعي تطويرًا للحساب التسلسلي وهو محاولة لمحاكاة ما يحدث في الطبيعة في واقع الأمر حيث تجري عدة أحداث مترابطة فيما بينها في نفس الوقت بد ً لا من أن تحدث تسلسليًا. مثل ( خط تجميع آلي - حركة الطبقات المكونة للقشرة الأرضية. ) Eng. rami mahfoud http://irami.im

  6. Example: Weather Forecasting مثال: التنبوء الجوي • يمكن نمذجة الغلاف الجوي بتقسيمه إلى خلايا ثلاثية الأبعاد وتجري الحسابات على مستوى كل خلية بشكل متكرر لمحاكاة عملية مرور الوقت. • إذا أخذنا الغلاف الجوي المحيط بالأرض حتى ارتفاع 10ميل، فيمكن تقسيمه إلى خلايا من الأبعاد التالية: • mile X 1 mile X 1 mile يبلغ عدد الخلايا 5x 108 • إذا افترضنا أن كل عملية حساب تحتاج إلى 200 عملية فاصلة عائمة floating point operations ليتم انجازها فمن أجل مرحلة واحدة من مراحل الحساب فإننا نحتاج إلى تنفيذ حوالي 1011 عملية فاصلة عائمة • فبالتالي من أجل التنبوء حول حالة الجو خلال فترة سبعة أيام القادمة على شكل فترات يفصل بينها مدة دقيقة واحدة، فإننا نحتاج إلى تنفيذ 1015عملية فاصلة عائمة في الثانية. • إذا استخدامنا حاسوب قادر على تنفيذ Gflops 10 فإننا نحتاج لانجاز عمليات الحساب لزمن قدره 105 ثانية .( أي 27 ساعة ) Eng. rami mahfoud http://irami.im

  7. تصنيف الحواسيب التفرعية حسب الذاكرة الذاكرة المشتركة • تتنوع الحواسيب التفرعية التي تعتمد في عملها على وجود ذاكرة مشتركة تنوعًا كبيرًا، ولكنها تشترك في توفير إمكانية للتعامل مع هذه الذاكرة، وَتعتبر كافة المعالجات فيها هذه الذاكرة كما لو أنها فضا ء عامًا للعناوين. الذاكرة الموزعة • تشبه النظم التفرعية ذات الذاكرة الموزعة مثيلاتها ذات الذاكرة المشتركة من حيث تنوعها ولكنها أيضًا تشترك جميع أشكالها في أنها تتطلب توفير شبكة اتصال للربط بين ذواكر المعالجات المختلفة. • تتحقق هذه البينية بواسطة الحواسيب متعددة المعالجات ذات الذاكرة الموزعة، أو مجموعة حواسيب مرتبطة فيما بينها بواسطة شبكة للوصل(وهو الصنف الأكثر انتشاراً للحواسيب التفرعية). وتتصل الحواسيب فيما بينها هنا بأسلوب تبادل الرسائل Eng. rami mahfoud http://irami.im

  8. تصنيف الحواسيب التفرعية حسب الذاكرة Eng. rami mahfoud http://irami.im

  9. أساليب البرمجة التفرعية Parallel Programming Models يوجد عدة أساليب للبرمجة التفرعية والتي نذكر منها: • .Threads البرمجة باستخدام النياسيب • .Message Passing البرمجة باستخدام أسلوب تبادل الرسائل Eng. rami mahfoud http://irami.im

  10. نموذج البرمجة بواسطة تبادل الرسائل Message Passing Model يتميز نموذج البرمجة بواسطة تبادل الرسائل بالميزات التالية: • تمتلك مجموعة من المهام ذاكرة محلية خاصة بها. كما يمكن لهذه المهام أن تتواجد ضمن نفس الحاسوب أو أن تكون موزعة على عدة حواسيب. • تتبادل المهام المعطيات فيما بينها عبر عمليات الاتصال بواسطة الرسائل المتبادلة. • تتطلب عملية تبادل المعطيات تنفيذ مجموعة من العمليات المطلوب تنفيذها من قبل الإجراءات :مثلا ً عملية إرسال رسالة توفر طرف آخر لاستقبال الرسالة. Eng. rami mahfoud http://irami.im

  11. Message Passing Model نموذج البرمجة بواسطة تبادل الرسائل Eng. rami mahfoud http://irami.im

  12. التحقيق البرمجي • من وجهة نظر برمجية، يتضمن التحقيق البرمجي لأسلوب البرمجية باستخدام أسلوب تبادل الرسائل إنشاء مكتبة برمجية من الإجرائيات التي يمكن تضمينها ضمن النصوص البرمجية. وتترك مسؤولية التفريع بكافة أشكالها على عاتق المبرمج. • . جرى تاريخيًا بناء مكتبات متعددة منذ عام 1980 • ولقد اتصفت هذه المكتبات باختلافاتها الجوهرية فيما بينها وبصعوبة استخدامها من قبل مطوري تطبيقات قابلة للتحميل على منصات عمل مختلفة. • تأسس في عام 1992 منتدى Message Passing Interface (MPI) من أجل تعريف معيار لتحقيق أسلوب برمجي تفرعي معتمد على تبادل الرسائل. . • ظهر في عام 1994 الجزء الأول من MPI . أما الجزء الثاني فظهر عام 1996 • أصبحت MPI الآن معيارًا صناعيًا لتبادل الرسائل لتحل محل كافة التحقيقات البرمجية الأخرى لتبادل الرسائل Eng. rami mahfoud http://irami.im

  13. هناك عدة بيئات برمجة تعمل كتنجيز للمعيار • 1. Microsoft Cluster compute pack SDK • 2. Intel MPI Library • 3. MPI .net • 4. MPICH .net • 5. CHMPI • 6. Parsec(PHP and parallel computing for web applications) • 7. CXC • 8. Erlang • 9. JIBU • 10. Prism • 11. Parallaxis • 12. MPI for Delphi Visual Studio الذي يسمح لنا بتنفيذ البرامج التفرعية تحت بيئة Microsoft وسنعمل في المقرر على تنجيز Eng. rami mahfoud http://irami.im

  14. تجهيز بئية العمل • يجب تجهيز الجهاز بالبرامج التالية : • Microsoft Visual Studio (2010) • Microsoft HPC Pack 2008 SDK package Windows 32 bit :sdk_x86.msi windows 64 bit :sdk_x64.msi Eng. rami mahfoud http://irami.im

  15. بعد تثبيت البرامج السابقة يجب تضمين الملفات الرأسية وملفات المكتبات إلى المشروع وذلك كمايلي: Eng. rami mahfoud http://irami.im

  16. نختار الخيارات المحدد بالصورة ثم نضغط ok Eng. rami mahfoud http://irami.im

  17. تظهر النافذة التالية نختار next Eng. rami mahfoud http://irami.im

  18. نزيل التحديد عن Precompiled header ونضغط finish Eng. rami mahfoud http://irami.im

  19. ندخل إلى خصائص المشروع كما في الصورة Eng. rami mahfoud http://irami.im

  20. خاص ب windows 64 bit ( 1 ) Eng. rami mahfoud http://irami.im

  21. خاص ب windows 64 bit ( 2 ) Eng. rami mahfoud http://irami.im

  22. خاص ب windows 64 bit ( 3 ) Eng. rami mahfoud http://irami.im

  23. ثم إلى Configuration Properties و ثم VC++ Directories وثم Include Directories نضع في البداية موقع الملفات الرأسية الخاصة بال MPI والموجودة في المجلد include في مجلد الحزمة : C:\Program Files\Microsoft HPC Pack 2008 SDK\Include ثم نضع فاصلة منقوطة . Eng. rami mahfoud http://irami.im

  24. تحت Library Directories سنضيف موقع الملفات المكتبية الموجودة في العنوان التالي: C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\i386 :(64-bit أو(إذا كان نظام التشغيل C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\amd64 Eng. rami mahfoud http://irami.im

  25. ثم من Linker نختار Input ونكتب msmpi.lib في بداية Additional Dependencies Eng. rami mahfoud http://irami.im

  26. التالي للاختبار: code المولد تلقائيًا في الملف المصدر الأساسي، ونكتب عوضًا عنه ال Codeنمسح كامل ال #include "stdafx.h" #include<iostream> #include<mpi.h> using namespace std; int main(intargc, char**argv) { intmynode,totalnodes; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&totalnodes); MPI_Comm_rank(MPI_COMM_WORLD,&mynode); cout<<"HELLO WORLD FROM PROCESS "<<mynode; cout<<" of "<<totalnodes<<endl; MPI_Finalize(); system("pause"); return 0; } Eng. rami mahfoud http://irami.im

  27. للمشروع: Build ثم Eng. rami mahfoud http://irami.im

  28. أصبح المشروع الآن جاهز للتشغيل، يمكن تشغيله على حاسوب محلي للاختبار، أو على عنقود حواسيب نذهب إلى خيارات المشروع ثم Debugging كما في الصورة Eng. rami mahfoud http://irami.im

  29. :Edit Hpc Node نختار Run Environment ثم من Eng. rami mahfoud http://irami.im

  30. :Edit Hpc Node نختار Run Environment ثم من كمايلي: Node Selector من النافذة Number of processes و Head Node نحدد ونضغط ok وننفذ بواسطة F5 Eng. rami mahfoud http://irami.im

More Related