You are not allowed to perform this action

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

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. Morgan Kaufmann, 2019.
  2. J. Sanders and E. Kandrot. CUDA by examples: An introduction to GPGPU programming. Addison-Wesley, 2011.
  3. D. B. Kirk and W. W. Hwu. Programming massively parallel processors: A hands-on approach. NVIDIA, 2010.
  4. M. McCool, A.D. Robison, and J. Reinders. Structured Parallel Programming. Elsevier, 2012.