کتاب مقدمهای بر MPI (Message Passing Interface) با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
قدرت محاسبات را آزاد کنید: دوره مقدماتی MPI قدرت محاسبات را آزاد کنید: دوره مقدماتی MPI معرفی دوره آیا آمادهاید تا مرزهای محاسبات خود را فراتر ببرید؟ آیا میخواهید نرمافزاری بسازید که بتواند پیچیده...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره مقدمهای بر MPI (Message Passing Interface)
موضوع کلی: برنامه نویسی
موضوع میانی: محاسبات سطح بالا (High-Performance Computing)
📋 سرفصلهای دوره
- 1. مقدمهای بر محاسبات موازی
- 2. چرا به پردازش موازی نیاز داریم؟ قانون مور و فراتر از آن
- 3. معماریهای موازی: حافظه مشترک در مقابل حافظه توزیع شده
- 4. طبقهبندی فلین (SISD, SIMD, MISD, MIMD)
- 5. آشنایی با محاسبات سطح بالا (HPC) و خوشههای کامپیوتری
- 6. مدلهای برنامهنویسی موازی: MPI، OpenMP و دیگران
- 7. تاریخچه و اهداف MPI (Message Passing Interface)
- 8. استاندارد MPI و نسخههای مختلف آن
- 9. راهاندازی محیط توسعه: کامپایلرها و کتابخانههای MPI
- 10. اولین برنامه MPI: "سلام، دنیای موازی!"
- 11. مفاهیم پایه: Communicator، Rank و Size
- 12. مقداردهی اولیه و پایانی محیط MPI: `MPI_Init` و `MPI_Finalize`
- 13. دریافت شناسه و تعداد فرآیندها: `MPI_Comm_rank` و `MPI_Comm_size`
- 14. مدل ارتباط نقطه به نقطه (Point-to-Point)
- 15. ارسال مسدودکننده (Blocking Send): `MPI_Send`
- 16. دریافت مسدودکننده (Blocking Receive): `MPI_Recv`
- 17. تجزیه و تحلیل آرگومانهای `MPI_Send` و `MPI_Recv`
- 18. مفهوم بنبست (Deadlock) و راههای جلوگیری از آن
- 19. نقش بافر در ارتباطات MPI
- 20. شیء وضعیت (Status Object): `MPI_Status`
- 21. دریافت اطلاعات از `MPI_Status`: منبع، تگ و خطا
- 22. بررسی وجود پیام بدون دریافت آن: `MPI_Probe`
- 23. دریافت تعداد عناصر پیام: `MPI_Get_count`
- 24. انگیزه استفاده از ارتباطات غیرمسدودکننده (Non-blocking)
- 25. ارسال غیرمسدودکننده: `MPI_Isend`
- 26. دریافت غیرمسدودکننده: `MPI_Irecv`
- 27. شیء درخواست (Request Object): `MPI_Request`
- 28. انتظار برای تکمیل یک درخواست: `MPI_Wait`
- 29. تست تکمیل یک درخواست بدون انتظار: `MPI_Test`
- 30. مدیریت چندین درخواست: `MPI_Waitall` و `MPI_Testall`
- 31. مدیریت چندین درخواست: `MPI_Waitany` و `MPI_Testany`
- 32. حالتهای مختلف ارسال: همزمان (Synchronous) `MPI_Ssend`
- 33. حالتهای مختلف ارسال: بافری (Buffered) `MPI_Bsend`
- 34. حالتهای مختلف ارسال: آماده (Ready) `MPI_Rsend`
- 35. ترکیب ارسال و دریافت: `MPI_Sendrecv`
- 36. جایگزینی بافر با `MPI_Sendrecv_replace`
- 37. مقدمهای بر ارتباطات جمعی (Collective Communications)
- 38. همگامسازی تمام فرآیندها: `MPI_Barrier`
- 39. پخش سراسری داده از یک فرآیند به همه: `MPI_Bcast`
- 40. توزیع داده از یک فرآیند به همه: `MPI_Scatter`
- 41. جمعآوری داده از همه فرآیندها در یک فرآیند: `MPI_Gather`
- 42. جمعآوری داده از همه و توزیع آن به همه: `MPI_Allgather`
- 43. ارتباط همه با همه: `MPI_Alltoall`
- 44. عملیات کاهشی (Reduction): مفاهیم و عملگرها (`MPI_Op`)
- 45. اجرای عملیات کاهشی و جمعآوری نتیجه: `MPI_Reduce`
- 46. اجرای عملیات کاهشی و پخش نتیجه به همه: `MPI_Allreduce`
- 47. محاسبه پیشوندی (Prefix Sum) با `MPI_Scan`
- 48. کاهش-پخش ترکیبی: `MPI_Reduce_scatter`
- 49. ارتباطات جمعی با اندازههای متغیر: `MPI_Gatherv` و `MPI_Scatterv`
- 50. ارتباطات جمعی با اندازههای متغیر: `MPI_Allgatherv` و `MPI_Alltoallv`
- 51. استفاده از `MPI_IN_PLACE` در ارتباطات جمعی
- 52. ارتباطات جمعی غیرمسدودکننده: `MPI_Ibarrier`
- 53. ارتباطات جمعی غیرمسدودکننده: `MPI_Ibcast`, `MPI_Iscatter`, `MPI_Igather`
- 54. ارتباطات جمعی غیرمسدودکننده: `MPI_Ireduce`, `MPI_Iallreduce`
- 55. مقدمهای بر گروهها (Groups) و Communicator ها
- 56. استخراج گروه از یک Communicator: `MPI_Comm_group`
- 57. ایجاد گروههای جدید با `MPI_Group_incl` و `MPI_Group_excl`
- 58. عملیات مجموعهای روی گروهها: اجتماع، اشتراک و تفاضل
- 59. ایجاد Communicator جدید از یک گروه: `MPI_Comm_create`
- 60. تقسیم یک Communicator به زیرگروهها: `MPI_Comm_split`
- 61. ایجاد یک کپی از Communicator: `MPI_Comm_dup`
- 62. مقایسه Communicator ها
- 63. Communicator های داخلی (Intra-communicators) و خارجی (Inter-communicators)
- 64. مقدمهای بر توپولوژیهای مجازی
- 65. چرا از توپولوژیها استفاده میکنیم؟ نگاشت به سختافزار
- 66. ایجاد توپولوژی دکارتی (Cartesian): `MPI_Cart_create`
- 67. دریافت مختصات و رنک در توپولوژی دکارتی: `MPI_Cart_coords` و `MPI_Cart_rank`
- 68. جابجایی در شبکههای دکارتی: `MPI_Cart_shift`
- 69. تقسیمبندی توپولوژی دکارتی: `MPI_Cart_sub`
- 70. ایجاد توپولوژی گرافی (Graph): `MPI_Graph_create`
- 71. پرسوجو از همسایهها در توپولوژی گرافی
- 72. انگیزه استفاده از انواع داده مشتقشده (Derived Datatypes)
- 73. ایجاد نوع داده پیوسته: `MPI_Type_contiguous`
- 74. ایجاد نوع داده برداری: `MPI_Type_vector`
- 75. ارسال ستونهای یک ماتریس با نوع داده برداری
- 76. ایجاد نوع داده اندیسگذاری شده: `MPI_Type_indexed`
- 77. ایجاد نوع داده ساختاری (Struct): `MPI_Type_create_struct`
- 78. تراز بندی و بستهبندی دادهها در Struct
- 79. نهایی کردن یک نوع داده: `MPI_Type_commit`
- 80. استفاده از انواع داده مشتقشده در ارتباطات
- 81. مقدمهای بر ارتباطات یکطرفه (One-Sided / RMA)
- 82. ایجاد و آزادسازی پنجرههای حافظه: `MPI_Win_create` و `MPI_Win_free`
- 83. قرار دادن داده در حافظه راه دور: `MPI_Put`
- 84. گرفتن داده از حافظه راه دور: `MPI_Get`
- 85. عملیات اتمی در حافظه راه دور: `MPI_Accumulate`
- 86. همگامسازی در RMA: مدل Fences (`MPI_Win_fence`)
- 87. همگامسازی در RMA: مدل Post-Start-Complete-Wait
- 88. همگامسازی در RMA: مدل قفلها (Locks)
- 89. مدیریت پویای فرآیندها: `MPI_Comm_spawn`
- 90. ارتباط بین گروههای فرآیندی مجزا: `MPI_Comm_connect` و `MPI_Comm_accept`
- 91. مقدمهای بر ورودی/خروجی موازی (MPI-IO)
- 92. باز کردن و بستن فایلها در MPI-IO: `MPI_File_open`
- 93. ورودی/خروجی مستقل در مقابل ورودی/خروجی جمعی
- 94. تنظیم نما (View) و اشارهگرهای اشتراکی فایل
- 95. خواندن و نوشتن جمعی با `MPI_File_read_all` و `MPI_File_write_all`
- 96. اندازهگیری زمان و عملکرد: `MPI_Wtime`
- 97. معیارهای ارزیابی عملکرد: افزایش سرعت (Speedup) و کارایی (Efficiency)
- 98. قوانین امدال و گوستافسون
- 99. اشکالزدایی (Debugging) و پروفایلینگ (Profiling) برنامههای MPI
- 100. برنامهنویسی ترکیبی (Hybrid): MPI + OpenMP
تگها:
CUDA
Data Science
Distributed computing
High-Performance Computing
HPC
Message Passing Interface
MPI
OpenMP
Parallel programming
scalability
برنامه نویسی موازی
توزیع شده
علم داده
محاسبات علمی
محاسبات موازی
مقیاس پذیری
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.