High Performance Scientific Computing with C

High Performance Scientific Computing with C

English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 2h 16m | 340 MB

Use algorithm design, hardware features, and parallelism to build fast, accurate, and efficient scientific code

In this course, you’ll learn to develop scientific and numerical programs that solve problems. It’s ideal for scientists, engineers, and programmers who need to model mathematical or physical systems. You’ll get a core toolkit of algorithms that can be used in a wide variety of applications, using the low-level capabilities of the C programming language.

The close-to-the-metal approach means you’ll learn to optimize our programs to get the absolute best performance that our hardware can provide. You’ll see how the design of algorithms affects their performance and accuracy, the tools that can be used to optimize your code and develop your intuition about numerical problems. Finally, you’ll examine the growing array of parallel solutions that enable you to take advantage of multi-core CPUs, distributed compute clusters and GPU accelerators.

By the end of this course, you’ll know how to write fast, accurate code that can run on many different platforms and solve many different scientific problems.

A hands-on step-by-step approach that will take you through the important concepts of scientific and numerical computing with C.

What You Will Learn

  • Use the C programming language to write numerical code
  • Get to know Core algorithms used in scientific computing
  • See how CPU design limits program performance
  • Control the speed and accuracy of your programs
  • Know the limitations of inaccuracy and performance and tradeoffs between them
  • Use modern parallel architectures, distributed systems, and GPGPU accelerators to speed up your programs
  • Optimize and extend your code to use multiple cores with OpenMP and across multiple networked machines using MPI
Table of Contents

01 The Course Overview
02 Introduction – Why Use Computers for Math
03 Interpolation and Extrapolation
04 Numerical Integration
05 Linear Equations and Matrix Methods
06 Monte Carlo Methods
07 Floating-Point Numbers and IEEE-754
08 Algorithm Complexity and Performance
09 Discrete versus Fast Fourier Transform
10 Compiler Optimizations
11 How the CPU Works
12 Pipelining and Hardware-Oriented Design
13 Vectorizing with AVX
14 Parallel Architectures, Amdahl’s Law, and Gustafson’s Law
15 Shared Memory Parallelism with OpenMP
16 Distributed Memory Parallelism with MPI
17 GPGPU with CUDA