آموزش برنامه‌نویسی چند هسته‌ای و GPGPU - آخرین آپدیت

دانلود Multicore and GPGPU Programming

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره: دوره «برنامه‌نویسی چند هسته‌ای و GPGPU» درک بنیادی از برنامه‌نویسی موازی را با تمرکز بر توسعه برنامه‌های چندرشته‌ای با کارایی بالا در محیط‌های CPU و GPU فراهم می‌کند. این دوره با مرور معماری پردازنده‌های چند هسته‌ای، مکانیزم‌های حافظه نهان (Caching) و سیستم‌های دسترسی غیریکسان به حافظه (NUMA) آغاز شده و دانشجویان مفاهیم ضروری برنامه‌نویسی حافظه مشترک، تکنیک‌های همگام‌سازی و استفاده از قفل‌ها (Locks) برای تضمین یکپارچگی داده‌ها در رشته‌ها را فرا می‌گیرند. در ادامه، این دوره به طراحی ساختارهای داده حافظه مشترک و معرفی مفاهیم پیشرفته همگام‌سازی، از جمله همگام‌سازی تنبل (Lazy Synchronization) می‌پردازد که برای برنامه‌های همزمان مقیاس‌پذیر و کارآمد حیاتی است. علاوه بر این، دانشجویان معماری و مدل برنامه‌نویسی واحدهای پردازش گرافیکی برای کاربردهای عمومی (GPGPUs) را بررسی کرده و برنامه‌نویسی CUDA را برای بهره‌گیری از موازی‌سازی GPU در وظایف محاسباتی سنگین می‌آموزند. در پایان دوره، دانشجویان در بهینه‌سازی برنامه‌های چندرشته‌ای و چند هسته‌ای، توازن بار کاری بین CPU و GPU برای دستیابی به توان عملیاتی بالا و بهره‌وری بهینه از منابع مهارت می‌یابند. این دوره برای کسانی که هدفشان کسب تخصص در محاسبات با کارایی بالا (HPC) و برنامه‌نویسی موازی برای سیستم‌های مدرن مبتنی بر GPU و چند هسته‌ای است، ضروری است.

سرفصل ها و درس ها

معرفی دوره Course Introduction

  • ویدیو معرفی دوره Course Introductory Video

  • آشنایی با مدرس: دکتر گارگی پرابهو Meet Your Instructor - Dr. Gargi Prabhu

  • آشنایی با مدرس: دکتر کونال کورگاونکار Meet Your Instructor - Dr. Kunal Korgaonkar

  • ضبط جلسه زنده هفته اول برنامه‌نویسی چند هسته‌ای و GPGPU Recording of Multicore and GPGPU Programming: Week 1 - Live Session on 25-05-23 18:32:50 [47:25]

آشنایی با برنامه‌نویسی موازی و چند هسته‌ای Introduction to Parallel and Multicore Programming

  • ضرورت افزایش مداوم کارایی Need for Ever-Increasing Performance

  • سیستم‌های موازی و برنامه‌های موازی Parallel Systems and Parallel Programs

  • سیستم‌های همزمان، موازی و توزیع‌شده Concurrent, Parallel, Distributed Systems

  • انواع موازی‌سازی: موازی‌سازی داده‌ها، وظایف و خط لوله (Pipeline) Types of Parallelism: Data, Task and Pipeline Parallelism

  • شتاب (Speedup) و کارایی Speedup and Efficiency

  • قانون آمدال Amdahl’s Law

  • قانون گوستافسون Gustafson’s Law

  • مقیاس‌پذیری در سیستم‌های موازی Scalability in Parallel Systems

  • هزینه موازی‌سازی Cost of Parallelisation

  • منابع سربار در برنامه‌های موازی Sources of Overhead in Parallel Programs

  • زمان‌بندی برنامه‌های موازی: روش‌ها و بهترین تجربیات Timing Parallel Programs: Methods and Best Practices

  • کارایی GPU GPU Performance

معماری پردازنده‌های چند هسته‌ای و مکانیزم‌های حافظه نهان Multicore Processor Architectures and Caching Mechanisms

  • معماری فون نویمان The Von Neumann Architecture

  • پروسه‌ها، چندوظیفگی و رشته‌ها Processes, Multitasking, and Threads

  • مبانی حافظه نهان (Caching) The Basics of Caching

  • حافظه مجازی Virtual Memory

  • موازی‌سازی در سطح دستورالعمل Instruction-Level Parallelism

  • چند رشته‌ای سخت‌افزاری Hardware Multithreading

  • دسته‌بندی کامپیوترهای موازی Classifications of Parallel Computers

  • سیستم‌های SIMD و MIMD SIMD and MIMD Systems

  • شبکه‌های اتصال: سیستم‌های حافظه مشترک Interconnection Networks: Shared Memory Systems

  • شبکه‌های اتصال: سیستم‌های حافظه توزیع‌شده Interconnection Networks: Distributed Memory Systems

  • پایداری حافظه نهان (Cache Coherence) Cache Coherence

  • مقایسه حافظه مشترک در مقابل حافظه توزیع‌شده Shared-Memory vs. Distributed-Memory

  • نرم‌افزار موازی: هماهنگی پروسه‌ها و رشته‌ها Parallel Software: Coordinating Process and Threads

  • نرم‌افزار حافظه توزیع‌شده Distributed Memory Software

  • ضبط جلسه زنده هفته دوم برنامه‌نویسی چند هسته‌ای و GPGPU Recording of Multicore and GPGPU Programming: Week 2 - Live Session on 25-05-30 18:35:08 [02:05]

مرور معماری GPGPU و مدل برنامه‌نویسی GPGPU Architecture and Programming Model Overview

  • بررسی GPUها و GPGPU GPUs and GPGPU

  • معماری GPU GPU Architecture

  • محاسبات ناهمگن (Heterogeneous Computing) Heterogeneous Computing

  • پارادایم محاسبات ناهمگن Paradigm of Heterogeneous Computing

  • آشنایی با CUDA Introduction to CUDA

  • ساختار یک برنامه CUDA Structure of a CUDA Program

  • رشته‌ها، بلوک‌ها و گرید (Grid) Threads, Blocks, and Grid

  • مدیریت حافظه Managing Memory

  • نوشتن و تایید هسته (Kernel) برنامه Writing and Verifying Your Kernel

  • کامپایل و اجرای برنامه CUDA Compiling and Running CUDA Program

  • قابلیت‌های محاسباتی Nvidia و معماری دستگاه Nvidia Compute Capabilities and Device Architecture

  • زمان‌بندی هسته برنامه Timing Your Kernel

  • سازماندهی رشته‌های موازی Organising Parallel Threads

  • مدیریت دستگاه‌ها Managing Devices

  • ضبط جلسه زنده هفته سوم برنامه‌نویسی چند هسته‌ای و GPGPU Recording of Multicore and GPGPU Programming: Week 3 - Live Session on 25-06-06 18:31:21 [44:50]

مدل اجرای Cuda Cuda Execution Model

  • آشنایی با مدل اجرای CUDA Introduction to CUDA Execution Model

  • وارپ‌ها (Warps) و بلوک‌های رشته Warps and Thread Blocks

  • واگرایی وارپ (Warp Divergence) Warp Divergence

  • افراز منابع Resource Partitioning

  • پنهان‌سازی تاخیر (Latency Hiding) Latency Hiding

  • میزان اشغال (Occupancy) Occupancy

  • همگام‌سازی Synchronization

  • مقیاس‌پذیری Scalability

  • نمایان کردن موازی‌سازی Exposing Parallelism

  • بررسی وارپ‌های فعال با Nvprof Checking Active Warps with Nvprof

  • بررسی عملیات حافظه با Nvprof Checking Memory Operations with Nvprof

  • جلوگیری از واگرایی شاخه Avoiding Branch Divergence

  • مسئله کاهش موازی (Parallel Reduction) و واگرایی رشته The Parallel Reduction Problem and Thread Divergence

  • بهبود واگرایی در کاهش موازی Improving Divergence in Parallel Reduction

  • ضبط جلسه زنده هفته چهارم برنامه‌نویسی چند هسته‌ای و GPGPU Recording of Multicore and GPGPU Programming: Week 4 - Live Session on 25-06-13 18:32:39 [49:37]

مدل حافظه CUDA، استریم‌ها و همزمانی CUDA Memory Model and Streams and Concurrency

  • آشنایی با مدل حافظه CUDA Introduction to CUDA Memory Model

  • تخصیص و آزادسازی حافظه Memory Allocation and Deallocation

  • حافظه Zero Copy Zero Copy Memory

  • آدرس‌دهی مجازی یکپارچه و حافظه یکپارچه Unified Virtual Addressing and Unified Memory

  • دسترسی تراز شده و ادغام شده (Coalesced Access) Aligned and Coalesced Access

  • حافظه مشترک CUDA CUDA Shared Memory

  • بانک‌های حافظه مشترک و حالت دسترسی Shared Memory Banks and Access Mode

  • پیکربندی مقدار حافظه مشترک Configuring the Amount of Shared Memory

  • همگام‌سازی Synchronisation

  • استریم‌های CUDA CUDA Streams

  • زمان‌بندی استریم و اولویت‌ها Stream Scheduling and Priorities

  • رویدادهای CUDA CUDA Events

  • اجرای همزمان هسته (Kernel) Concurrent Kernel Execution

  • ضبط جلسه زنده هفته پنجم برنامه‌نویسی چند هسته‌ای و GPGPU Recording of Multicore and GPGPU Programming: Week 5 - Live Session on 25-06-20 18:31:59 [47:36]

برنامه‌نویسی حافظه مشترک با Pthreads Shared-Memory Programming with Pthreads

  • پروسه‌ها، رشته‌ها و Pthreads Processes, Threads and Pthreads

  • برنامه Hello World Hello World!!

  • ضرب ماتریس در بردار Matrix-Vector Multiplication

  • بخش‌های بحرانی (Critical Sections) Critical Sections

  • انتظار فعال (Busy Waiting) Busy Waiting

  • موتکس‌ها (Mutexes) Mutexes

  • سمافورها Semaphores

  • سدهای synchronisation و متغیرهای شرطی Barriers and Condition Variables

  • حافظه‌های نهان، پایداری نهان و اشتراک کاذب (False Sharing) Caches, Cache-Coherence and False Sharing

  • ضبط جلسه زنده هفته ششم برنامه‌نویسی چند هسته‌ای و GPGPU Recording of Multicore and GPGPU Programming: Week 6 - Live Session on 25-06-27 18:38:36 [43:53]

برنامه‌نویسی حافظه توزیع‌شده با MPI Distributed Memory Programming with MPI

  • آشنایی با MPI Introduction to MPI

  • راه‌اندازی MPI و توابع ارتباط‌دهنده MPI Setup and Communicator Functions

  • مدل SPMD و ارتباطات SPMD and Communication

  • اشتباهات رایج و خطرات احتمالی Potential Pitfalls

  • الگوریتم ساده مرتب‌سازی سریال Simple Serial Sorting Algorithm

  • مرتب‌سازی جابجایی زوج-فرد موازی Parallel Odd-Even Transposition Sort

  • ایمنی در برنامه‌های MPI Safety in MPI Programs

برنامه‌نویسی حافظه مشترک با OpenMP Shared-Memory Programming with OpenMP

  • آشنایی با OpenMP Introduction to OpenMP

  • برنامه‌نویسی در OpenMP Programming in OpenMP

  • قانون ذوزنقه‌ای Trapezoidal Rule

  • دامنه متغیرها Scope of Variables

  • بند کاهش (Reduction Clause) Reduction Clause

  • دستور Parallel For و نکات مربوط به آن Parallel-For Directive and Caveats in Them

  • توابع مرتب‌سازی Sorting Functions

  • زمان‌بندی (Scheduling) Scheduling

  • تولیدکنندگان و مصرف‌کنندگان Producers and Consumers

  • دستورات پایان، شروع و Atomic Termination, Startup and Atomic Directive

  • بخش‌های بحرانی و قفل‌ها Critical Sections and Locks

  • مدیریت وظایف (Tasking) Tasking

توسعه برنامه موازی ۱ Parallel Program Development 1

  • آشنایی با مسئله N-body Introduction to N-body Problem

  • راهکارهای سریال برای مسئله N-body Serial Solutions to the N-body Problem

  • استراتژی موازی‌سازی Parallelising Strategy

  • موازی‌سازی حل‌کننده پایه با استفاده از OpenMP Parallelising Basic Solver Using OpenMP

  • موازی‌سازی حل‌کننده کاهش‌یافته با استفاده از OpenMP Parallelising Reduced Solver Using OpenMP

  • ارزیابی کارایی OpenMP Evaluating OpenMP Performance

  • موازی‌سازی حل‌کننده پایه با استفاده از Pthreads Parallelising Basic Solver Using Pthreads

  • موازی‌سازی حل‌کننده پایه با استفاده از MPI Parallelising Basic Solver Using MPI

  • موازی‌سازی حل‌کننده کاهش‌یافته با استفاده از MPI Parallelising Reduced Solver Using MPI

  • ارزیابی کارایی MPI Evaluating MPI Performance

  • موازی‌سازی حل‌کننده پایه با استفاده از CUDA Parallelising Basic Solver Using CUDA

  • ارزیابی حل‌کننده CUDA و بهبود کارایی Evaluating CUDA Solver and Improving Performance

  • استفاده از حافظه مشترک برای حل‌کننده‌ها Using Shared Memory for Solvers

توسعه برنامه موازی ۲ Parallel Program Development 2

  • مرتب‌سازی نمونه‌ای (Sample Sort) و مرتب‌سازی سطل (Bucket Sort) Sample Sort and Bucket Sort

  • نگاشت (Map) Map

  • پیاده‌سازی مرتب‌سازی نمونه‌ای با OpenMP: اجرای اول Implementing Sample Sort Using OpenMP: First Implementation

  • پیاده‌سازی مرتب‌سازی نمونه‌ای با OpenMP: اجرای دوم Implementing Sample Sort Using OpenMP: Second Implementation

  • پیاده‌سازی مرتب‌سازی نمونه‌ای با Pthreads Implementing Sample Sort Using Pthreads

  • پیاده‌سازی مرتب‌سازی نمونه‌ای با MPI Implementing Sample Sort Using MPI

  • پیاده‌سازی مرتب‌سازی نمونه‌ای با MPI: مثال Implementing Sample Sort Using MPI: Example

  • پیاده‌سازی مرتب‌سازی نمونه‌ای با CUDA Implementing Sample Sort Using CUDA

امتحان جامع نهایی Final Comprehensive Examination

نمایش نظرات

آموزش برنامه‌نویسی چند هسته‌ای و GPGPU
جزییات دوره
75h 9m
125
(آخرین آپدیت)
61
- از 5
دارد
دارد
دارد
Chris Croft
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Chris Croft Chris Croft

مربی مدیریت، سخنران، نویسنده