بنابراین، بخش اول سخنرانی واقعاً به کاربردهای علمی مرتبط با محاسبات موازی اختصاص دارد، از جمله مثالهایی که در این سخنرانی به آن اشاره شد، از جمله انتشار موج در اقیانوس یا نزدیک سواحل ایسلند. این بخش، به توضیح تکنیکهای شبیهسازی مغز انسان نیز پرداخته و نحوه تجزیه دامنه برای اجرای موازی محاسبات مورد بحث قرار گرفته است.
در ادامه، به بخشهای بعدی سخنرانی خواهیم پرداخت تا به صورت رسمیتر، مسائلی مانند ارتباط بین سلولهای ارواح و نیاز به برنامهنویسی پیشرفتهتر با MPI مورد بحث قرار گیرد. این سخنرانی، به بررسی استاندارد قوی مفهومی MPIنیز میپردازد و نیازمند تعاملات زیادی بین بخشهای مختلف محاسبات موازی است که به دلیل تعداد زیادی از پردازندههای درگیر و شبکههای دکارتی نیاز دارد.
در نهایت، اجرای برنامههای موازی و ارسال و دریافت دادهها در مقیاس بزرگ و نحوه تعامل پردازندهها در شبکههای HPCنیز به عنوان بخشی از این سخنرانی پوشش داده شد که از طریق SSH و اجرای برنامهها از راه دور قابل دسترسی است.
"یک تکنیک رایج در برنامهنویسی موازی، استفاده از دادههای چندگانه است که به آن "برنامهنویسی تکی" میگویند. در این روزها، برای تبادل دادهها، اکثراً از MPI (پروتکل تبادل پیام موازی) استفاده میشود و به همین دلیل ما بسیار از آن استفاده میکنیم. MPI اجازه میدهد دادهها را از طریق پیامرسانی به حافظههای دیگر و پردازندههای دیگر منتقل کنیم.
بنابراین، برای استفاده از MPI باید ساختارهای پیچیدهای را برای انواع مختلف دادهها مشخص کنیم. برای مثال، باید تعداد پردازندههایی که از طریق اتصالاتی مانند کابل به یکدیگر متصل هستند را مشخص کنیم.
ایدههای اساسی در استفاده از MPIباید از طریق توابع ابتدایی MPIمانند `MPI_Init` شناسایی شوند. این توابع محیط محاسباتی مانند PAL(محیط محاسباتی موازی) را شروع میکنند که باید به آن توجه کنیم. بنابراین، انتخاب ساختارها و فرآیندهای مورد نیاز بسیار مهم است. ما با شروع ویرایش فایل متنی خود، که از زبان برنامهنویسی Cمیآگاهی داریم، ادامه میدهیم.
برای مثال، هنگامی که فایل اجرایی را دارید، ممکن است کتابخانههای IO را اضافه کنید یا فایلهای هدر و اصلی را به آن اضافه کنید که در زمان اجرا اجرا میشوند. اکنون ما با یک `Hello, World!` شروع کردهایم، اما آن را تغییر میدهیم تا به واقعیتی برسیم. به عنوان مثال، میخواهم با چهار پردازنده کار کنم و بخواهم بدانم هر یک از آنها کی هستند.
این موردبه ما توابع کمکی بسیار زیادی میدهد که میتوان از آنها برای دسترسی به ابزارهای مختلف MPI در برنامههای C توسعهیافته استفاده کرد. پیشتر تعریف کرده بودیم که چگونه رتبه و اندازه را به طور پیشفرض تعریف کنیم. بنابراین، ما باید آن را پر کنیم. به عنوان مثال، محیط MPIرا با `MPI_Init` و `MPI_Finalize` نهایی ایجاد میکنیم و هر برنامهای باید این دو تابع را داشته باشد تا واقعیتاً یک برنامه MPI باشد.
ما اکنون باید اندازه و رتبه را با دادههای مناسب پر کنیم که معمولاً در هنگام اجرای محیط MPI از اعداد واقعی استفاده میکنند و به آنها پاسخ میدهند. ما انتظار داریم این بسیار ساده باشد، چرا که اگر برنامهای مانند Hello MPIرا اجرا کنیم، نتیجه درست خواهیم داشت. ما میگوییم که این نتایج با همه پردازندههای مختلف متفاوت هستند.
حالا به مثال عملی میپردازیم که در جلسه عملی 2.1 نیز مورد بحث قرار خواهد گرفت. اما از یک کد منبع `Hello, C` درست میکنیم و همچنین از رتبهگذاریها با `MPI_Comm_rank` و `MPI_Comm_size` استفاده میکنیم که واقعاً در تمرینها نیز مورد استفاده قرار میگیرند. اغلب این پیام این را تایید میکند که اطلاعات رتبه بسیار مهم هستند و از این نوع داده است که در فرآیندهای مختلف اجرا میشوند.
در نهایت، ما برای اجرای برنامههای موازی MPIنیاز به ایجاد گروههای ارتباطی داریم. بنابراین میتوانید پردازندههای خود را در گروههای خود ایجاد کنید و در جلسات بعدی دربارهی جزئیات رتبهبندی و MPI_COMM_WORLD گفتگو میکنیم که در تمرینها نیز استفاده میشود."