// This file is part of Eigen, a lightweight C++ template library // for linear algebra. // // This Source Code Form is subject to the terms of the Mozilla // Public License v. 2.0. If a copy of the MPL was not distributed // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. #ifndef EIGEN_GPU_MODULE_H #define EIGEN_GPU_MODULE_H #include "Core" #include "src/Core/util/DisableStupidWarnings.h" /** \defgroup GPU_Module GPU module * * GPU-accelerated solvers and operations using NVIDIA CUDA libraries * (cuSOLVER, cuBLAS, cuSPARSE, cuFFT, cuDSS). * * This module provides explicit GPU solver classes that coexist with Eigen's * CPU solvers. Unlike the LAPACKE dispatch (which replaces the CPU * implementation globally), GPU classes are separate types the user * instantiates by choice: * * \code * #define EIGEN_USE_GPU * #include * * // CPU path (unchanged) * Eigen::LLT llt_cpu(A); * * // GPU path (explicit) * Eigen::GpuLLT llt_gpu(A); // L stays on device * auto X = llt_gpu.solve(B); // only B transferred per solve * \endcode * * Requires CUDA 11.4+. See CLAUDE.md. */ #ifdef EIGEN_USE_GPU // IWYU pragma: begin_exports #include "src/GPU/DeviceMatrix.h" #include "src/GPU/GpuContext.h" #include "src/GPU/DeviceExpr.h" #include "src/GPU/DeviceBlasExpr.h" #include "src/GPU/DeviceSolverExpr.h" #include "src/GPU/DeviceDispatch.h" #include "src/GPU/GpuLLT.h" #include "src/GPU/GpuLU.h" #include "src/GPU/GpuQR.h" #include "src/GPU/GpuSVD.h" #include "src/GPU/GpuEigenSolver.h" // IWYU pragma: end_exports #endif #include "src/Core/util/ReenableStupidWarnings.h" #endif // EIGEN_GPU_MODULE_H