ورود به حساب کاربری

نام کاربری *
رمز عبور *
مرا به خاطر بسپار.

بنیاد توسعه رایانش سریع و ابری

HPC and Cloud Computing Development Foundation

مقدمه ای بر چارچوب برنامه نویسی MPI

مدل برنامه نویسی MPI همانطور که از نامش پیداست بر اساس انتقال پیام کار میکند.در سیستم انتقال پیام  پردازنده های در حال اجرا بطور موازی و مستقل از هم با یکدیگر در تعامل هستند و در آن پیامی از یک پردازنده به یک پردازنده دیگر و یا تمامی پردازنده ها ارسال میشود.بر خلاف سیستم چند نخی که در آن نخ های مختلف یک حالت برنامه (Program State) را بطور مشترک استفاده میکنند در سیستم انتقال پیام  هر پردازه حالت برنامه مخصوص خود را دارد و هیچ پردازه ای نمیتواند بطور مستقل حالت برنامه مربوط به پردازه دیگری را تغییر دهد مگر اینکه توسط پیامس درخواست خود را به پردازه مورد نظر بفرستد و پردازه اصلی اقدام به تغییر حالت نماید. بنابراین یک سیستم انتقال پیام میتواند به همان اندازه که نود ها توزیع شده اند ، پراکنده باشد و در این میان احتیاجی به یکسان بودن معماری نود ها نیز نیست.بهمین علت با درجه آزادی زیادی روبرو هستیم. بسیاری از برنامه های مبتنی بر MPI بر اساس مدل موازی SPMD نوشته میشوند که در آن هر پردازه یک برنامه یکسان اما یا داده کاری متفاوت را اجرا میکند. پردازشهای SPMD بطور مشابهی میزان بالایی از محاسبات را روی داده هایی که بطور محلی در اختیار آنها هستند انجام میدهند و در عین حال داده هایی را که برای محاسبات نیاز است را با کمک انتقال پیام از سایر پردازنده ها دریافت میکنند.برای مثال میتوان به برنامه محاسبه مجموع عناصر دورن یک آرایه اشاره کرد . در نمونه سریال این برنامه باید به کمک یک حلقه تمامی عناصر آزایه را پیمایش کرد و در نهایت به مجموع آنها رسید. اما در نمونه موازی این برنامه عناصر آرایه بین پردازه ها توزیع میشوند و هر پردازه بطور مستقل مجموع محلی برای اعضایی که در اختیار دارد را محاسبه میکند و در نهایت هر کدام از پدازه ها مجموع محلی خود را طی یک عملیات ترکیبی به پردازه ریشه ارسال میکند و جواب نهایی بدست می آید.

MPI با دادن این اختیار که کاربر بتواند به راحتی یک برنامه را روی چندین پردازه (یا گره) اجرا کند از مدل برنامه نویسی SPMD حمایت کرده است.در آغاز تمامی پردازه ها (یا گره ها) همانند یکدیگر عمل میکنند با این تفاوت که هر کدام دارای یک مشخه یکتا به نام Rank هستند.با کمک این مشخصه میتوان کد اجرایی برای هر یک از پردازه ها (یا گره ها) را تغییر داد و وظایف را بین پردازه ها تقسیم کرد.این مشخصه یک عدد صحیح بین 0  تا P-1 (P تعداد پردازه ها) است. با بکار گیری متد و یا خصوصیت از پیش تعیین شده ای هر پردازه میتواند Rank خود را بدست آورد و بر اساس آن تصمیم بگیرد که چه رفتاری را از خود نشان دهد.

به عبارت دیگر این واسط یك استاندارد قابل انتقال روی كامپیوترهای با قابلیت برنامه نویسی موازی می باشد. MPI ازالگوهای انتقال پیام استفاده می كند كه برای محاسبات روی ماشین های با حافظه توزیع شده مناسب است.البته انتقال پیام می تواند روی مالتی پروسسورهای با حافظه اشتراكی نیز بكار برده شود.

مقایسه دیگر سیستم های انتقال پیام MPI بسیار شبیه مقایسه یک مجموعه بزرگ و یک زیر مجموعه است.زیرا تغییر برنامه ها به MPI از دیگر سیستم های انتقال پیام به نسبت معمولا  آسان تر است. MPIمعمولا  برای افراد مبتدی که تازه قصد شروع کردن دارند راحت تر است ، بسیاری از حالت های این گروه ها نیازی به برنامه های موازی ساده ندارد ،بنابراین برنامه های  MPI روی سیستم های مطمئن استفاده می شوندوباید بتوانند نسبتا  سریع روی سیستم های دیگر اجرا شوند.

به طور کلیواسط انتقال پیام ها یا MPI به طور گسترده ای دراستاندارد های جدید مورد استفاده قرار می گیرد. واسط انتقال پیام ، یک برنامه واسط (Interface) و كتابخانه ای  (Library) است از زیر برنامه هایی كه می توانند توسط برخی از زبان های برنامه نویسی مانند …,C , FORTRAN 77 فراخوانده شوند و وظیفه آن برقراری ارتباط بین کامپیوترها می باشد.واسط انتقال پیام به دقت برای استفاده وسیع و بالاترین سطح كارایی در سیستم های گوناگون تعریف شده است.MPI بر پایه انتقال پیام (message-passing)  طراحی شده كه یكی از وسیع ترین و قدرتمندترین الگوهای مورد استفاده برای سیستم های برنامه نویسی موازی می باشد.

 MPI به وسیله ی انجمنی ملی مرکب از نماینده هایی از بخش های آزمایشگاهی صنایع ، آکادمی ها و دولت توسعه پیدا کرد. آن  به سرعت همه جا منتشر شد و مورد پردازش قرار گرفت زیرا به دقت طراحی شده بود و برای اجرا روی سیستم های مختلف مجوز داشت، MPI بر پایه انتقال پیام (message-passing)  طراحی شده كه یكی از وسیع ترین و قدرتمندترین الگوهای مورد استفاده برای سیستم های برنامه نویسی موازی می باشد.

معرفی استاندارد MPI سبب می شود تا Developerهای نرم افزارهای موازی بتوانند كتابخانه هایی از برنامه های موازی بنویسندكه هم قابل انتقال(portable) و هم كارامد باشند.

حال آنكه مزیت استفاده از این كتابخانه ها این است كه باعث پنهان شدن بسیاری از جزئیات دشوار برنامه نویسی موازی از دید كاربر شده و در نتیجه عملیات و محاسبات موازی را برای استفاده دانشجویان و مهندسان و متخصصان تمامی شاخه های علوم آسان تر و قابل دسترسی تر می سازد. 

محاسبات موازی بیشتر درمیان مسیرهای اصلی حرکت می کنند،به متن هایی برای معرفی برنامه نویسی موازی نیازاست ، متن هایی که دانش آموزان و افرادی که در حرفه های دیگری مشغول هستند بتوانند ازآنها استفاده کنند وخیلی تخصصی نباشد. اما کسانی که قصد دارند اطلاعات کافی ومناسبی در این رابطه داشته باشند می توانند با استفاده از سیستم های کامپیوتری به گونه ای وسیع و قدرتمند در مورد انجام محاسبات عمل کنند.

واسط انتقال پیام یا MPI تنها برای حل و ازبین بردن این مشکلات به وجود آمد وهدف این متن هااین است که بتوانند دانش آموزان ، آموزگاران وافراد دیگر رابا ابزار هایی که می توانند به نحوی ساده ترباعث تغییرمسیرهای مختلف تکنولوژی شود آشنا کند.

برنامه نویسی موازی با MPI یا PPMP  اولین وپیشرفته ترین عملیاتی ست که برای برنامه نویسی سیستم های موازی معرفی می شودPPMPI .  مقدمه ای ازMPI و عناصرمعرفی برنامه نویسی موازی را تهیه  کرده است. این توضیحات همه ی حالت های مختلف  MPI را در بر می گیرد به صورت مختصری محاسبات موازی را پشتیبانی می کند و موضوعی در رابطه با اشکال زدایی موازی را بیان می کند.برنامه های موازی طراحی شده وتوسعه پیدا کردندو تحلیل شده و به مرحله ی اجرا در آمدند.

 

 

در مورد انتقال پیام

عبور پیام از نظر فهم و یادگیری ، برنامه های مشکلی نیستند،برای اینکه بشر می تواند در هر زمانی عمل انتقال پیام را انجام دهد. دو دلیل برای نیاز به انتقال پیام ها نیاز است:یکی  برای تغییر داده ها بین عمل ها و وظایف موازی به آنها نیاز داریم ودیگری برای سنکرون کردن و همزمانی وظایف از آن ها استفاده می شود.اگر همه ی وظایف به صورت کامل ازهم مستقل باشند هیچ پیامی برای عبور یا کنترل موازی سازی ضروری نیست. در این حالت صحبت کردن در مورد برنامه نویسی موازی کاری نادرست است.

زمانی که از برنامه های موازی درمورد درخواست های بزرگ استفاده میشود برنامه عبور پیام اغلب نسبتا مشکل است.برنامه نویسی صد ها یا دوازده وظیفه همزمان پروژه ای بسیار مشکل برای طراحی ست. در پروژه های انسانی ممکن است بحث کردن در موردحالت های وظایف مختلف به صورت اشتراکی باشد ،اما در کامپیوتر ها همه تصمیم ها پیشاپیش توسط برنامه نویس گرفته می شود ،اشکال زدایی برنامه های موازی نیز برای هیچ کسی جالب نیست.

اگرانتقال پیام روش ساده ای برای برنامه نیست چرا ازآن استفاده می شود؟

روش های دیگری برای برنامه های موازی کامپیوتر ها وجود دارد،برای نمونه داده های موازی زبان برنامه نویسی High-Performance Fortran (HPF) .در داده های موازی زبان ها معمولا به هیچ برنامه نویسی برای انتقال پیام نیاز نیست.متاسفانه برنامه نویسی داده های موازی فقط برای زیر مجموعه های الگوریتم ها استفاده می شود. درمورد فواید عبور پیام به طور کلی مدل message-passing می تواند در الگوریتم هایی که شما می خواهید  استفاده شود وبا بیشتر سیستم های کامپیوتری سرو کار داشته باشد.

در آغاز به عنوان یادآوری بایدگفته شود MPI شبیه تحولی ترکیبی از سیستم های پیشین message-passing می باشد.وبرای یک برنامه نویس به معنی بسیاری از برنامه های مفید و وابسته ی سطح بالاست.

به دلیل اینکه استاندارد MPI یک استاندارد باز است هر کسی می تواند یک اجرا از آن را در اختیار ودر دسترس خود داشته باشد.چندین بخش عمومی از این ها به صورت متداول وجود دارد کهمی توان اطلاعات را از بین آنها انتخاب کردونیز بسیاری از فروشنده های  ابرکامپیوترهاترجمه ها وتفسیر هایی را ارائه دادند.

به علت دسترسی گسترده به MPI قابلیت حمل ونقل برنامه های موازی نباید دچار اشکال شود.همچنین به سبب طبقه بندی های MPI برنامه نویس نمی تواند مراقب ترجمه ها ی سیستم انتقال پیامی که استفاده می شوند باشند،بنابراین در این حالت از سیستم های PVM(ماشین های مجازی موازی) که مربوط به دوره های قبل می شوند استفاده می شود.

هرچند MPI برنامه نویسی محیطی موازی نیست برخی صورت های محاسبات موازی شامل استاندارد ها هستند.در نتیجه MPI شامل امکانات وتسهیلاتی برای کنترل فرایند های پویا ،ورودی و خروجی های موازی و نیز آغاز وظایف موازی ندارد.زیرا که این صورت های جاری خارج از سطح استاندارد ها هستند هر اجرایی از MPI پیشنهادی برای برنامه نویسی محیط موازی است.

 

 

 

 

حالت های ویژه ای از MPI

پیشنهادMPI مجموعه غنی ای از توابع برای انجام ارتباطات نقطه به نقطه

point-to-point)) است.در مجموع می توان به سادگی وظایف را درمیان گروه ها تقسیم کرد تا بخش هایی از محاسبات به این نحو انجام شود.همچنین امکاناتی برای انجام محاسبات زیاد وجود دارد ،برای مثال پیدا کردن بیشترین مقدار یک مجموعه یا برگزیدن فعالیتی که باید بعدا انجام شود.برنامه نویس می تواندوظایف را درتوپولوژی های مجازی سازماندهی کند برای نمونه ارتباطات نزدیک همسایه ها در یک شبکه مربعی یک برنامه خیلی سرراست است.

اجرای MPI صورت های آغازین درک برنامه نویس است.اول از هر چیز درMPI قابلیت اطمینان برای انتقال پیام ها مهم است.همچنین پیام ها ازوظایف ویژهای فرستاده می شوندو بخشی از آنها که ارسال شدندبه کارهای دیگری می رسند بنابراین لزومی ندارد برنامه نویس کارهای ساماندهی خسته کننده و نیز چک کردن را انجام بدهد.

شاید پیشرفت بسیاری که MPI داشته تصویر کلی ای از اشخاص در تماس باشد.ساخت آن ممکن است باعث مجزا شدن ارتباطات باشد که فقط  کارهایی که در آنها بخشی از پیام های عبوری را می گیرد انجام می دهد.این ساخت ممکن است کاربرد ها و زیرروال کتابخانه ها را بنویسد که این ارتباطات به صورت نامرئی در جهان باقی مانده.درنتیجه انتقال پیام در بعضی از بسته بندی های نرم افزاری انجام می شود بدون اینکه با دیگر پیام های انتقالی ای که توسط بخش های دیگر انجام می شوندقاطی شود.اجرای آن خیلی ضروری ست برای مثال یک حل کننده موازی برای معادله های خطی که می توانند به وسیله برنامه فراخوانی شوندو MPI برای انجام کارهای موازی انجام می شود.

دربیشتر نمونه ها MPI قابلیت توسه پذیری را دارد.MPI ممکن است توسعه پیدا کندبرای مثال پیوستگی درخواست ویژه ی یک لایه از محاسبا ت اولیه روی MPI .همچنین اشکالزدایی ،برجسته سازی و تجسم فکری برنامه های موازی ممکن است مهارت ساخت در استاندارد MPI را استفاده کند.برای نمونه درک شکل های همرا ه را می توان نام برد.