Chapter 1, Introduction to CUDA and Getting Started with CUDA, introduces the CUDA architecture and how it has redefined the parallel processing capabilities of GPUs. The application of the CUDA architecture in real-life scenarios is discussed. Readers are introduced to the development environment used for CUDA and how it can be installed on all operating systems.
Chapter 2, Parallel Programming Using CUDA C, teaches the reader to write programs using CUDA for GPUs. It starts with a simple Hello World program and then incrementally builds toward complex examples in CUDA C. It also covers how the kernel works and how to use device properties, and discusses terminologies associated with CUDA programming.
Chapter 3, Threads, Synchronization, and Memory, teaches the reader about how threads are called from CUDA programs and how multiple threads communicate with each other. It describes how multiple threads are synchronized when they work in parallel. It also describes constant memory and texture memory in detail.
Chapter 4, Advanced Concepts in CUDA, covers advanced concepts such as CUDA streams and CUDA events. It describes how sorting algorithms can be accelerated using CUDA, and looks at the acceleration of simple image-processing functions using CUDA.
Chapter 5, Getting Started with OpenCV with CUDA Support, describes the installation of the OpenCV library with CUDA support in all operating systems. It explains how to test this installation using a simple program. The chapter examines a performance comparison between image-processing programs that execute with and without CUDA support.
Chapter 6, Basic Computer Vision Operations Using OpenCV and CUDA, teaches the reader how to write basic computer vision operations such as pixel-level operations on images, filtering, and morphological operations using OpenCV.
Chapter 7, Object Detection and Tracking Using OpenCV and CUDA, looks at the steps for accelerating some real-life computer vision applications using OpenCV and CUDA. It describes the feature detection and description algorithms that are used for object detection. The chapter also covers the acceleration of face detection using Haar cascade and video analysis techniques, such as background subtraction for object tracking.
Chapter 8, Introduction to Jetson Tx1 Development Board and Installing OpenCV on Jetson TX1, introduces the Jetson TX1 embedded platform and how it can be used to accelerate and deploy computer vision applications. It describes the installation of OpenCV for Tegra on Jetson TX1 with Jetpack.
Chapter 9, Deploying Computer Vision Applications on Jetson TX1, covers deployment of computer vision applications on Jetson Tx1. It teaches the reader how to build different computer vision applications and how to interface the camera with Jetson Tx1 for video-processing applications.
Chapter 10, Getting started with PyCUDA, introduces PyCUDA, which is a Python library for GPU acceleration. It describes the installation procedure on all operating systems.
Chapter 11, Working with PyCUDA, teaches the reader how to write programs using PyCUDA. It describes the concepts of data transfer from host to device and kernel execution in detail. It covers how to work with arrays in PyCUDA and develop complex algorithms.
Chapter 12, Basic Computer Vision Application Using PyCUDA, looks at the development and acceleration of basic computer vision applications using PyCUDA. It describes color space conversion operations, histogram calculation, and different arithmetic operations as examples of computer vision applications.