الجلسة الأولى - Eng . Rami Mahfoud
Download
Report
Transcript الجلسة الأولى - Eng . Rami Mahfoud
البرمجة التفرعية
الجلسة األولى
Eng. rami mahfoud http://irami.im
البرامج التسلسلية
جرى تقليديَا بناء وتصميم البرمجيات لتعمل بطريقة تسلسلية:
•
•
•
•
صممت ليجري تشغيلها على حواسيب وحيدة المعالج ).(Single CPU
تقسم البرامج إلى أجزاء واضحة من التعليمات التسلسلية.
يجري تنفيذ التعليمات التسلسلية واحدة تلو األخرى.
يجري تنفيذ تعليمة واحدة فقط في نفس اللحظة.
Eng. rami mahfoud http://irami.im
البرامج التفرعية
يمكن تبسيط مفهوم الحساب التفرعي بالقول أنه مرتبط باالستخدام
المتزامن لعدة مصادر حساب من أجل حل مسألة :
•يعتمد النجازه على استخدام عدة معالجات ).(Multiple CPUs
•يجري تقسيم المسألة إلى أجزاء منفصلة واضحة ويمكن حلها بشكل مستقل .
ضا تقسيم كل جزء من األجزاء السابقة إلى سلسلة من التعليمات التسلسلية.
•يمكن أي ً
•يجري تنفيذ تعليمات كل جزء بشكل متزامن على عدة معالجات بنفس الوقت.
Eng. rami mahfoud http://irami.im
أسباب ظهورها
ظهرت فكرة البرمجة التفرعية من الحاجة إلى تسريع عمليات الحساب ،حيث أن البرمجة التسلسلية
لم تستطع أن تعطي حلول لبعض المسائل(مثل التبؤ الجوي ،دراسة حركة األجرام السماوية ،فك
التشفير )...بزمن مقبول.
وهذا ال يعني أن المسائل إما أن تكون ذات طبيعة تسلسلية أو ذات طبيعة تفرعية ،بل من الممكن أن
تكون المسألة ذات طبيعة تسلسلية وتفرعية معًا ،وعندها نفاضل بين أسلوبي البرمجة للحصول على
الحل باألسلوب ألمثل.
Eng. rami mahfoud http://irami.im
خصائص المسائل التفرعية
•
•
•
•
•
تتمتع المسألة الحسابية المدروسة بعدة مواصفات تعكس ما يلي:
القدرة على تجزئة المسألة إلى أجزاء منفصلة من الممكن حلها بشكل متزامن.
القدرة على تنفيذ عدة تعليمات بنفس الوقت.
حل المسألة بوقت أقل عند استخدام عدة مصادر للحساب مقارنة بحالة استخدام
مصدر حساب وحيد.
تطويرا للحساب التسلسلي وهو محاولة لمحاكاة ما يحدث
يعتبر الحساب التفرعي
ً
في الطبيعة في واقع األمر حيث تجري عدة أحداث مترابطة فيما بينها في نفس
الوقت بد ً ال من أن تحدث تسلسليًا .مثل ( خط تجميع آلي -حركة الطبقات
المكونة للقشرة األرضية) .
Eng. rami mahfoud http://irami.im
Example: Weather Forecasting
مثال :التنبوء الجوي
•
•
•
•
•
•
يمكن نمذجة الغالف الجوي بتقسيمه إلى خاليا ثالثية األبعاد وتجري الحسابات
على مستوى كل خلية بشكل متكرر لمحاكاة عملية مرور الوقت.
إذا أخذنا الغالف الجوي المحيط باألرض حتى ارتفاع 10ميل ،فيمكن تقسيمه
إلى خاليا من األبعاد التالية:
mile X 1 mile X 1 mileيبلغ عدد الخاليا 5x 108
إذا افترضنا أن كل عملية حساب تحتاج إلى 200عملية فاصلة عائمة
floating point operationsليتم انجازها فمن أجل مرحلة واحدة من
مراحل الحساب فإننا نحتاج إلى تنفيذ حوالي 1011عملية فاصلة عائمة
فبالتالي من أجل التنبوء حول حالة الجو خالل فترة سبعة أيام القادمة على
شكل فترات يفصل بينها مدة دقيقة واحدة ،فإننا نحتاج إلى تنفيذ 1015عملية
فاصلة عائمة في الثانية.
إذا استخدامنا حاسوب قادر على تنفيذ 10 Gflopsفإننا نحتاج النجاز
عمليات الحساب لزمن قدره 105ثانية (.أي 27ساعة )
Eng. rami mahfoud http://irami.im
تصنيف الحواسيب التفرعية حسب الذاكرة
الذاكرة المشتركة
بيرا ،ولكنها
• تتنوع الحواسيب التفرعية التي تعتمد في عملها على وجود ذاكرة مشتركة تنو ً
عا ك ً
تشترك في توفير إمكانية للتعامل مع هذه الذاكرةَ ،وتعتبر كافة المعالجات فيها هذه الذاكرة كما لو
أنها فضا ء عا ًما للعناوين.
الذاكرة الموزعة
•
•
تشبه النظم التفرعية ذات الذاكرة الموزعة مثيالتها ذات الذاكرة المشتركة من حيث تنوعها ولكنها
ضا تشترك جميع أشكالها في أنها تتطلب توفير شبكة اتصال للربط بين ذواكر المعالجات
أي ً
المختلفة.
تتحقق هذه البينية بواسطة الحواسيب متعددة المعالجات ذات الذاكرة الموزعة ،أو مجموعة
حواسيب مرتبطة فيما بينها بواسطة شبكة للوصل(وهو الصنف األكثر انتشارا ً للحواسيب
التفرعية) .وتتصل الحواسيب فيما بينها هنا بأسلوب تبادل الرسائل
Eng. rami mahfoud http://irami.im
تصنيف الحواسيب التفرعية حسب الذاكرة
Eng. rami mahfoud http://irami.im
أساليب البرمجة التفرعية
Parallel Programming Models
يوجد عدة أساليب للبرمجة التفرعية والتي نذكر منها:
• .Threadsالبرمجة باستخدام النياسيب
• .Message Passingالبرمجة باستخدام أسلوب تبادل
الرسائل
Eng. rami mahfoud http://irami.im
نموذج البرمجة بواسطة تبادل الرسائل
Message Passing Model
يتميز نموذج البرمجة بواسطة تبادل الرسائل بالميزات التالية:
• تمتلك مجموعة من المهام ذاكرة محلية خاصة بها .كما يمكن
لهذه المهام أن تتواجد ضمن نفس الحاسوب أو أن تكون
موزعة على عدة حواسيب.
• تتبادل المهام المعطيات فيما بينها عبر عمليات االتصال
بواسطة الرسائل المتبادلة.
• تتطلب عملية تبادل المعطيات تنفيذ مجموعة من العمليات
المطلوب تنفيذها من قبل اإلجراءات :مثال ً عملية إرسال
رسالة توفر طرف آخر الستقبال الرسالة.
Eng. rami mahfoud http://irami.im
نموذج البرمجة بواسطة تبادلMessage Passing Model
الرسائل
Eng. rami mahfoud http://irami.im
التحقيق البرمجي
•
•
•
•
•
•
من وجهة نظر برمجية ،يتضمن التحقيق البرمجي ألسلوب البرمجية باستخدام أسلوب تبادل الرسائل إنشاء
مكتبة برمجية من اإلجرائيات التي يمكن تضمينها ضمن النصوص البرمجية .وتترك مسؤولية التفريع بكافة
أشكالها على عاتق المبرمج.
.جرى تاريخيًا بناء مكتبات متعددة منذ عام 1980
ولقد اتصفت هذه المكتبات باختالفاتها الجوهرية فيما بينها وبصعوبة استخدامها من قبل مطوري تطبيقات
قابلة للتحميل على منصات عمل مختلفة.
تأسس في عام 1992منتدى ) Message Passing Interface (MPIمن أجل تعريف معيار لتحقيق
أسلوب برمجي تفرعي معتمد على تبادل الرسائل. .
ظهر في عام 1994الجزء األول من . MPIأما الجزء الثاني فظهر عام 1996
معيارا صناعيًا لتبادل الرسائل لتحل محل كافة التحقيقات البرمجية األخرى لتبادل
أصبحت MPIاآلن
ً
الرسائل
Eng. rami mahfoud http://irami.im
•
•
•
•
•
•
•
•
•
•
•
•
• هناك عدة بيئات برمجة تعمل كتنجيز للمعيار
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
تجهيز بئية العمل
: • يجب تجهيز الجهاز بالبرامج التالية
Microsoft Visual Studio (2010) .1
Microsoft HPC Pack 2008 SDK package .2
Windows 32 bit : sdk_x86.msi
windows 64 bit :sdk_x64.msi
Eng. rami mahfoud http://irami.im
بعد تثبيت البرامج السابقة يجب تضمين الملفات الرأسية وملفات
المكتبات إلى المشروع وذلك كمايلي:
Eng. rami mahfoud http://irami.im
نختار الخيارات المحدد بالصورة ثم نضغط ok
Eng. rami mahfoud http://irami.im
next تظهر النافذة التالية نختار
Eng. rami mahfoud http://irami.im
finish ونضغطPrecompiled header نزيل التحديد عن
Eng. rami mahfoud http://irami.im
ندخل إلى خصائص المشروع كما في الصورة
Eng. rami mahfoud http://irami.im
) 1 ( windows 64 bit • خاص ب
Eng. rami mahfoud http://irami.im
) 2 ( windows 64 bit • خاص ب
Eng. rami mahfoud http://irami.im
) 3 ( windows 64 bit • خاص ب
Eng. rami mahfoud http://irami.im
Include Directories وثمVC++ Directories و ثمConfiguration Properties ثم إلى
: في مجلد الحزمةinclude والموجودة في المجلدMPI نضع في البداية موقع الملفات الرأسية الخاصة بال
. ثم نضع فاصلة منقوطةEng.
C:\Program
HPC Pack 2008 SDK\Include
rami mahfoudFiles\Microsoft
http://irami.im
: سنضيف موقع الملفات المكتبية الموجودة في العنوان التالي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
Additional Dependencies في بدايةmsmpi.lib ونكتبInput نختارLinker ثم من
Eng. rami mahfoud http://irami.im
:التالي لالختبارcode ضا عنه ال
ً ونكتب عو،المولد تلقائيًا في الملف المصدر األساسيCode نمسح كامل ال
#include "stdafx.h"
#include<iostream>
#include<mpi.h>
using namespace std;
int main(int argc, char**argv)
{
int mynode,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
:للمشروعBuild ثم
Eng. rami mahfoud http://irami.im
أصبح المشروع اآلن جاهز للتشغيل ،يمكن تشغيله على حاسوب محلي لالختبار ،أو على عنقود حواسيب
نذهب إلى خيارات المشروع ثم Debuggingكما في الصورة
Eng. rami mahfoud http://irami.im
ثم منRun Environment نختار:Edit Hpc Node
Eng. rami mahfoud http://irami.im
:Edit Hpc Node نختارRun Environment ثم من
:كمايليNode Selector من النافذةNumber of processes وHead Node نحدد
F5
Eng. rami mahfoud http://irami.im
وننفذ بواسطةok ونضغط