لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
آموزش مستر کلاس برنامه نویسی 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
نمایش نظرات