Video description
It's deja vu all over again. In the old days (35 plus years ago), developers wanting to write half-decent programs had to know their hardware. Those days are back. Clock frequencies have peaked and hardware can no longer be abstracted behind high-level languages. Designed for developers with high performance requirements (games, finance analysis, scientific computation, etc.), this course teaches you what really happens when programs are executed and the subtle details that make a program go slow or fast.
With a focus on concurrency, specifically local concurrency (multi-threading), the course is all about writing efficient programs that make the best use of the computing resources available to you. While the sample code is written in C++, the course is not C++ specific. If you can read C++ code, but don’t use it in your work, you will still learn from this class.
- Learn how programs execute in hardware and the subtle details that affect program speed
- Practice writing efficient programs that get the most out of today’s CPUs, caches, and memory
- Discover how single and multi-core CPUs interact with memory and how to avoid memory slowness
- Explore memory models, concurrent data structures, lock-free concurrency, and lock-based concurrency
- Acquire the tools needed to measure the performance of programs and their components
Publisher resources
Table of contents
-
Introduction
- Introduction And Course Overview 00:12:13
- About The Author 00:04:17
-
Memory Architecture And Performance Impact
- Overview 00:12:32
- Overview (Continued) 00:11:36
- Access Patterns And Impact On Algorithms And Data Structure Design 00:14:00
- Many Threads (Multi-Core Access) 00:12:45
-
Measuring Time In Programs
- Real Time And CPU Time 00:13:34
- TSC Timers 00:09:25
- Profiling Tools 00:09:08
-
Threads
- Overview 00:07:37
- Threads In C++ 00:14:39
- Avoiding Data Races And Its Cost 00:11:54
-
How Threads Interact With Memory
- Concurrency And Memory 00:14:17
- Data Sharing 00:06:51
- False Data Sharing 00:15:41
-
Synchronization Of Memory Accesses
- Locks (Mutexes) Part - 1 00:12:04
- Locks (Mutexes) Part - 2 00:12:03
- Locks (Spinlocks) 00:17:12
- Lock-Free Synchronization And Other Options - Part 1 00:11:15
- Lock-Free Synchronization And Other Options - Part 2 00:10:27
-
Memory Models
- Memory Model 00:10:01
- C++ Memory Model 00:06:47
- Memory Order 00:07:36
- Memory Order Guarantees In C++ 00:06:30
-
Memory Barriers
- Need For Memory Barriers 00:18:06
- Memory Barriers 00:10:07
- Synchronization, Revisited - Part 1 00:07:42
- Synchronization, Revisited - Part 2 00:19:19
-
Lock-Based And Lock-Free Programming
- Efficient Concurrency; Types Of Concurrent Programs 00:12:01
- Problems With Locks Part - 1 00:10:13
- Problems With Locks Part - 2 00:06:54
- Thread-Safe Data Structures Part - 1 00:14:56
- Thread-Safe Data Structures Part - 2 00:06:55
- Introduction To Lock-Free Programming 00:17:49
-
Lock-Free Data Structures
- Shared Pointer Part - 1 00:10:49
- Shared Pointer Part - 2 00:09:02
- Shared Pointer Part - 3 00:10:34
- Shared Pointer Part - 4 00:10:26
- Shared Pointer Part - 5 00:09:51
- Shared Pointer Part - 6 00:15:42
- Node-Based Containers Part - 1 (List) 00:10:40
- Node-Based Containers Part - 2 (List) 00:08:27
- Node-Based Containers Part - 3 (List) 00:11:23
- Node-Based Containers Part - 4 (List) 00:11:16
- Node-Based Containers Part - 5 (List) 00:09:44
- Node-Based Containers Part - 6 (List) 00:06:33
- Node-Based Containers Part - 7 (List) 00:07:56
- Sequential Containers Part - 1 (Queue) 00:10:09
- Sequential Containers Part - 2 (Queue) 00:10:09
- Sequential Containers Part - 3 (Queue) 00:13:20
- Sequential Containers Part - 4 (Queue) 00:09:37
- Sequential Containers Part - 5 (Queue) 00:09:55
- Sequential Containers Part - 6 (Queue) 00:13:36
-
Performance In Real Life
- Practical Performance 00:16:03
- Factors Affecting Performance Part -1 00:09:13
- Factors Affecting Performance Part -2 00:12:30
- Concurrent Data Structures In Depth
- Conclusion
Product information
- Title: High-Performance Computing and Concurrency
- Author(s):
- Release date: November 2016
- Publisher(s): Infinite Skills
- ISBN: 9781491967553
You might also like
video
Docker for the Absolute Beginner - Hands-On
Docker is an open platform for developers and sysadmins to build, deploy, and run distributed applications …
video
Using Linux Performance Tools
Move from basic Linux administration to advanced in this course that details how to monitor, profile, …
book
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition
Through a series of recent breakthroughs, deep learning has boosted the entire field of machine learning. …
video
Kubernetes for the Absolute Beginners - Hands-On
Learn how to deploy Kubernetes applications effectively and kick-start your DevOps career with this interactive video …