mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
GPU: Add BLAS-1 ops, DeviceScalar, device-resident SpMV, and CG interop (5/5)
Add the operator interface needed for GPU iterative solvers: - BLAS Level-1 on DeviceMatrix: dot(), norm(), squaredNorm(), setZero(), noalias(), operator+=/-=/\*= dispatching to cuBLAS axpy/scal/dot/nrm2. - DeviceScalar<Scalar>: device-resident scalar returned by reductions. Defers host sync until value is read (implicit conversion). Device-side division via NPP for real types. - GpuContext: stream-borrowing constructor, setThreadLocal(), cublasLtHandle(), cusparseHandle(). - GEMM upgraded from cublasGemmEx to cublasLtMatmul with heuristic algorithm selection and plan caching. - GpuSparseContext: GpuContext& constructor for same-stream execution, deviceView() returning DeviceSparseView with operator* for device-resident SpMV (d_y = d_A * d_x). - geam expressions: d_C = d_A + alpha * d_B via cublasXgeam. - GpuSVD::matrixV() convenience wrapper. These additions make DeviceMatrix usable as a VectorType in Eigen algorithm templates. Conjugate gradient is the motivating example and is tested against CPU ConjugateGradient for correctness. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
|
||||
#ifdef EIGEN_USE_GPU
|
||||
// IWYU pragma: begin_exports
|
||||
#include "src/GPU/DeviceScalar.h"
|
||||
#include "src/GPU/DeviceMatrix.h"
|
||||
#include "src/GPU/GpuContext.h"
|
||||
#include "src/GPU/DeviceExpr.h"
|
||||
@@ -53,8 +54,10 @@
|
||||
#include "src/GPU/CuFftSupport.h"
|
||||
#include "src/GPU/GpuFFT.h"
|
||||
#include "src/GPU/CuSparseSupport.h"
|
||||
#ifdef EIGEN_SPARSECORE_MODULE_H
|
||||
#include "src/GPU/GpuSparseContext.h"
|
||||
#ifdef EIGEN_CUDSS
|
||||
#endif
|
||||
#if defined(EIGEN_CUDSS) && defined(EIGEN_SPARSECORE_MODULE_H)
|
||||
#include "src/GPU/CuDssSupport.h"
|
||||
#include "src/GPU/GpuSparseSolverBase.h"
|
||||
#include "src/GPU/GpuSparseLLT.h"
|
||||
|
||||
Reference in New Issue
Block a user