--- myst: html_meta: description: PyTorch CUDA C++ API — device management, streams, guards, and cuDNN/cuBLAS utilities. keywords: PyTorch, C++, CUDA, GPU, streams, guards, cuDNN, cuBLAS --- # CUDA Support PyTorch provides comprehensive CUDA support for GPU-accelerated tensor operations and neural network training. The CUDA API allows you to manage GPU devices, streams for asynchronous execution, and memory efficiently. **When to use CUDA APIs:** - When you need explicit control over which GPU device to use - When implementing custom CUDA kernels or operations - When optimizing performance with asynchronous stream execution - When managing multi-GPU workloads **Basic usage:** ```cpp #include #include // Check if CUDA is available if (torch::cuda::is_available()) { // Create tensor on GPU auto tensor = torch::randn({2, 3}, torch::device(torch::kCUDA)); // Switch to a specific GPU c10::cuda::CUDAGuard guard(0); // Use GPU 0 // Get the current CUDA stream auto stream = c10::cuda::getCurrentCUDAStream(); // Move model to GPU model->to(torch::kCUDA); } ``` ## Header Files - `c10/cuda/CUDAStream.h` - CUDA stream management - `c10/cuda/CUDAGuard.h` - CUDA device guards - `ATen/cuda/CUDAContext.h` - CUDA context management - `ATen/cudnn/Descriptors.h` - cuDNN tensor descriptors ## CUDA Categories ```{toctree} :maxdepth: 1 streams guards utilities ```