آموزش مستر کلاس برنامه نویسی CUDA با C++

CUDA programming Masterclass with C++

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: برنامه نویسی موازی در پردازنده های گرافیکی با CUDA را از مفاهیم اولیه تا اجرای الگوریتم های پیشرفته بیاموزید. تمام دانش اولیه در مورد برنامه نویسی CUDA توانایی طراحی و پیاده سازی الگوریتم های موازی بهینه شده جریان کار پایه طراحی الگوریتم موازی مفاهیم پیشرفته CUDA پیش نیازها: دانش برنامه نویسی پایه C یا C++ نحوه استفاده از ویژوال استودیو IDE CUDA Toolkit Nvidia GPU شما باید با مقدماتی آشنا باشید. راه اندازی یک پروژه ++C، نحوه تغییر خصوصیات پروژه و غیره

این دوره درباره برنامه‌نویسی CUDA است. ما بحث خود را با نگاه کردن به مفاهیم اساسی از جمله مدل برنامه‌نویسی CUDA، مدل اجرا و مدل حافظه آغاز خواهیم کرد. سپس نحوه پیاده سازی الگوریتم های پیشرفته با استفاده از CUDA را به شما نشان خواهیم داد. برنامه‌نویسی CUDA همه چیز در مورد عملکرد است. بنابراین در طول این دوره شما چندین تکنیک بهینه سازی و نحوه استفاده از آن ها برای پیاده سازی الگوریتم ها را خواهید آموخت. همچنین به طور گسترده درباره تکنیک‌های نمایه‌سازی و برخی از ابزارها از جمله ابزارهای nvprof، nvvp، CUDA Memcheck، CUDA-GDB در جعبه ابزار CUDA بحث خواهیم کرد. این دوره شامل بخش های زیر است.

                                                                                                                                                                                   

                                                CUDA Execution Model

                                                                                            مدل حافظه - حافظه جهانی

                                                                                    حافظه - حافظه مشترک و ثابت

                                              CUDA جریان‌ها

                                                                                                                  تنظیم سطح دستورالعمل CUDA

                                              پیاده سازی الگوریتم با CUDA

                                               ابزارهای CUDA

با این دوره، تمرین‌ها و آزمون‌های برنامه‌نویسی زیادی را نیز شامل می‌شویم. پاسخ به همه آنها به شما کمک می کند تا مفاهیمی را که در اینجا بحث می کنیم، هضم کنید.

این دوره اولین دوره از سری کلاس های کارشناسی ارشد CUDA است که در حال حاضر روی آن کار می کنیم. بنابراین دانشی که در اینجا به دست می آورید برای دنبال کردن آن دوره نیز ضروری است.


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

مقدمه ای بر برنامه نویسی CUDA و مدل برنامه نویسی CUDA Introduction to CUDA programming and CUDA programming model

  • خیلی خیلی مهمه Very very important

  • مقدمه ای بر برنامه نویسی موازی Introduction to parallel programming

  • محاسبات موازی و محاسبات فوق العاده Parallel computing and Super computing

  • بیایید پیشینه ای را بررسی کنیم. Let's investigate some background.

  • نحوه نصب جعبه ابزار CUDA و ابتدا به برنامه CUDA نگاه کنید How to install CUDA toolkit and first look at CUDA program

  • عناصر اساسی برنامه CUDA Basic elements of CUDA program

  • سازماندهی موضوعات در یک برنامه CUDA - threadIdx Organization of threads in a CUDA program - threadIdx

  • سازماندهی رشته در یک برنامه CUDA - blockIdx,blockDim,gridDim Organization of thread in a CUDA program - blockIdx,blockDim,gridDim

  • تمرین برنامه نویسی 1 Programming exercise 1

  • محاسبه شاخص منحصر به فرد با استفاده از threadIdx blockId و blockDim Unique index calculation using threadIdx blockId and blockDim

  • محاسبه شاخص منحصر به فرد برای شبکه دو بعدی 1 Unique index calculation for 2D grid 1

  • محاسبه شاخص منحصر به فرد برای شبکه دو بعدی 2 Unique index calculation for 2D grid 2

  • انتقال حافظه بین هاست و دستگاه Memory transfer between host and device

  • تمرین برنامه نویسی 2 Programming exercise 2

  • مثال آرایه جمع با بررسی اعتبار Sum array example with validity check

  • مثال آرایه جمع با مدیریت خطا Sum array example with error handling

  • مثال آرایه جمع با زمان بندی Sum array example with timing

  • اجرای آرایه sum را برای خلاصه کردن 3 آرایه گسترش دهید Extend sum array implementation to sum up 3 arrays

  • ویژگی های دستگاه Device properties

  • خلاصه Summary

مدل اجرای CUDA CUDA Execution model

  • دستگاه را بهتر درک کنید Understand the device better

  • همه چیز در مورد تارها All about warps

  • واگرایی تار Warp divergence

  • پارتیشن بندی منابع و پنهان کردن تأخیر 1 Resource partitioning and latency hiding 1

  • پارتیشن بندی منابع و پنهان کردن تأخیر 2 Resource partitioning and latency hiding 2

  • تصرف Occupancy

  • بهینه سازی مبتنی بر پروفایل با nvprof Profile driven optimization with nvprof

  • کاهش موازی به عنوان مثال همگام سازی Parallel reduction as synchronization example

  • کاهش موازی به عنوان مثال واگرایی تار Parallel reduction as warp divergence example

  • کاهش موازی با باز کردن حلقه Parallel reduction with loop unrolling

  • کاهش موازی به عنوان باز کردن پیچ و تاب Parallel reduction as warp unrolling

  • کاهش با باز کردن کامل Reduction with complete unrolling

  • مقایسه عملکرد هسته های کاهشی Performance comparison of reduction kernels

  • CUDA موازی سازی پویا CUDA Dynamic parallelism

  • کاهش با موازی سازی پویا Reduction with dynamic parallelism

  • خلاصه Summary

مدل حافظه CUDA CUDA memory model

  • مدل حافظه CUDA CUDA memory model

  • انواع مختلف حافظه در CUDA Different memory types in CUDA

  • مدیریت حافظه و حافظه پین ​​شده Memory management and pinned memory

  • حافظه کپی صفر Zero copy memory

  • حافظه یکپارچه Unified memory

  • الگوهای دسترسی به حافظه جهانی Global memory access patterns

  • حافظه جهانی می نویسد Global memory writes

  • AOS در مقابل SOA AOS vs SOA

  • جابجایی ماتریس Matrix transpose

  • جابجایی ماتریس با باز کردن Matrix transpose with unrolling

  • انتقال ماتریسی با سیستم مختصات مورب Matrix transpose with diagonal coordinate system

  • خلاصه Summary

CUDA حافظه مشترک و حافظه ثابت CUDA Shared memory and constant memory

  • مقدمه ای بر حافظه مشترک CUDA Introduction to CUDA shared memory

  • حالت های دسترسی به حافظه مشترک و بانک های حافظه Shared memory access modes and memory banks

  • دسترسی ردیف اصلی و ستون اصلی به حافظه مشترک Row major and Column major access to shared memory

  • حافظه مشترک استاتیک و دینامیک Static and Dynamic shared memory

  • پر کردن حافظه مشترک Shared memory padding

  • کاهش موازی با حافظه مشترک Parallel reduction with shared memory

  • همگام سازی در CUDA Synchronization in CUDA

  • انتقال ماتریس با حافظه مشترک Matrix transpose with shared memory

  • حافظه ثابت CUDA CUDA constant memory

  • جابجایی ماتریس با بالشتک حافظه مشترک Matrix transpose with Shared memory padding

  • دستورالعمل های CUDA warp shuffle CUDA warp shuffle instructions

  • کاهش موازی با دستورالعمل های تار زدن Parallel reduction with warp shuffle instructions

  • خلاصه Summary

CUDA Streams CUDA Streams

  • مقدمه ای بر جریان ها و رویدادهای CUDA Introduction to CUDA streams and events

  • نحوه استفاده از توابع ناهمزمان CUDA How to use CUDA asynchronous functions

  • نحوه استفاده از جریان های CUDA How to use CUDA streams

  • همپوشانی انتقال حافظه و اجرای کرنل Overlapping memory transfer and kernel execution

  • همگام سازی جریان و مسدود کردن رفتار جریان NULL Stream synchronization and blocking behavious of NULL stream

  • همگام سازی صریح و ضمنی Explicit and implicit synchronization

  • رویدادهای CUDA و زمان بندی با رویدادهای CUDA CUDA events and timing with CUDA events

  • ایجاد وابستگی بین جریانی با رویدادها Creating inter stream dependencies with events

تنظیم عملکرد با مراحل اولیه سطح دستورالعمل CUDA Performance Tuning with CUDA instruction level primitives

  • آشنایی با انواع دستورات در CUDA Introduction to different types of instructions in CUDA

  • عملیات نقطه شناور Floating point operations

  • توابع استاندارد و دستوری Standard and Instrict functions

  • توابع اتمی Atomic functions

الگوهای موازی و کاربردها Parallel Patterns and Applications

  • معرفی الگوریتم اسکن Scan algorithm introduction

  • اسکن موازی ساده Simple parallel scan

  • کار اسکن انحصاری موازی کارآمد Work efficient parallel exclusive scan

  • کار اسکن موازی فراگیر کارآمد Work efficient parallel inclusive scan

  • اسکن موازی برای مجموعه داده های بزرگ Parallel scan for large data sets

  • الگوریتم فشرده موازی Parallel Compact algorithm

پاداش: مقدمه ای بر پردازش تصویر با CUDA Bonus: Introduction to Image processing with CUDA

  • مقدمه قسمت 1 Introduction part 1

  • مقدمه قسمت 2 Introduction part 2

  • پردازش تصویر دیجیتال Digital image processing

  • عناصر بنیادی تصویر دیجیتال: ادراک انسان Digital image fundametals : Human perception

  • اصول تصویر دیجیتال: تشکیل تصویر Digital image fundamentals : Image formation

  • نصب OpenCV OpenCV installation

نمایش نظرات

آموزش مستر کلاس برنامه نویسی CUDA با C++
جزییات دوره
11 hours
83
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
8,763
- از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Kasun Liyanage Kasun Liyanage

مهندس نرم افزار و بنیانگذار اینتلکت، یکی از بنیانگذاران cpphive