Hardware-Software Interactions Concurrency & Computing

Hardware-Software Interactions  Concurrency & Computing
Hardware-Software Interactions: Concurrency & Computing
Published 05/2022
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz, 2 Ch
Genre: eLearning | Language: English + srt | Duration: 17 lectures (2h 33m) | Size: 1.3 GB

Learn how to write high-performance programs that wring every last bit of performance from your hardware

What you'll learn
Learn How to Write Efficient Programs
Learn how to write high-performance programs that wring every last bit of performance from your hardware
Learn and understand concurrency
Learn how to get the most out of your CPUs, caches, and memory
Learn how to measure performance
You have an attitude to learn while having fun :)
Internet Access
Welcome to this course. Starting with the traditional approach to concurrency, you will learn how to write multithreaded concurrent programs and compose ways that won't require locking. Until recently, programs got faster by themselves as CPUs were upgraded, but that doesn't happen anymore. The clock frequency of new processors has almost peaked, and while new architectures provide small improvements to existing programs, this only helps slightly. To write efficient software, you now have to know how to program by making good use of the available computing resources, and this course will teach you how to do that. In this course, you will explore the concepts of parallelism granularity, and fine-grained and coarse-grained parallel tasks by choosing a concurrent program structure and parallelizing the workload optimally. You will also learn how to use task parallel library, cancellations, timeouts, and how to handle errors. You will know how to choose the appropriate data structure for a specific parallel algorithm to achieve scalability and performance. Further, you'll learn about server scalability, asynchronous I/O, and thread pools, and write responsive traditional applications. This course covers all the major aspects of writing efficient programs, such as using CPU resources and memory efficiently, avoiding unnecessary computations, measuring performance, and how to put concurrency and multithreading to good use. You'll also learn about compiler optimizations and how to use the programming language more efficiently. Finally, you'll understand how design decisions impact performance.
At the end of the course, you will be able to diagnose and resolve typical problems that could happen in processors compilers and multithreaded applications.
Who this course is for
Web Developers
Software Developers
Anyone interested in Concurrency & Computing