PDA

View Full Version : مبتدی: تفاوت MPI و Multi-Threading در چیست؟



saeidcd
سه شنبه 16 آبان 1391, 22:51 عصر
سلام به همه دوستان
نميدونم سوالمو جاي درستي پرسيدم يا نه :متفکر:
اگه جاي سوالم اشتباهه از همه عذرخواهي ميكنم! :گیج:
واقعيتش من خيلي سرچ كردم اما چيز خاصي گيرم نيومد

ميخواستم ببينم mpi چيه؟؟؟؟ :عصبانی++:
من مفهوم Threading و پياده سازيش رو ميدونم مي خواستم بدونم مفهومش با mpi يكيه؟؟؟؟
اخه هردوتاش درمورد چند cpu هستش اما تفاوتش چيه؟؟
فرقش تو موازي سازي چيه؟

lpeiatb
چهارشنبه 17 آبان 1391, 09:17 صبح
اگه انگلیسیتون خوبه احتمالا این کمکتون کنه:


If you are considering only a single node with multiple processor then multi-threading is the best way, also the performance is better. And for clusters i.e running a program to span across multiple nodes then MPI is the probably the best way. Also you can embed multi-threading within each MPI processes on these nodes which are running given MPI program.

mehdi.mousavi
چهارشنبه 17 آبان 1391, 12:24 عصر
سلام به همه دوستان نميدونم سوالمو جاي درستي پرسيدم يا نه :متفکر: اگه جاي سوالم اشتباهه از همه عذرخواهي ميكنم! :گیج: واقعيتش من خيلي سرچ كردم اما چيز خاصي گيرم نيومد
ميخواستم ببينم mpi چيه؟؟؟؟ :عصبانی++: من مفهوم Threading و پياده سازيش رو ميدونم مي خواستم بدونم مفهومش با mpi يكيه؟؟؟؟ اخه هردوتاش درمورد چند cpu هستش اما تفاوتش چيه؟؟ فرقش تو موازي سازي چيه؟

سلام.
MPI یا Message Passing Interface (http://www.mcs.anl.gov/research/projects/mpi/) استانداردی است برای برنامه هایی که ارتباط با اونها از طریق ارسال و دریافت پیام به دیگر Node ها (همون برنامه، اما Instance دیگه ای از اون، روی Physical Machine دیگه ای، در نقطه دیگه از شبکه) میسر هستش. در حالت Multi-Threaded، برنامه در یک نقطه فیزیکی وجود داره و State خودش رو با دیگر Thread های در حال اجرا به اشتراک میذاره. اما در MPI، کنترل State صرفا در اختیار Process ای هستش که روی هر Node اجرا میشه و کسی جز با ارسال پیام، نمیتونه اون State رو تغییر بده یا از از اون آگاه بشه. بیشتر برنامه های MPI از معماری SPMD (http://en.wikipedia.org/wiki/SPMD) طبعیت می کنن، معماری ای که در اون وظائف به اجزای کوچکتری تقسیم میشن و هر جزء روی پردازنده ای مجزا بطور همزمان اجرا میشه تا محاسبات سریعتر انجام بشه...

موفق باشید.

saeidcd
پنج شنبه 18 آبان 1391, 18:26 عصر
خيلي ممنون از دوستان بخاطر جوابهاتون
اقاي mehdi.mousavi (http://barnamenevis.org/member.php?41233-mehdi.mousavi) خيلي ممنون

پس طبق گفته شما باهم فرق دارن پس:
ميشه لطف كنيد و بگين چطور ميتونم با mpi يه مسئله رو حل كنم يا چطور با mpi يه الگوريتم رو طراحي كنم؟؟؟؟

بخاطر وقتي كه ميزاريد ممنون

mehdi.mousavi
جمعه 19 آبان 1391, 05:10 صبح
پس طبق گفته شما باهم فرق دارن پس: ميشه لطف كنيد و بگين چطور ميتونم با mpi يه مسئله رو حل كنم يا چطور با mpi يه الگوريتم رو طراحي كنم؟؟؟؟ بخاطر وقتي كه ميزاريد ممنون

سلام.
بله. البته که فرق دارن. برای شروع، می تونید به مقاله Rich Ciapala در مجله MSDN رجوع کنید (http://msdn.microsoft.com/en-us/magazine/cc163620.aspx). اونجا، نحوه استفاده از MPI برای انجام عملیات موازی شرح داده شده. از طرفی، Open MPI پیاده سازی Open Source ای از MPI هستش که از طریق این آدرس (http://www.open-mpi.org/) در دسترسه که البته، برای کار با اون باید Documentation هاشون مطالعه کنید. اگر مایل باشید نیز می تونید از پیاده سازی MPI در محیط .NET (http://osl.iu.edu/research/mpi.net/) تحت عنوان MPI.NET استفاده کنید.

موفق باشید.

saeidcd
دوشنبه 22 آبان 1391, 13:00 عصر
چندتا مطلب مفيد براي دوستان گذاشتم

https://computing.llnl.gov/tutorials/mpi/
people.sc.fsu.edu/~burkardt/pdf/mpi_course.pdf


MPICH یک پیاده سازی انجام شده از MPI است که دارای امکان شبیه سازی هم می باشد.
دانلود mpich:
ftp://ftp.mcs.anl.gov/pub/mpi/nt/mpich.nt.1.2.5.exe

saeidcd
دوشنبه 06 آذر 1391, 11:05 صبح
من نوشتن برنامه با MPI رو یاد گرفتم اونو تو کامپایلر C مینویسم اما وقتی به خط include mpi.h# میرسه خطا میده :گریه:

اصلا نوشتن برنامه تو هر کامپایلر C درسته؟
اگه درسته چطور کتابخانه رو میشه اضافه کرد؟
اگه درست نیست چطور میشه برنامه ایی که EXE رو نداری یا هنوز کامپایل نشده رو تو mpich اجرا کرد؟

shahmohammadi
شنبه 11 آذر 1391, 17:38 عصر
سلام.

include mpi.h#اين دستور كه درست نيست. درستش اين طوريه:
#include <mpi.h>
اگر هم درست نوشتيد در كد، حتما فايل هاي .h مربوط به mpi رو در پوشه ي include كامپايلر نگذاشتيد.

saeidcd
شنبه 11 آذر 1391, 22:07 عصر
سلام.
اين دستور كه درست نيست. درستش اين طوريه:
#include <mpi.h>
اگر هم درست نوشتيد در كد، حتما فايل هاي .h مربوط به mpi رو در پوشه ي include كامپايلر نگذاشتيد.

ممنون
اره درست نوشتم mpi.h رو اضافه هم كردم اما باز....
بدي كار اينه كه تو لينوكس هم خطاهاي مختلف ديگه ايي رو ميبينم

يعني كسي تاحالا يه برنامه شامل MPI رو اجرا نكرده؟؟؟؟؟؟؟؟؟ :ناراحت::ناراحت::ناراحت:

saeidcd
دوشنبه 13 آذر 1391, 08:26 صبح
خطاهاي زيادي رو داشت اما.....


تو لینوکس اجرا شد :
برای اجرا تو لینوکس MPICH رو نصب میکنین و با mpicc برنامه رو اجرا میکنین

ويندوز هم اجرا شد:
http://www.cs.utah.edu/~delisi/vsmpi/

sibooy
دوشنبه 11 شهریور 1392, 15:36 عصر
در این پست هم روش نصب CUDA هم یک مثال از اون رو گذاشتم(برای برنامه نویسی موازی بر روی پردازنده های گرافیکی). هم برنامه نویسی موازی روی پردازنده های چندهسته ای با openMP رو با یک مثال گذاشتم.
http://barnamenevis.org/showthread.php?414780-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%D9%88%D8%A7%D8%B2%DB%8C-%D8%AF%D8%B1-C-%D8%A8%D8%A7-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D9%86%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%DA%86%D9%86%D8%AF-%D9%87%D8%B3%D8%AA%D9%87-%D8%A7%DB%8C%D8%8C-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D9%86%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%DA%AF%D8%B1%D8%A7%D9%81%DB%8C%DA%A9-%D9%88-%DA%86%D9%86%D8%AF-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D9%86%D8%AF%D9%87-%D8%A7%DB%8C
دوستان اگر نکته ای آموزشی چیزی در مورد برنامه نویسی موازی با پردازنده های چند هسته ای پردازنده های گرافیکی و چند پردازنده ای بلدید همونجا بذارید.
روش کار با MPI ها جاش اونجا خالیه. اگه کسی آموزشی در اون مورد داره اونجا بذاره تا خلایق استفاده کنن.
یه سوال دوستان. از اونجا که پردازنده های چند هسته ای اینتل از کش L3 اشتراکی استفاده می کنن. می شه با MPI براش برنامه نوشت؟ openMP که خیلی خوب جواب میده چون اساس کارش حافظه اشتراکی هست اما MPI چی؟ اون که با سیستم message passing کار می کنه با اونم می شه برای این پردازنده های اینتل برنامه نوشت؟
دوستان اگه توی MPI مطلب آموزشی دارین ممنون می شم که اونو توی اون لینک بالا بذارید داریم مطالب آموزشی مربوط به برنامه نویسی موازی رو جمع می کنیم.

hadidan
پنج شنبه 04 دی 1393, 12:45 عصر
با سلام به دوستان
برای اطلاع بیشتر این لینک مفید هستش
http://hpclab.ir/index.php/84-parallel/119-mpi

a1281366
جمعه 28 تیر 1398, 14:08 عصر
با عرض سلام و ادب
سوالی داشتم خدمت دوستان ما چندین سیستم بیکار(idle) داریم که می خواهیم تحت شبکه و به همراه دیگر سیستم های فعال تعداد 4 نرم افزار سنگین و پرکاربردمان را؛ به صورت پردازش موازی و حداکثر توان عملیات پردازشی را به کار بگیریم تا زمان و هزینه مان پایین بیاید حال سوالم این جاست که آیا نرم افزاری هست که بتواند همه موارد ذکر شده بالا را مدیریت کند؟ ممنون میشم راهنمایی کنین

farhad_shiri_ex
شنبه 29 تیر 1398, 08:34 صبح
سوالی داشتم خدمت دوستان ما چندین سیستم بیکار(idle) داریم که می خواهیم تحت شبکه و به همراه دیگر سیستم های فعال تعداد 4 نرم افزار سنگین و پرکاربردمان را؛ به صورت پردازش موازی و حداکثر توان عملیات پردازشی را به کار بگیریم تا زمان و هزینه مان پایین بیاید حال سوالم این جاست که آیا نرم افزاری هست که بتواند همه موارد ذکر شده بالا را مدیریت کند؟ ممنون میشم راهنمایی کنین

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