Course Overview
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++.
FAQ
FAQ area empty
Course curriculum
-
Setting up the environment for the course
618 Xem trước -
Introduction to parallel computing
694 Xem trước -
Quiz : Parallel programming in general
66 Xem trước -
Uses of parallel programming.
Xem trước -
How to launch a thread
351 Xem trước -
Programming exercise 1 : Launching the threads
61 Xem trước -
Joinability of threads
281 Xem trước -
Join and detach functions
267 -
How to handle join, in exception scenarios
351 -
Programming exercise 2 : Trivial sale a ship model
126 -
How to pass parameters to a thread
255 -
Problematic situations may arise when passing parameters to a thread
219 -
Transferring ownership of a thread
214 -
Some useful operations on thread
335 -
Programming excersice 3 : Sail a ship with work queues
120 -
Parallel accumulate - algorithm explanation
219 -
Parallel accumulate algorithm implementation
510 -
Thread local storage
192 -
Debugging a application in Visual studio
747 -
Thread management
-
Introduction to locking mechanisms
158 -
Concept of invarient
207 -
Mutexes
387 -
Things to remember when using mutexes
176 -
Thread safe stack implementation : introduction to stack
310 -
Thread safe stack implementation : implementation
453 -
Thread safe stack implementation : race condition inherit from the interface
378 -
Dead locks
286 -
Unique locks
184 -
Mutex and locks
-
Introduction to condition variables
298 -
Details about condition variables
266 -
Thread safe queue implementation : introduction to queue data structure
320 -
Introduction to futures and async tasks
276 -
Thread safe queue implementation : implementation
339 -
Async tasks detailed discussion
309 -
Parallel accumulate algorithm implementation with async task
245 -
Introduction to package_task
226 -
Communication between threads using std::promises
194 -
Retrieving exception using std::futures
182 -
Std::shared_futures
258
-
Introduction to lock based thread safe data structures and algorithms
240 -
Queue data structure implementation using linked list data structure
379 -
Thread safe queue implementation
163 -
Parallel STL introduction
658 -
Parallel quick sort algorithm implementation
711 -
Parallel for each implementation
477 -
Parallel find algorithm implementation with package task
378 -
Parallel find algorithm implementation with async
185 -
Partial sum algorithm introduction
442 -
Partial sum algorithm parallel implementation
663 -
Introduction to Matrix
682 -
Parallel Matrix multiplication
246 -
Parallel matrix transpose
363 -
Factors affecting the performance of concurrent code
646
-
Jthread : Introduction
503 -
Jthread : Our own version implementation
371 -
C++ coroutines : Introduction
582 -
C++ coroutines : resume functions
473 -
C++ coroutines : Generators
389 -
C++ Barriers
351 -
C++20 stop_tokens and stop_source
341 -
C++20 stop_callback
212 -
C++20 Counting Semaphore
204 -
C++20 Binary Semaphore
169 -
C++23 More Generators
200 -
Cancellable Pipeline
422
-
Introduction to atomic operations
198 -
Functionality of std::atomic_flag
247 -
Functionality of std::atomic_bool
366 -
Explanation of compare_exchange functions
288 -
Atomic pointers
419 -
General discussion on atomic types
127 -
Important relationships related to atomic operations between threads
244 -
Introduction to memory ordering options
157 -
Discussion on memory_order_seq_cst
359 -
Introduction to instruction reordering
269 -
Discussion on memory_order_relaxed
284 -
Discussion on memory_order_acquire and memory_order_release
297 -
Important aspects of memory_order_acquire and memory_order_release
140 -
Concept of transitive synchronization
169 -
Discussion on memory_order_consume
171 -
Concept of release sequence
347 -
Implementation of spin lock mutex
296 -
Atomic wait and Notify
243 -
Atomic ref
299 -
Atomic shared pointer
336 -
Lock-Free MPSC Queue
398
-
Setting up the environment for CUDA
370 -
Elements of CUDA program
1008 -
Organization of threads in CUDA program 1
518 -
Organization of threads in CUDA program 2
373 -
Unique index calculation for threads in a grid
559 -
Unique index calculation for threads in a 2D grid
352 -
Unique index calculation for threads in a 2D grid 2
309 -
Timing a CUDA program
496 -
CUDA memory transfer
672 -
Sum array example
552 -
Error handling in a CUDA program
271 -
CUDA device properties
330
Requirment
-
Basic of c++ programming , some knowledge about data structures and algorithms would be helpful
Outcomes
-
Learn Concurrent programming in C++ including feature in C++20/23/26 standards.
-
You will learn how to implement useful concurrent data structures and algorithms using latest C++ features.
-
Learn Lock-free programming with C++ atomics and memory ordering mechanisms
-
Complex industry level use case implementation
0 Student
1 Course
0 review