Mô tả

C++ programming language can be categorized under many topics. Some say its a general purpose programming language, some say its a object oriented version of C. But I liked to categorized it under system programming language. One characteristic of any system programming language including C++ is that language should be able to execute faster compare to other languages like java etc. 

C++ paradigm took sharp turn with the introduction of C++11 standards. The most notable difference with previous version is the introduction of new memory model. Memory model is the key part of any language, and the performance of all the functionalities depends on that language memory model. With new c++ memory model, we can exploit tremendous power of  modern multi core processors. 

Programming a proper C++ code with better memory reclaim mechanism is tough task. But if we want to code thread safe code which can harvest underline processors true power is much more difficult task. In this course we will have in depth discussion on  C++ concurrency features including memory model. We will implements thread safe data structures and algorithms, both lock based manner and lock free manner. Proper lock free implementations of data structures and algorithms will provide unprecedented performance output. Let me listed down key aspects we cover in this course below.

1.Basics of C++ concurrency(threads, mutex, package_task, future ,async, promise)

2.Lock based thread safe implementation of data structures and algorithms.

3.C++ memory model.

4.Lock free implementation of data structures and algorithms.

5.C++20 concurrency features.

5. Proper memory reclaim mechanism for lock free data structures.

6. Design aspects of concurrent code.

7. In depth discussion on thread pools.

8. Bonus section on CUDA programming with C and C++.

Bạn sẽ học được gì

Yêu cầu

Nội dung khoá học

9 sections

Thread management guide

20 lectures
Setting up the environment for the course
10:18
Introduction to parallel computing
11:34
Quiz : Parallel programming in general
01:06
Uses of parallel programming.
2 questions
How to launch a thread
05:51
Programming exercise 1 : Launching the threads
01:01
Joinability of threads
04:41
Join and detach functions
04:27
How to handle join, in exception scenarios
05:51
Programming exercise 2 : Trivial sale a ship model
02:06
How to pass parameters to a thread
04:15
Problematic situations may arise when passing parameters to a thread
03:39
Transferring ownership of a thread
03:34
Some useful operations on thread
05:35
Programming excersice 3 : Sail a ship with work queues
02:00
Parallel accumulate - algorithm explanation
03:39
Parallel accumulate algorithm implementation
08:30
Thread local storage
03:12
Debugging a application in Visual studio
12:27
Thread management
4 questions

Thread safe access to shared data and locking mechanisms

10 lectures
Introduction to locking mechanisms
02:38
Concept of invarient
03:27
mutexes
06:27
Things to remember when using mutexes
02:56
Thread safe stack implementation : introduction to stack
05:10
Thread safe stack implementation : implementation
07:33
Thread safe stack implementation : race condition inherit from the interface
06:18
Dead locks
04:46
unique locks
03:04
Mutex and locks
5 questions

Communication between thread using condition variables and futures

11 lectures
introduction to condition variables
04:58
Details about condition variables
04:26
Thread safe queue implementation : introduction to queue data structure
05:20
Thread safe queue implementation : implementation
05:39
introduction to futures and async tasks
04:36
async tasks detailed discussion
05:09
Parallel accumulate algorithm implementation with async task
04:05
Introduction to package_task
03:46
Communication between threads using std::promises
03:14
Retrieving exception using std::futures
03:02
std::shared_futures
04:18

Lock based thread safe data structures and algorithm implementation

14 lectures
introduction to lock based thread safe data structures and algorithms
04:00
queue data structure implementation using linked list data structure
06:19
thread safe queue implementation
02:43
Parallel STL introduction
10:58
parallel quick sort algorithm implementation
11:51
parallel for each implementation
07:57
parallel find algorithm implementation with package task
06:18
parallel find algorithm implementation with async
03:05
Partial sum algorithm introduction
07:22
Partial sum algorithm parallel implementation
11:03
Introduction to Matrix
11:22
Parallel Matrix multiplication
04:06
Parallel matrix transpose
06:03
Factors affecting the performance of concurrent code
10:46

C++20 Concurrency features

6 lectures
Jthread : Introduction
08:23
Jthread : Our own version implementation
06:11
C++ coroutines : Introduction
09:42
C++ coroutines : resume functions
07:53
C++ coroutines : Generators
06:29
C++ Barriers
05:51

C++ memory model and atomic operations

17 lectures
Introduction to atomic operations
03:18
Functionality of std::atomic_flag
04:07
Functionality of std::atomic_bool
06:06
Explanation of compare_exchange functions
04:48
atomic pointers
06:59
General discussion on atomic types
02:07
Important relationships related to atomic operations between threads
04:04
Introduction to memory ordering options
02:37
Discussion on memory_order_seq_cst
05:59
Introduction to instruction reordering
04:29
Discussion on memory_order_relaxed
04:44
Discussion on memory_order_acquire and memory_order_release
04:57
Important aspects of memory_order_acquire and memory_order_release
02:20
Concept of transitive synchronization
02:49
Discussion on memory_order_consume
02:51
Concept of release sequence
05:47
Implementation of spin lock mutex
04:56

Lock free data structures and algorithms

6 lectures
Introduction and some terminology
02:06
Stack recap
07:18
Simple lock free thread safe stack
08:25
Stack memory reclaim mechanism using thread counting
14:25
Stack memory reclaim mechanism using hazard pointers
13:00
Stack memory reclaim mechanism using reference counting
12:48

Thread pools

5 lectures
Simple thread pool
09:09
Thread pool which allowed to wait on submitted tasks
06:48
Thread pool with waiting tasks
11:01
Minimizing contention on work queue
05:30
Thread pool with work stealing
09:23

Bonus section : Parallel programming in massively parallel devices with CUDA

12 lectures
Setting up the environment for CUDA
06:10
Elements of CUDA program
16:48
Organization of threads in CUDA program 1
08:38
Organization of threads in CUDA program 2
06:13
Unique index calculation for threads in a grid
09:19
Unique index calculation for threads in a 2D grid
05:52
Unique index calculation for threads in a 2D grid 2
05:09
Timing a CUDA program
08:16
CUDA memory transfer
11:12
Sum array example
09:12
Error handling in a CUDA program
04:31
CUDA device properties
05:30

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.