NVIDIA GPU Programming - Extended Training Course
This instructor-led, live training course covers how to program GPUs for parallel computing, how to use various platforms, how to work with the CUDA platform and its features, and how to perform various optimization techniques using CUDA. Some of the applications include deep learning, analytics, image processing and engineering applications.
Course Outline
Introduction
Understanding the Fundamentals of Heterogeneous Computing Methodology
Why Parallel Computing? Understanding the Need for Parallel Computing
Multi-Core Processors - Architecture and Design
Introduction to Threads, Thread Basics and Basic Concepts of Parallel Programming
Understanding the Fundamentals of GPU Software Optimization Processes
OpenMP - A Standard for Directive-Based Parallel Programming
Hands on / Demonstration of Various Programs on Multicore Machines
Introduction to GPU Computing
GPUs for Parallel Computing
GPUs Programming Model
Hands on / Demonstration of Various Programs on GPU
SDK, Toolkit and Installation of Environment for GPU
Working with Various Libraries
Demonstration of GPU and Tools with Sample Programs and OpenACC
Understanding the CUDA Programming Model
Learning the CUDA Architecture
Exploring and Setting Up the CUDA Development Environments
Working with the CUDA Runtime API
Understanding the CUDA Memory Model
Exploring Additional CUDA API Features
Accessing Global Memory Efficiently in CUDA: Global Memory Optimization
Optimizing Data Transfers in CUDA Using CUDA Streams
Using Shared Memory in CUDA
Understanding and Using Atomic Operations and Instructions in CUDA
Case Study: Basic Digital Image Processing with CUDA
Working with Multi-GPU Programming
Advanced Hardware Profiling and Sampling on NVIDIA / CUDA
Using CUDA Dynamic Parallelism API for Dynamic Kernel Launch
Summary and Conclusion
Requirements
- C Programming
- Linux GCC
Open Training Courses require 5+ participants.
NVIDIA GPU Programming - Extended Training Course - Booking
NVIDIA GPU Programming - Extended Training Course - Enquiry
NVIDIA GPU Programming - Extended - Consultancy Enquiry
Consultancy Enquiry
Testimonials (7)
Podejście prowadzącego. Very friendly and with a sense of humor, while maintaining the necessary professionalism. In the event of questions, the answers were always comprehensive. For me, as someone with little knowledge of low-level programming, the instructor's openness was very helpful.
Michal Kwiatek - Nokia Solutions and Networks Sp. z o.o.
Course - NVIDIA GPU Programming - Extended
Machine Translated
Dynamic pace of lessons, a sense of quickly acquiring basic knowledge that allows me to efficiently learn on my own.
Sebastian Zientek - Nokia Solutions and Networks Sp. z o.o.
Course - NVIDIA GPU Programming - Extended
Machine Translated
Trainers energy and humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Course - NVIDIA GPU Programming - Extended
Personal engagement of the trainer in the topic
Tomasz Barabasz - Nokia
Course - NVIDIA GPU Programming - Extended
Machine Translated
Simple, yet original approach to teaching. Despite the circumstances requiring remote format, the instructor excelled in maintaining my interest, knew the answer to every question, and could share numerous fascinating insights related to the topic and work in the industry.
Lukasz Dzwoniarek - Nokia
Course - NVIDIA GPU Programming - Extended
Machine Translated
Live examples, digressions, and real-life examples. The training format involves interspersing lectures with practical examples and discussions of those examples.
Piotr Glazor - Nokia
Course - NVIDIA GPU Programming - Extended
Machine Translated
A cohesive presentation style, extensive trainer knowledge, appropriate entry level
Maciej Majka - Nokia
Course - NVIDIA GPU Programming - Extended
Machine Translated
Provisional Courses
Related Courses
AMD GPU Programming
28 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level to intermediate-level developers who wish to use ROCm and HIP to program AMD GPUs and exploit their parallelism.
By the end of this training, participants will be able to:
- Set up a development environment that includes ROCm Platform, a AMD GPU, and Visual Studio Code.
- Create a basic ROCm program that performs vector addition on the GPU and retrieves the results from the GPU memory.
- Use ROCm API to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads.
- Use HIP language to write kernels that execute on the GPU and manipulate data.
- Use HIP built-in functions, variables, and libraries to perform common tasks and operations.
- Use ROCm and HIP memory spaces, such as global, shared, constant, and local, to optimize data transfers and memory accesses.
- Use ROCm and HIP execution models to control the threads, blocks, and grids that define the parallelism.
- Debug and test ROCm and HIP programs using tools such as ROCm Debugger and ROCm Profiler.
- Optimize ROCm and HIP programs using techniques such as coalescing, caching, prefetching, and profiling.
Administration of CUDA
35 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level system administrators and IT professionals who wish to install, configure, manage, and troubleshoot CUDA environments.
By the end of this training, participants will be able to:
- Understand the architecture, components, and capabilities of CUDA.
- Install and configure CUDA environments.
- Manage and optimize CUDA resources.
- Debug and troubleshoot common CUDA issues.
GPU Programming with CUDA and Python
14 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at intermediate-level developers who wish to use CUDA to build Python applications that run in parallel on NVIDIA GPUs.
By the end of this training, participants will be able to:
- Use the Numba compiler to accelerate Python applications running on NVIDIA GPUs.
- Create, compile and launch custom CUDA kernels.
- Manage GPU memory.
- Convert a CPU based application into a GPU-accelerated application.
Introduction to GPU Programming
21 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level to intermediate-level developers who wish to learn the basics of GPU programming and the main frameworks and tools for developing GPU applications.
- By the end of this training, participants will be able to:
Understand the difference between CPU and GPU computing and the benefits and challenges of GPU programming. - Choose the right framework and tool for their GPU application.
- Create a basic GPU program that performs vector addition using one or more of the frameworks and tools.
- Use the respective APIs, languages, and libraries to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads.
- Use the respective memory spaces, such as global, local, constant, and private, to optimize data transfers and memory accesses.
- Use the respective execution models, such as work-items, work-groups, threads, blocks, and grids, to control the parallelism.
- Debug and test GPU programs using tools such as CodeXL, CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight.
- Optimize GPU programs using techniques such as coalescing, caching, prefetching, and profiling.
GPU Programming with CUDA
28 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level to intermediate-level developers who wish to use CUDA to program NVIDIA GPUs and exploit their parallelism.
By the end of this training, participants will be able to:
- Set up a development environment that includes CUDA Toolkit, a NVIDIA GPU, and Visual Studio Code.
- Create a basic CUDA program that performs vector addition on the GPU and retrieves the results from the GPU memory.
- Use CUDA API to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads.
- Use CUDA C/C++ language to write kernels that execute on the GPU and manipulate data.
- Use CUDA built-in functions, variables, and libraries to perform common tasks and operations.
- Use CUDA memory spaces, such as global, shared, constant, and local, to optimize data transfers and memory accesses.
- Use CUDA execution model to control the threads, blocks, and grids that define the parallelism.
- Debug and test CUDA programs using tools such as CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight.
- Optimize CUDA programs using techniques such as coalescing, caching, prefetching, and profiling.
97% de clients satisfaits.
GPU Programming with OpenACC
28 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level to intermediate-level developers who wish to use OpenACC to program heterogeneous devices and exploit their parallelism.
By the end of this training, participants will be able to:
- Set up an OpenACC development environment.
- Write and run a basic OpenACC program.
- Annotate code with OpenACC directives and clauses.
- Use OpenACC API and libraries.
- Profile, debug, and optimize OpenACC programs.
GPU Programming with OpenCL
28 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level to intermediate-level developers who wish to use OpenCL to program heterogeneous devices and exploit their parallelism.
By the end of this training, participants will be able to:
- Set up a development environment that includes OpenCL SDK, a device that supports OpenCL, and Visual Studio Code.
- Create a basic OpenCL program that performs vector addition on the device and retrieves the results from the device memory.
- Use OpenCL API to query device information, create contexts, command queues, buffers, kernels, and events.
- Use OpenCL C language to write kernels that execute on the device and manipulate data.
- Use OpenCL built-in functions, extensions, and libraries to perform common tasks and operations.
- Use OpenCL host and device memory models to optimize data transfers and memory accesses.
- Use OpenCL execution model to control the work-items, work-groups, and ND-ranges.
- Debug and test OpenCL programs using tools such as CodeXL, Intel VTune, and NVIDIA Nsight.
- Optimize OpenCL programs using techniques such as vectorization, loop unrolling, local memory, and profiling.
GPU Programming - OpenCL vs CUDA vs ROCm
28 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level to intermediate-level developers who wish to use different frameworks for GPU programming and compare their features, performance, and compatibility.
By the end of this training, participants will be able to:
- Set up a development environment that includes OpenCL SDK, CUDA Toolkit, ROCm Platform, a device that supports OpenCL, CUDA, or ROCm, and Visual Studio Code.
- Create a basic GPU program that performs vector addition using OpenCL, CUDA, and ROCm, and compare the syntax, structure, and execution of each framework.
- Use the respective APIs to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads.
- Use the respective languages to write kernels that execute on the device and manipulate data.
- Use the respective built-in functions, variables, and libraries to perform common tasks and operations.
- Use the respective memory spaces, such as global, local, constant, and private, to optimize data transfers and memory accesses.
- Use the respective execution models to control the threads, blocks, and grids that define the parallelism.
- Debug and test GPU programs using tools such as CodeXL, CUDA-GDB, CUDA-MEMCHECK, and NVIDIA Nsight.
- Optimize GPU programs using techniques such as coalescing, caching, prefetching, and profiling.
ROCm for Windows
21 HoursThis instructor-led, live training in Poland (online or onsite) is aimed at beginner-level to intermediate-level developers who wish to install and use ROCm on Windows to program AMD GPUs and exploit their parallelism.
By the end of this training, participants will be able to:
- Set up a development environment that includes ROCm Platform, a AMD GPU, and Visual Studio Code on Windows.
- Create a basic ROCm program that performs vector addition on the GPU and retrieves the results from the GPU memory.
- Use ROCm API to query device information, allocate and deallocate device memory, copy data between host and device, launch kernels, and synchronize threads.
- Use HIP language to write kernels that execute on the GPU and manipulate data.
- Use HIP built-in functions, variables, and libraries to perform common tasks and operations.
- Use ROCm and HIP memory spaces, such as global, shared, constant, and local, to optimize data transfers and memory accesses.
- Use ROCm and HIP execution models to control the threads, blocks, and grids that define the parallelism.
- Debug and test ROCm and HIP programs using tools such as ROCm Debugger and ROCm Profiler.
- Optimize ROCm and HIP programs using techniques such as coalescing, caching, prefetching, and profiling.