برنامه نویسی موازی با MPI داریم و MPI مخفف رابط ارسال پیام است، به اصطلاح استاندارد واقعی است که چگونه برنامه نویسی موازی را حداقل در یک حافظه توزیع شده انجام میدهید و بعداً در پایین خواهد بود. جاده در اساساً مجموعه سخنرانیهای ما و تکمیل شده با برنامه نویسی موازی MPIکه بیشتر برای برنامهنویسی حافظه مشترک است. بنابراین امروز ما کمی بهتر درک میکنیم که چرا به HPC نیاز داریم از نظر ایده استفاده از این ماشینهای بزرگ با جریانهای موازی با موجودیتهای موازی اشیاء برنامهها میتوانید آن را به روشهای مختلف ببینید که این برنامه نویسی موازی واقعاً چه چیزی را قادر میسازد.
همانطور که فایل اجرایی را مشخص کردهایم، هنوز برنامه C را کامپایل نکردهایم، اما همچنان فایل اجرایی را داریم که در خط فرمان از آن استفاده میکردیم. تنها کاری که انجام میدهیم این است که به جای اینکه خودمان این را اجرا کنیم، آن را به زمانبند میدهیم. در مقایسه با جاوا اسکریپت کم و بیش، زمانبند به این فکر میکند که در کجای یوتیوب و من واقعاً میتوانم آن را اجرا کنم. اگر به یاد داشته باشید، آخرین باری که این گرههای مختلف محاسبه 2 0 تا 1 تا 2 تا 3 همه این گرههای محاسباتی را داشتیم. سپس با گره U2 نیز متفاوت بودند و با انجام این کار، شما آن را به روشی کم و بیش درست انجام میدهید. بنابراین، مدیران بسیار خوشحال خواهند شد اگر این کار را به این طریق انجام دهید و واقعاً حالت ورود را اشغال نکنید.
از این مقدار کمی این رفتار غیر تعاملی است. در اینجا ما خروجی را مستقیماً در خط فرمان داریم که به اصطلاح واقعاً تعاملی است. این عنصر خاص از نرمافزار را نام میبرد، اما دسته نشان میدهد که شما اساساً در صف دستهای هستید و در نقطهای از زمان زمانی را انتخاب کردهاید که خوشه به اندازه کافی قرار داده است تا برنامهریزی شود و سپس اجرا شود. این معنی است که شما نمیخواهید در خط فرمان خود منتظر خروجی باشید که میخواهید کار را ادامه دهید و خروجی به جای آن در نوعی فایل خروجی که در اینجا میبینید نوشته میشود. این اساساً همان چیزی است که ما به دنبال آن هستیم، که البته شناسه شغلی است. زمانی که ارسال میکنید، یک شناسه شغلی خاص دریافت میکنید که پس از آن میتوانید همیشه به عنوان وضعیت تکمیل شده ما را پیگیری کنید. پس از تکمیل وضعیت، فایل خروجی موجود باشد و ما میتوانیم آن را بررسی کنیم.
این یک ایده بسیار ساده است که چگونه آن را انجام دهید، اما همچنین نشان میدهد که چرا شما اساساً میخواهید همه این کارها را انجام دهید. زیرا در نهایت، با برنامههای خود بسیار مقیاسپذیر خواهید بود. ما امروز این MPI را یاد خواهیم گرفت و همچنین زمینههای بعدی از سخنرانیها را به طوری که ایده کلیدی در مورد اینکه چرا میخواهیم این کار را انجام دهیم.
و افزایش سرعت یک بخش بسیار مهم است. شما میخواهید آن را به روشی به اصطلاح تعاونی تسریع کنید که در آن همه شما آجرها را میریزید، به قطعات کوچکتر تقسیم میکنید و سپس آنها را به صورت موازی پردازش میکنید تا محاسبات موج بسیار سریعتر انجام شود. این چیزی است که شما باید درک کنید، زیرا این روش برای حل مشکلات کلی انتشار موج به روشی بسیار مشارکتیتر و پردازش موازی است. بهترین عملکرد ممکن است با کوچکتر کردن دامنه یا بزرگتر کردن آن به دست آید، هرچند که لزوماً هرچه دامنه کوچکتر شود بهتر نخواهد بود، زیرا تعداد پردازندههایی که استفاده میشود نیز مهم است.
در این نوع آجرها که کوچکتر میشوند، به جزئیات بیشتری میرسید و به جزئیات بیشتری نیز نیاز دارید. این کار را انجام میدهم، اما این ما را به عناصر محاسباتی با کارایی بالا میرساند. شما به پردازندههای زیادی نیاز دارید که به ما امکان دهند فرآیندهای موازی را محاسبه کنیم. یک مثال خوب از این کار، که در سخنرانی سهگانه بیشتر در مورد نحوه موازیسازی کامل آن در موقعیت Decoصحبت خواهیم کرد، این است که در اینجا به زایش یخچال طبیعی نگاه میکنیم. در ویدیو میبینید که شما اساساً عناصر مختلفی دارید، مانند عناصر فیزیکی که ابتدا یک مش ژنراتور ایجاد میکنند و سپس یک اجرای موازی روی این مش انجام میدهید. با حلکننده به اصطلاح Elma، که شما معمولاً آن را مشاهده میکنید، و سپس یک بخش دیگر در haidemکه یک کد فیزیکی دیگر را بهطور موازی اجرا میکند، تا کل کالوین و جنبه را محاسبه کند. این کار در یک حلقه انجام میشود و بسیاری از برنامههای فیزیکی اینگونه عمل میکنند. وقتی فکر میکنید که چگونه واقعاً زایش یخچال طبیعی را محاسبه کنید، همیشه در یک حلقه انجام میشود. هنگامی که موج دارید، یک مرحله زمانی یک حلقه است که موج بعدی محاسبه میشود. زمانی که ارتفاع حرکت میکند، فرض کنید روی استایل، حلقه دیگری برای مرحله زمانی بعدی خواهیم داشت. بنابراین ما در مورد یک رویکرد تکراری به این موضوع صحبت میکنیم که در آن فیزیک در هر مرحله زمانی محاسبه میشود.
البته همچنین باید به آنچه در اطراف اتفاق میافتد، بهویژه اگر به همسایگان فکر کنید، توجه داشته باشیم. بنابراین ارتباطات با نزدیکترین همسایه نیز بخش مهمی خواهد بود که بعداً به برنامههای HPCخواهیم پرداخت. همانطور که قبلاً گفتم، اکنون بهعنوان مثال در مورد دامنهها فکر میکنیم. شما برنامه زمینی خاصی دارید که قبلاً در مورد آن صحبت کردیم. زمانی که میخواهید آن را به برنامهنویسی Powerتبدیل کنید، کاری که باید انجام دهید این است که این دامنه را به چهار قسمت مختلف تقسیم کنید و هر یک از آنها هنوز توسط یک فرآیند محاسبه میشود. اما شما میدانید زیرا آنها بسیار به یکدیگر نزدیک هستند، این ایده نزدیکترین همسایه است.
یا برای جمعآوری آن و همین امر در مورد لانه صدق میکند. مغز انسان به وضوح بسیار به هم متصل است و از بخشهای مختلف آن جدا نیست. وقتی میخواهید این را در نوع تجزیه دامنه ببینید، هنوز چیزهای زیادی برای تبادل پیام در این بخش خاص از برنامه موازی نیاز است و این کدها میتوانند بسیار چالشبرانگیز و پیچیده باشند. این توجیه میکند که HPC و ایده کلی استفاده از HPC برای برنامهنویسی مهندسی و علمی واقعاً امروزه نوعی حوزه تخصصی است. ما در اینجا عمدتاً بر اساس رویکردی که در علوم یا مهندسی انجام میشود، میبینیم. ما هنوز آزمایشهایی داریم که در آن طبیعت را با اندازهگیریها مشاهده میکنیم و بدون توجه به نظریههای مطمئن، میدانیم که قوانین فیزیک وجود دارند یا ما مدلهایی از هواپیما ایجاد میکنیم و درک میکنیم که تلاطم وجود دارد و غیره. کاهش درگ چیزی است که میخواهیم درک کنیم، بنابراین بسیاری از سؤالات در نظریه و ما دادههایی از آزمایش داریم، ممکن است از یک تونل یا یک مدل کوچک پرینت سهبعدی باشد.
اگر به گذشته برگردیم، چگونه میتوانیم مدلی از آن را بهعنوان یک برنامه علمی در HPC ایجاد کنیم؟ اینها اغلب محاسبات عددی با شبیهسازی در طول زمان هستند و میتوانند روی چندین قطعه مختلف تمرکز کنند. واقعاً چه چیزی را میخواهیم بفهمیم که از HPCاستفاده میکند، اما تمرکز بسیار خاصی دارد. به عنوان مثال، در اینجا درک استرس مواد در توربین یا تلاطم هواپیما بهعنوان یک کل یا اساساً توربینهای یک توربین. بنابراین چندین قطعه مختلف را دوباره مشاهده میکنید. مشکل بزرگ به قطعات کوچکتر تبدیل میشود تا آن را درک کنیم. آیا اساساً آزمایشی را که داریم با این نظریه مرتبط میکند که آن را کم و بیش به این سمت میبرد. به جای رقابت با این عناصر، ما هنوز به آزمایش و نظریه نیاز داریم که مدلهای HPC بر اساس آنها انجام میدهیم. شما میدانید روشهای عددی با استفاده از قوانین فیزیکی شناختهشده بسیار مهم هستند و بسیاری از این اهرمها پس از آن به این دلیل که اینها برنامههای بسیار پیچیده و محاسبات بسیار پیچیده هستند.