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

دانلود Multicore and GPGPU Programming

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

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

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

  • ویدئوی معرفی دوره 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-12-06 18:36:27 [58:56]

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

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

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

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

  • نسخه تکمیلی سیستم‌های موازی و برنامه‌های موازی Copy of Parallel Systems and Parallel Programs

  • شتاب (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

  • موازی‌سازی در سطح دستورالعمل (ILP) 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 و مدل برنامه‌نویسی 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 Compute Capabilities and Device Architecture

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

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

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

مدل اجرای 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

مدل حافظه 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) Aligned and Coalesced Access

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

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

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

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

  • جریان‌های CUDA (Streams) CUDA Streams

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

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

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

برنامه‌نویسی حافظه مشترک با 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) Semaphores

  • موانع (Barriers) و متغیرهای شرطی Barriers and Condition Variables

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

برنامه‌نویسی حافظه توزیع‌شده با 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

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

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

  • پیاده‌سازی Sample Sort با Pthreads Implementing Sample Sort Using Pthreads

  • پیاده‌سازی Sample Sort با MPI Implementing Sample Sort Using MPI

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

  • پیاده‌سازی Sample Sort با CUDA Implementing Sample Sort Using CUDA

نمایش نظرات

آموزش برنامه‌نویسی چند هسته‌ای و GPGPU
جزییات دوره
55h 45m
121
(آخرین آپدیت)
129
- از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar