رایانش چند‌هسته‌ای

Multicore Computing

مقطع: کارشناسی گرایش: معماری کامپیوتر
نوع درس: نظری تعداد واحد: ۳
پیش‌نیاز: برنامه‌سازی پیشرفته، معماری کامپیوتر هم‌نیاز: –

هدف کلی

هدف اصلی درس آشنایی با ساختار سیستم‌های چندهسته‌ای و پرهسته‌ای و برنامه‌نویسی موازی برای این سیستم‌ها است. به این منظور، ابتدا معماری کلی، مفاهیم اولیه و چالش‌های موجود در سیستم‌های چندهسته‌ای و پرهسته‌ای ارائه می‌گردد. در ادامه، ابزار و روش‌های برنامه‌نویسی موازی روی چند بستر چندهسته‌ای و پر‌هسته‌ای معرفی می‌شود.

سرفصل‌ها

  • معرفی معماری سیستم‌های چندهسته‌ای و مدل‌های برنامه‌نوسی موازی
    • تاریخچه ظهور سیستم‌های چند‌هسته‌ای
    • چالش‌های برنامه‌نویسی کارا روی سیستم‌های چند‌هسته‌ای
    • معرفی سطوح موازات در برنامه‌ها
    • تحلیل تسریع در سیستم‌های چند‌هسته‌ای همگون و ناهمگون
    • ارائه‌ی چند نمونه واقعی از سیستم‌های چند‌هسته‌ای
  • چند‌پردازنده‌ها با حافظه مشترک
    • معرفی کلی معماری
    • ارائه‌ی مسئله‌ی Cache Coherence و راه‌حل‌ها
    • معرفی اجمالی مدل برنامه‌نویسی و نحوه همگام‌سازی نخ‌ها
    • نحوه برخورد با ناحیه‌های بحرانی
    • ایده‌های کلی در بهبود برنامه‌های موازی
  • الگو‌های رایج موازی‌سازی محاسبات و مدیریت داده
    • الگوهای محاسباتی موازی: Map, Reduction, Scan, Stencil, Recurrence, Fork-Join
    • الگوهای موازی مدیریت داده: Gather, Scatter, Pack, Geometric Decomposition & Partitions
  • برنامه‌نویسی موازی عمومی در سیستم‌های چند‌هسته‌ای
    • برنامه‌نویسی با Pthreads
    • برنامه‌نویسی با OpenMP
  • برنامه‌نوسی موازی در سیستم‌های برداری
    • معرفی کلی سیستم‌های برداری و آرایه‌ای
    • معرفی ISA مخصوص پردازنده Intel برای محاسبات SIMD
    • معرفی معماری و نحوه برنامه‌نویسی پردازنده CELL BE
  • برنامه‌نویسی موازی در پردازنده‌های گرافیکی عام‌منظوره
    • معرفی جامع معماری پردازنده‌های گرافیکی
    • معرفی معماری چند نمونه واقعی از پردازنده‌های گرافیکی شرکت NVIDIA
    • برنامه‌نویسی با زبان CUDA
    • معرفی Profiler شرکت NVIDIA
  • معرفی اجمالی برنامه‌نویسی موازی در سیستم‌های توزیع‌شده
    • معرفی کتابخانه Message Passing Interface (MPI) و نحوه‌ی برنامه‌نویسی موازی براساس مدل تبادل پیام

ارزیابی پیشنهادی

  • تمرین‌های نظری: ۳ نمره
  • آزمون‌های میان‌ترم و پایانی: ۱۵ نمره
  • آزمونک‌ها: ۲ نمره

منابع پیشنهادی

  1. D. A. Patterson and J. L. Hennessy. Computer Architecture: A quantitative approach. 6th Edition, Morgan Kaufmann, 2019.
  2. J. Sanders and E. Kandrot. CUDA by examples: An Introduction to General-Purpose GPU Programming. Addison-Wesley, 2011.
  3. D. B. Kirk, W. W. Hwu, and I. E. Hajj. Programming massively parallel processors: A hands-on approach. 4th Edition, Morgan Kaufmann, 2022.
  4. M. McCool, A. D. Robison, and J. Reinders. Structured Parallel Programming: Patterns for Efficient Computation. Elsevier, 2012.