کتاب برنامهنویسی سیستم های توزیع شده با C و MPI با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
برنامهنویسی سیستمهای توزیع شده با C و MPI: دروازهای به دنیای محاسبات پیشرفته برنامهنویسی سیستمهای توزیع شده با C و MPI: فتح قلههای محاسبات پیشرفته آیا میخواهید به یک متخصص واقعی در زمینه برنامه...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره برنامهنویسی سیستم های توزیع شده با C و MPI
موضوع کلی: برنامه نویسی
موضوع میانی: سی (C)
📋 سرفصلهای دوره
- 1. مقدمهای بر دوره و اهداف یادگیری
- 2. چرا زبان C برای برنامهنویسی سیستمهای توزیع شده؟
- 3. مروری بر مفاهیم ضروری C: اشارهگرها و مدیریت حافظه
- 4. مروری بر مفاهیم ضروری C: ساختارها (Structs) و آرایهها
- 5. کامپایل، لینک و ساخت پروژههای C با Makefile
- 6. مقدمهای بر سیستمعامل: فرآیندها (Processes) و ریسهها (Threads)
- 7. ارتباط بین فرآیندی (IPC) در یک سیستم: Pipe و Shared Memory
- 8. مقدمهای بر شبکههای کامپیوتری و مدل TCP/IP
- 9. برنامهنویسی سوکت مقدماتی در C
- 10. دیباگ کردن برنامههای C با GDB
- 11. مقدمهای بر رایانش موازی و توزیع شده
- 12. معماریهای رایانش موازی: حافظه مشترک در مقابل حافظه توزیع شده
- 13. مدل برنامهنویسی پاس دادن پیام (Message Passing)
- 14. معیارهای عملکرد: افزایش سرعت (Speedup) و کارایی (Efficiency)
- 15. قانون امدال (Amdahl's Law) و قانون گوستافسون (Gustafson's Law)
- 16. مقیاسپذیری قوی (Strong Scaling) و ضعیف (Weak Scaling)
- 17. معرفی استاندارد MPI: تاریخچه و اهداف
- 18. نصب و راهاندازی محیط توسعه MPI
- 19. اولین برنامه MPI: سلام، دنیای موازی!
- 20. اجرای برنامههای MPI با mpirun و mpiexec
- 21. مفاهیم پایه: Communicator، Rank و Size
- 22. مقداردهی اولیه و نهایی کردن محیط MPI: `MPI_Init` و `MPI_Finalize`
- 23. ارتباط نقطه به نقطه (Point-to-Point): ارسال و دریافت پایه
- 24. ارسال مسدودکننده (Blocking Send): `MPI_Send`
- 25. دریافت مسدودکننده (Blocking Receive): `MPI_Recv`
- 26. بنبست (Deadlock) در ارتباطات مسدودکننده و راههای جلوگیری از آن
- 27. استفاده از تگ پیام (Message Tag) برای تمایز پیامها
- 28. بررسی وضعیت پیام دریافتی با ساختار `MPI_Status`
- 29. کاوش برای پیامهای ورودی: `MPI_Probe` و `MPI_Iprobe`
- 30. ارتباطات غیرمسدودکننده (Non-blocking): `MPI_Isend` و `MPI_Irecv`
- 31. تکمیل ارتباطات غیرمسدودکننده: `MPI_Wait` و `MPI_Test`
- 32. انتظار برای چندین عملیات غیرمسدودکننده: `MPI_Waitall` و `MPI_Waitany`
- 33. حالتهای مختلف ارسال: استاندارد، بافری، همگام و آماده
- 34. ارسال بافری (Buffered Send): `MPI_Bsend`
- 35. ارسال همگام (Synchronous Send): `MPI_Ssend`
- 36. عملیات ترکیبی ارسال و دریافت: `MPI_Sendrecv`
- 37. اندازهگیری زمان در برنامههای موازی: `MPI_Wtime`
- 38. مقدمهای بر ارتباطات گروهی (Collective Communications)
- 39. همگامسازی فرآیندها با `MPI_Barrier`
- 40. پخش سراسری داده (Broadcast): `MPI_Bcast`
- 41. پخش قطعهای داده (Scatter): `MPI_Scatter`
- 42. جمعآوری داده (Gather): `MPI_Gather`
- 43. جمعآوری سراسری داده (All-gather): `MPI_Allgather`
- 44. ارسال و دریافت از همه به همه: `MPI_Alltoall`
- 45. عملیات کاهشی (Reduction): `MPI_Reduce`
- 46. عملگرهای کاهشی از پیش تعریف شده (MPI_SUM, MPI_MAX, ...)
- 47. عملیات کاهشی سراسری: `MPI_Allreduce`
- 48. عملیات اسکن (پیشوند): `MPI_Scan`
- 49. نسخههای برداری ارتباطات گروهی: `MPI_Gatherv`, `MPI_Scatterv`, `MPI_Allgatherv`
- 50. انتخاب عملیات گروهی مناسب برای هر سناریو
- 51. مقدمهای بر انواع داده مشتق شده (Derived Datatypes)
- 52. ایجاد نوع داده پیوسته (Contiguous)
- 53. ایجاد نوع داده برداری (Vector)
- 54. ایجاد نوع داده ایندکس شده (Indexed)
- 55. ایجاد نوع داده ساختاری (Struct)
- 56. ثبت نهایی نوع داده جدید: `MPI_Type_commit`
- 57. مفهوم گروهها (Groups) و Communicator های جدید
- 58. ایجاد یک گروه از فرآیندها
- 59. ایجاد Communicator جدید از یک گروه: `MPI_Comm_create`
- 60. تقسیم یک Communicator به زیرگروهها: `MPI_Comm_split`
- 61. مقدمهای بر توپولوژیهای مجازی (Virtual Topologies)
- 62. توپولوژیهای دکارتی (Cartesian)
- 63. ایجاد یک شبکه دکارتی: `MPI_Cart_create`
- 64. بهدست آوردن مختصات و همسایهها در شبکه دکارتی
- 65. توپولوژیهای گرافی (Graph)
- 66. مقدمهای بر ارتباطات یکطرفه (One-Sided Communication / RMA)
- 67. ایجاد پنجره حافظه (Memory Window): `MPI_Win_create`
- 68. عملیات نوشتن از راه دور: `MPI_Put`
- 69. عملیات خواندن از راه دور: `MPI_Get`
- 70. عملیات تجمعی از راه دور: `MPI_Accumulate`
- 71. همگامسازی در ارتباطات یکطرفه: Fences
- 72. همگامسازی در ارتباطات یکطرفه: Locks
- 73. چالش ورودی/خروجی موازی (Parallel I/O)
- 74. مقدمهای بر MPI-IO
- 75. باز کردن و بستن فایلهای موازی: `MPI_File_open`
- 76. تنظیم نما و اشارهگر فایل: `MPI_File_set_view`
- 77. عملیات خواندن و نوشتن گروهی در فایلها
- 78. عملیات خواندن و نوشتن غیرگروهی در فایلها
- 79. تحلیل عملکرد و ابزارهای پروفایلینگ (Profiling)
- 80. شناسایی گلوگاههای ارتباطی در برنامه
- 81. استراتژیهای توازن بار (Load Balancing): ایستا و پویا
- 82. همپوشانی محاسبات و ارتباطات برای افزایش کارایی
- 83. تأثیر تأخیر (Latency) و پهنای باند (Bandwidth) بر عملکرد
- 84. الگوریتمهای موازی: ضرب ماتریس در بردار
- 85. الگوریتمهای موازی: ضرب ماتریس در ماتریس (الگوریتم Cannon)
- 86. الگوریتمهای موازی: مرتبسازی (Odd-Even Sort)
- 87. مطالعه موردی: حل معادلات دیفرانسیل با مشتقات جزئی (روش ژاکوبی)
- 88. مطالعه موردی: شبیهسازی N-Body
- 89. الگوهای طراحی موازی: استاد-کارگر (Master-Worker)
- 90. الگوهای طراحی موازی: SPMD (Single Program, Multiple Data)
- 91. مقدمهای بر برنامهنویسی ترکیبی (Hybrid Programming)
- 92. ترکیب MPI و OpenMP
- 93. ملاحظات Thread Safety در MPI: `MPI_Init_thread`
- 94. ترکیب MPI و Pthreads
- 95. مدیریت خطا در MPI
- 96. استفاده از ویژگیهای مدرن C (C11/C17) در برنامههای MPI
- 97. بهترین شیوهها در کدنویسی MPI
- 98. جمعبندی دوره و مرور مفاهیم کلیدی
- 99. آینده استاندارد MPI و مسیرهای پیش رو
- 100. راهنمای طراحی و پیادهسازی پروژه نهایی
تگها:
C Programming
C#
Distributed Systems
Message Passing Interface
MPI
MPI C
Parallel programming
Programming
آموزش C++
برنامه نویسی
برنامه نویسی C++
برنامه نویسی موازی
دوره آموزشی C#
سیستم های توزیع شده
یادگیری C++
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.