Course Outline
Introduction
Core Principles of Heterogeneous Computing Methodology
Why Parallel Computing? Analyzing the Requirements for Parallel Processing
Multi-Core Processors: Exploring Architecture and Design
Introduction to Threads: Fundamentals and Key Concepts in Parallel Programming
Fundamentals of GPU Software Optimization Workflows
OpenMP: The Standard for Directive-Based Parallel Programming
Practical Demonstration: Running Various Programs on Multicore Systems
Introduction to GPU Computing
Leveraging GPUs for Parallel Computing Tasks
The GPU Programming Model Explained
Practical Demonstration: Executing Various Programs on GPU Hardware
Setting Up the SDK, Toolkit, and GPU Development Environment
Utilizing Various GPU Libraries
Demonstrating GPU Tools and Capabilities with Sample Programs and OpenACC
Deep Dive into the CUDA Programming Model
Comprehending the CUDA Architecture
Configuring and Exploring CUDA Development Environments
Interacting with the CUDA Runtime API
Analyzing the CUDA Memory Model
Discovering Extended CUDA API Features
Optimizing Global Memory Access in CUDA: Strategies for Efficiency
Enhancing Data Transfer Performance in CUDA with CUDA Streams
Leveraging Shared Memory within CUDA
Mastering Atomic Operations and Instructions in CUDA
Case Study: Implementing Basic Digital Image Processing using CUDA
Techniques for Multi-GPU Programming
Advanced Hardware Profiling and Sampling Techniques for NVIDIA / CUDA
Implementing Dynamic Kernel Launches via the CUDA Dynamic Parallelism API
Wrap-Up and Final Summary
Requirements
- C Programming
- Linux GCC
Testimonials (1)
Trainers energy and humor.