Tutorial: GPU Programming for Smart Cities with NVIDIA CUDA
Internet of things (IoT) is a crucial driver of smart cities. Smart cities have to invest in robust computing infrastructure to make knowledgeable, precise and real-time decisions. Smart city infrastructure will need to process data from various compute-intensive tasks such as climate modeling and air-pollution simulation, as well as high throughput tasks such as traffic, environmental monitoring, and disease control in real time keeping the operational costs to a minimum. Utilizing the GPUs in development of smart city infrastructure provides an efficient computing capacity when compared with traditional CPU only solutions.
During this tutorial, we will review the basics of CUDA programming for NVIDIA GPUs through examples demonstrating the features and capabilities of GPUs. We will cover the CUDA architecture, memory hierarchy, and other essential topics. Other concepts such as the CUDA kernel, launch parameters, data movement, memory management, and error checking are covered. Finally, a small code walkthrough of a simple application will be covered that will cover all the concepts discussed. The material will be similar to the basic workshop from NVIDIA.
Audience: Proficiency in C/C++ programming is required.
- Introduction to CUDA
- CUDA architecture
- Memory Hierarchy
- Data movement b/w CPU and GPU
- Threads, Blocks and Grids
- Kernels and Kernel Parameter
- Basic Optimizations
- Launch Configuration
- Shared memory
- CPU-GPU Interaction
- Visual profiler (nvvp)
- Visual Debugger
- Command line profiler (nvprof)