به دوره "محاسبات با کارایی بالا" خوش آمدید. این سخنرانی مقدمهای بر این دوره است و هدف آن آمادهسازی شما برای موضوعات اصلی است.
در ابتدا، ما به بررسی کلی مفاهیم اصلی و ابزارهای مورد استفاده در محاسبات با کارایی بالا (HPC) میپردازیم. این شامل مرور مواد و روشهای اساسی، معرفی ابزارهای مختلف، و بحث درباره نحوه ارزیابی تکالیف و پروژههای دوره است.
در بخش دوم، به محتوای دوره عمیقتر خواهیم پرداخت. در مقدمه، نمیتوانیم به جزئیات بسیاری بپردازیم، بنابراین موضوعات بهطور کلی از دیدگاهی سطح بالا بررسی میشوند. اما این دیدگاهها به شما نشان میدهند که در طول دوره به چه موضوعاتی پرداخته خواهد شد.
یکی از سوالات متداول دانشجویان این است که "محتوا چیست و ما چه کار خواهیم کرد؟" در سخنرانیهای مختلف، مطالب نظری و عملی وجود خواهد داشت. در مقدمه، بیشتر بر مرور نظری متمرکز خواهیم بود. برخی از سخنرانیها نیز جنبههای عملی بیشتری دارند که برای تکالیف و پروژههای شما بسیار مفید خواهد بود.
به خاطر داشته باشید که این دوره از تجربههای دانشجویان گذشته تأثیر بسیاری گرفته است. در زمان همهگیری، این دوره به صورت آنلاین ارائه شد و بسیاری از مطالب به وبسایت دوره منتقل شدند. شما میتوانید اسلایدهای دورههای گذشته را مشاهده کنید و از محتوای آنلاین بهرهمند شوید.
موضوعات اساسی HPC شامل MPI (رابط ارسال پیام)، OpenMP، GPUو CUDA هستند. اینها بهعنوان عناصر سازندهای هستند که پایههای محاسبات موازی و علمی را تشکیل میدهند. در طول دوره، با مفاهیم مختلفی همچون معماریهای حافظه مشترک و حافظه توزیعشده آشنا خواهید شد. همچنین به بررسی معماریهای نوظهور مانند معماریهای ابررایانههای ماژولار خواهیم پرداخت.
از شما تقاضا داریم که بازخورد خود را درباره این دوره ارائه دهید. نظرات شما به بهبود دوره کمک میکند و ما همیشه به دنبال افزودن جزئیات و موضوعات جدید بر اساس بازخوردهای شما هستیم.
در نهایت، این دوره به شما دیدگاه جامعی از HPCارائه خواهد داد و شما را برای کار با سیستمهای محاسبات با کارایی بالا آماده خواهد کرد. لطفاً به کانال یوتیوب ما مراجعه کنید و مطالب آموزشی را مشاهده کنید. امیدواریم از این دوره بهرهمند شوید و بازخورد ارزشمند خود را با ما در میان بگذارید.
بنابراین، ابتدا به بررسی محیطهای نرمافزاری مختلف با استفاده از محیط ماژول میپردازیم. این محیطها به کاربران اجازه میدهند تا به صورت همزمان از یک ابررایانه استفاده کنند. در این راستا، معماریها و دسترسی به دادهها در سطوح مختلف متفاوت خواهند بود. برای مثال، سطوح پایینتر به چیزی شبیه آرشیو نواری کاهش مییابند، بنابراین دسترسی به دادهها در تمام این سطوح یکسان نیست.
سپس به سیستمهای چند هستهای و توپولوژیهای شبکه GPUها میپردازیم و پارادایمهای محاسباتی نوظهور مثل محاسبات کوانتومی و ابرمحاسبات ماژولار را بررسی میکنیم. در اینجا، نگاهی به معماریهای مختلف خواهیم داشت و نحوه برنامهریزی آنها را بررسی میکنیم.
یکی از موضوعات مهم در این دوره، برنامهنویسی موازی با استفاده از MPI است. ما این موضوع را به زودی معرفی میکنیم تا دانشجویان بتوانند با آن آشنا شوند و برنامهریزی موازی را یاد بگیرند. هدف ما این است که شما درک کنید چرا به MPIنیاز داریم و چگونه میتوانیم از آن برای دسترسی به حافظه مشترک استفاده کنیم.
قدرت MPI در مجموعهای از عملیات مانند جمعآوری، پخش و کاهش نهفته است که به فرآیندهای مختلف اجازه میدهد تا به طور همزمان با حافظه خود کار کنند. با این کار، شما مفاهیم برنامهنویسی موازی و نیاز به کامپایل کدها و اجرای موازی MPIرا بهتر درک خواهید کرد.
در این دوره، نمونههای کد خوب و بد را برای شما ارائه میدهیم تا نشان دهیم چگونه میتوان بهینهسازی و کارایی در برنامهنویسی موازی را به دست آورد. همچنین، به بررسی استراتژیهای رایج برای موازیسازی میپردازیم و قوانین مربوط به این حوزه مانند قانون مور و قانون Amdahlرا بررسی میکنیم.
در نهایت، به مسائلی مانند تجزیه دامنههای جالب و تعاملات دوربرد ذرات در فیزیک میپردازیم. این موضوعات به شما کمک میکنند تا درک بهتری از مسائل پیچیده در محاسبات با کارایی بالا داشته باشید و بتوانید از تکنیکهای مناسب برای حل آنها استفاده کنید.
برای درک بهتر موضوع، متن را به صورت روانتر و منسجمتر اصلاح کردم:
در موضوعات مختلفی که پوشش میدهیم، یکی از آنها استفاده از سیستمهای مبتنی بر درخت برای موازیسازی است. در این زمینه، نحوه استفاده از MPI و ارتباطات آن اهمیت دارد. در سخنرانی سوم و چهارم به این موضوع میپردازیم و ساختار دکارتی MPI را بررسی میکنیم.
به عنوان مثال، اگر بخواهید یک اقیانوس را شبیهسازی کنید، باید برنامهریزی کنید که کشتیهای ماهیگیری چگونه در اقیانوس حرکت میکنند و ماهی میگیرند. ساختار دکارتی MPI برای این منظور بسیار مفید است، زیرا به شما اجازه میدهد که این کار را به صورت موازی انجام دهید و از امواج اقیانوس در شبیهسازی استفاده کنید.
در اینجا MPI دکارتی به شما کمک میکند که کشتیها در اقیانوس به درستی برنامهریزی شوند و با استفاده از این ساختار، میتوانید به شکل بهینهتری محاسبات را انجام دهید. همچنین در سخنرانیهای آینده به جزئیات بیشتری در مورد این موضوع و ارتباطات MPIمیپردازیم.
یکی دیگر از موضوعات مهم، نحوه مدیریت ورودی و خروجی (I/O) در محاسبات موازی است. وقتی قدرت محاسباتی زیادی دارید، نیاز به پردازش و تولید دادههای زیادی دارید. روشهای مختلفی برای مدیریت این I/O وجود دارد و تکنیکهای MPIO برای این منظور بسیار مفید هستند. این تکنیکها اجازه میدهند که تمام فرآیندها دادههای خود را در یک فایل واحد ذخیره کنند و از ایجاد چندین فایل جلوگیری میکنند.
در سخنرانی پنجم، به جزئیات بیشتری در مورد تکنیکهای ورودی و خروجی موازی میپردازیم و نمونههای کاربردی را بررسی میکنیم. در این سخنرانی، همچنین به موضوع ضرب بردار-ماتریس و عملیات مرتبط میپردازیم تا ماهیت موازیسازی را بهتر درک کنیم. ساختارهای دادهای که برای این عملیات استفاده میشوند نیز بسیار مهم هستند.
به عنوان مثال، آرایهها و مجموعه دادههای چند بعدی در MPI وجود دارند که میتوانید انواع دادههای خاص خود را ایجاد کنید تا از ارسال مکرر دادهها جلوگیری کنید.
در سخنرانی ششم، به برنامهنویسی حافظه مشترک میپردازیم. این برنامهنویسی به جای ارسال پیامها به یکدیگر، از حافظه مشترک استفاده میکند که باعث افزایش سرعت میشود. با این حال، مشکلاتی مانند شرایط رقابتی و بهروزرسانیهای از دست رفته نیز وجود دارند که باید به آنها توجه کنید.
در نهایت، در سخنرانیهای هفتم و هشتم به بررسی مسائل مهندسی نرمافزار و تنظیم برنامههای HPC میپردازیم. این فرآیند شامل اندازهگیری عملکرد، تجزیه و تحلیل و بهینهسازی برنامهها است. با استفاده از ابزارهای مختلفی مانند Vampirو Scalasca، میتوانید عملکرد برنامههای خود را بهبود بخشید و مشکلات احتمالی را شناسایی کنید.
تنظیم برنامههای HPC به دلیل پیچیدگی آنها بسیار دشوار است، به ویژه زمانی که با هزاران هسته و شتابدهنده سر و کار دارید. ابزارهای اشکالزدایی، پروفایلینگ و تحلیل عملکرد بخش مهمی از این فرآیند هستند و به شما کمک میکنند تا برنامههای خود را بهینه کنید و از مشکلات احتمالی جلوگیری کنید.
در این دوره به قدرت برنامهنویسی در مقیاس میپردازیم و به ابزارهایی اشاره میکنیم که چگونه میتوانید از برنامهنویسی خود پشتیبانی کنید.
سپس در سخنرانی نهم، موضوعات جذابی مطرح میشوند. در اینجا ما درباره شتابدهندهها و واحدهای پردازش گرافیکی (GPUs) صحبت میکنیم. بسیاری از شما احتمالاً از GPUها برای بازی استفاده کردهاید و میدانید که NVIDIA این فناوری را برای بازیها به کار میبرد. اما امروزه GPUها با معماریهای جدید مانند کپلر، پاسکال و ولتا بیشتر برای محاسبات علمی و فناوریهای پیشرفته استفاده میشوند که هیچ ارتباطی با بازی ندارند، بلکه در حل مسائل علمی و مهندسی کاربرد دارند.
ما درباره تفاوتهای سیستمهای اصلی و اکوسیستمهای مختلف بحث خواهیم کرد. مزیتهای CPU در مقابل GPU و بالعکس را بررسی خواهیم کرد و به نمونههای کاربردی که در تحقیقات ما استفاده میشوند، خواهیم پرداخت.
یادگیری عمیق و آموزشهای مرتبط با آن به طور قابل توجهی با استفاده از GPUها و گرههای مختلف در سوپرکامپیوترها انجام میشود. برای مثال، در Jülich Supercomputing Centre (JSC) از 96 GPU به طور همزمان برای حل مسائل علمی استفاده میشود.
ما به بررسی فناوریهای جدید پرداخته و در مورد کاربردهای GPUها و برنامهنویسی CUDA صحبت خواهیم کرد. سپس به یادگیری ماشینی و کاربردهای آن در زمینههای مختلف میپردازیم. اصول طبقهبندی و رگرسیون را بررسی کرده و به دورههای یادگیری ماشینی که شامل مباحث نظری بیشتری هستند، اشاره میکنیم.
یکی از دانشجویان دکترای من درباره الگوریتمهای خوشهبندی و مقیاسپذیری آنها صحبت خواهد کرد. همچنین کار با ماشینهای بردار پشتیبان (SVM) را خواهیم دید.
متن زیر اصلاح شده است. لطفاً توجه داشته باشید که برخی از جملات بازسازی و ساختاردهی شدهاند تا روانتر و قابل فهمتر باشند:
اگرچه مولکولها در لحظهای ممکن است کنار هم باقی بمانند، مشکل اصلی این است که آیا آنها در طول زمان نیز کنار هم میمانند یا خیر. به این فرآیند دینامیک مولکولی میگوییم. یک میدان نیروی مشخص از مولکولها وجود دارد که ممکن است باعث شود اتصال بین آنها باز شود و نتوانند در کنار هم باقی بمانند. در این راستا، کتابخانههای مختلفی مانند ساخت مدل به کمک کهربا و پالایش انرژی با کهربا ایجاد میشوند.
در زمینههای پزشکی و توسعه دارو، آنچه در سخنرانی 14 مورد بحث قرار خواهد گرفت، اهمیت محاسبات دقیق و حمایت کتابخانههای مختلف است که در اینجا مشاهده میکنید، مانند numd، cpmd، codes، و amber. این ابزارها هر کدام قابلیتهای منحصربهفردی دارند و در محاسبات علمی مهم هستند. استفاده از این ابزارها به جای تلاش برای ایجاد کدهای جدید و کتابخانههای خودتان میتواند بسیار مفیدتر باشد.
سخنرانی 15 به زمینه سیستمهای زمینی اختصاص دارد. در اینجا بررسی میکنیم که چگونه میتوان جهان را به طور ملموس و دقیقتر مدلسازی کرد. برای مثال، مدلسازی آب از نظر جو و سطح زمین. مدل زمین جامعه شامل جریانهای زیرسطحی نیز هست که همگی با هم تعیین میکنند که جریان آب در یک عنصر زمینی خاص چگونه است. اینجا استفاده از محاسبات موازی مورد بررسی قرار میگیرد و تکنیکی به نام کوپلینگ استفاده میشود که در برنامههای موازی هیدرولوژی جریان نیرو کاربرد دارد.
مشکلات آب و هوایی شدیدی که اخیراً در آمریکا با آنها مواجه بودهایم، مانند طوفانها و سیلها، از مواردی هستند که باید مطالعه و پیشبینیهای دقیقتری برای آنها انجام شود. در بخش دوم سخنرانی 15، مدلها و کتابخانههای خاصی مورد نیاز هستند که در این راستا استفاده میشوند.
سخنرانی 16 بیشتر غیررسمی خواهد بود و به بررسی شغلها و مهارتهای مورد نیاز در بازار کار از نظر محاسبات قدرتمند hpcمیپردازد. شما یاد میگیرید که چگونه با چالشها کنار بیایید و از مهارتهای برنامهنویسی hpc استفاده کنید. این سخنرانی به موقعیتهای دکتری و موضوعات کارشناسی ارشد مرتبط با محاسبات علمی و ابزارهای hpc اختصاص دارد.
در نهایت، در مورد آینده محاسبات کوانتومی و کاربردهای آن صحبت خواهیم کرد. همچنین نسخههای بهروز شده دورههای آموزشی رایانش ابری و دادههای بزرگ که در پاییز برگزار میشود، معرفی میگردد. این دورهها شامل یادگیری ماشینی موازی و مقیاسپذیر و مجموعههای داده بزرگ هستند.
امیدوارم این دورهها شما را تشویق به مشارکت در محاسبات با کارایی بالا کند. با شرکت در این دورهها شما بخشی از جامعه hpcخواهید شد که در خط مقدم محاسبات علمی قرار دارد و به شما فرصت میدهد تا به ارتقاء نوآوری و بهبود کیفیت زندگی کمک کنید.
در سخنرانی 10، به موضوعات مختلف یادگیری ماشینی و تأثیر GPUها در این زمینه خواهیم پرداخت. در سخنرانیهای بعدی، به کاربردهای HPCدر علوم اعصاب و سلامت پرداخته و نقش کانتینرها، محاسبات ابری و دادههای بزرگ را بررسی خواهیم کرد.
در سخنرانی 12، به مشکلات فیزیکی و قوانین فیزیکی و روشهای عددی خواهیم پرداخت. روشهای مختلفی مانند دینامیک سیالات و شبیهسازیهای گردابی بزرگ (LES) را بررسی کرده و نقش آنها را در کاربردهای مختلف توضیح خواهیم داد.
در زمینه زیستشناسی سیستمها و بیوانفورماتیک، به نقش عدم قطعیت و روشهای مونت کارلو در پژوهشهای زیستی خواهیم پرداخت. در سخنرانی 13، به موضوعاتی مانند تا کردن پروتئینها و نقش HPCدر درک بیماریهای مرتبط با آن خواهیم پرداخت.
در نهایت، در سخنرانی 14، به مقیاسهای کوچک و بزرگ در HPC پرداخته و کاربردهای آن را در زمینههای مختلف توضیح خواهیم داد.
با این برنامه، به درک بهتری از HPCو کاربردهای گسترده آن در علوم مختلف خواهیم رسید.