Rasmus Munk Larsen
8593c7f5a1
GPU: Add dense cuSOLVER solvers (QR, SVD, EigenSolver)
...
Add QR (geqrf + ormqr + trsm), SVD (gesvd), and self-adjoint eigenvalue
decomposition (syevd) via cuSOLVER. All support host and DeviceMatrix input.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-09 19:11:34 -07:00
Rasmus Munk Larsen
58c44ef36d
GPU: Add library dispatch module (DeviceMatrix, cuBLAS, cuSOLVER)
...
Add Eigen/GPU module: A standalone GPU library dispatch layer where
DeviceMatrix<Scalar> operations map 1:1 to cuBLAS/cuSOLVER calls.
CPU and GPU solvers coexist in the same binary with compatible syntax.
Core infrastructure:
- DeviceMatrix<Scalar>: RAII dense column-major GPU memory wrapper with
async host transfer (fromHost/toHost) and CUDA event-based cross-stream
synchronization.
- GpuContext: Unified execution context owning a CUDA stream + cuBLAS
handle + cuSOLVER handle. Thread-local default with explicit override
via setThreadLocal(). Stream-borrowing constructor for integration.
- DeviceBuffer: Typed RAII device allocation with move semantics.
cuBLAS dispatch (expression syntax):
- GEMM: d_C = d_A.adjoint() * d_B (cublasXgemm)
- TRSM: d_X = d_A.triangularView<Lower>().solve(d_B) (cublasXtrsm)
- SYMM/HEMM: d_C = d_A.selfadjointView<Lower>() * d_B (cublasXsymm)
- SYRK/HERK: d_C = d_A * d_A.adjoint() (cublasXsyrk)
cuSOLVER dispatch:
- GpuLLT: Cached Cholesky factorization (cusolverDnXpotrf + Xpotrs)
- GpuLU: Cached LU factorization (cusolverDnXgetrf + Xgetrs)
- Solver chaining: auto x = d_A.llt().solve(d_B)
- Solver expressions with .device(ctx) for explicit stream control.
CI: Bump CUDA container to Ubuntu 22.04 (CMake 3.22), GCC 10->11,
Clang 12->14. Bump cmake_minimum_required to 3.17 for FindCUDAToolkit.
Tests: gpu_cublas.cpp, gpu_cusolver_llt.cpp, gpu_cusolver_lu.cpp,
gpu_device_matrix.cpp, gpu_library_example.cu
Benchmarks: bench_gpu_solvers.cpp, bench_gpu_chaining.cpp,
bench_gpu_batching.cpp
2026-04-09 19:05:25 -07:00
Rasmus Munk Larsen
6a9405bf7a
GPU: Raise CUDA/HIP minimum and remove legacy guards
...
- Raise CUDA minimum from 9.0 to 11.4 (sm_70/Volta).
- Raise HIP minimum to GFX906 (Vega 20/MI50) / ROCm 5.6.
- Remove EIGEN_HAS_{CUDA,HIP,GPU}_FP16 guards — FP16 is always available
on sm_70+ and GFX906+.
- Remove obsolete __HIP_ARCH_HAS_* preprocessor branches.
- C++14 cleanup: remove pre-C++14 workarounds in GPU code.
- Fix NVCC warnings (deprecated register keyword, unreachable code,
tautological comparisons).
- Fix HIP test execution on gfx1151.
- Update CI configuration for new minimum versions.
2026-04-09 15:21:39 -07:00
Rasmus Munk Larsen
b1d2ce4c85
Revert "Speed up plog_double ~1.7x with fast integer range reduction"
...
This reverts merge request !2385
2026-04-08 13:03:48 -07:00
Rasmus Munk Larsen
ab70739c9c
Speed up plog_double ~1.7x with fast integer range reduction
...
libeigen/eigen!2385
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-04-07 21:48:25 -07:00
Rasmus Munk Larsen
110530a4d8
Fix bugs and improve robustness of SelfAdjointEigenSolver, improve test coverage
...
libeigen/eigen!2396
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-04-07 21:08:29 -07:00
Rasmus Munk Larsen
ebae0c7c10
ulp_accuracy: use dynamic work queue for thread load balancing
...
libeigen/eigen!2383
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-04-02 22:40:03 -07:00
Charles Schlosser
5977635d64
fix singed integer overflow UB in integer_types and other trivial compiler warnings
...
libeigen/eigen!2380
2026-04-03 03:36:28 +00:00
Rasmus Munk Larsen
60df12437e
Fix ulp_accuracy crashes in Release builds
...
libeigen/eigen!2381
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-04-02 20:12:13 -07:00
Rasmus Munk Larsen
8ec68856a6
Fix basicstuff_8 casting test failure on loongarch64
...
libeigen/eigen!2379
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-04-02 14:14:54 -07:00
Rasmus Munk Larsen
64885cc6a3
Fix remaining MSVC warnings in Windows CI (C4804, C4244, C4146, C4305)
...
libeigen/eigen!2374
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-04-01 17:20:31 -07:00
Pavel Guzenfeld
b7f6aed1b9
Fix dangling reference in IndexedView with expression indices
...
libeigen/eigen!2335
Closes #1943
2026-03-29 09:39:13 -07:00
Rasmus Munk Larsen
624ab58e8d
Add bidiagonal SVD API to BDCSVD and remove dead debug code
...
libeigen/eigen!2238
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-28 20:38:31 -07:00
Charles Schlosser
ba9871e46b
fix and enable realview unit tests
...
libeigen/eigen!2356
2026-03-28 20:13:54 -07:00
Rasmus Munk Larsen
5e521f3e45
Revert "add realview test"
...
This reverts merge request !2352
2026-03-28 17:27:01 -07:00
Charles Schlosser
87ae1dbe7f
add realview test
...
libeigen/eigen!2352
2026-03-28 16:26:51 -07:00
Rasmus Munk Larsen
9706546a14
Add Householder blocked-right regression test
...
libeigen/eigen!2348
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-27 20:49:43 -07:00
Rasmus Munk Larsen
b8baa2c49c
Split eigensolver_selfadjoint test to fix NVHPC OOM
...
libeigen/eigen!2347
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-27 18:09:26 -07:00
Rasmus Munk Larsen
f574cb9b18
Fix vectorization_logic test for generic clang backend
...
libeigen/eigen!2333
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-22 22:12:57 -07:00
Rasmus Munk Larsen
843ffcec8b
Fix warnings reported by NVHPC 26.1
...
libeigen/eigen!2324
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-22 11:43:40 -07:00
Florian Maurin
71ef987edb
Fixes triangular solves on indexed/sliced dense expressions
...
libeigen/eigen!2340
Closes #2814
2026-03-22 11:12:21 -07:00
Rasmus Munk Larsen
6490b17e6f
Fix sanitizer regressions in sparse serializer and packet tests
...
libeigen/eigen!2319
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-22 09:10:16 -07:00
Pavel Guzenfeld
a0e30732a7
Remove trailing semicolon from EIGEN_UNUSED_VARIABLE macro
...
libeigen/eigen!2301
Closes #3007
Co-authored-by: Pavel Guzenfeld <67074795+PavelGuzenfeld@users.noreply.github.com >
2026-03-21 16:54:13 -07:00
Rasmus Munk Larsen
54b04fc6b1
Fix mixed-type GEMM packing for backends without half/quarter packets
...
libeigen/eigen!2297
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-21 09:46:54 -07:00
Pavel Guzenfeld
1d21d62fbc
Fix computeInverseAndDetWithCheck for dynamic result matrices
...
libeigen/eigen!2312
Closes #2917
2026-03-21 08:38:27 -07:00
Rasmus Munk Larsen
cc8c7cf0e6
Fix bugs and clean up SparseCore module
...
libeigen/eigen!2250
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-21 13:31:12 +00:00
Rasmus Munk Larsen
8115b45e50
Fix integer sanitizer issues in shifts and test ranges
...
libeigen/eigen!2320
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-20 17:27:02 -07:00
Rasmus Munk Larsen
6540bf4787
Harden unsupported tensor tests for sanitizers
...
libeigen/eigen!2321
Co-authored-by: Rasmus Munk Larsen <rlarsen@nvidia.com >
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-20 15:12:41 -07:00
Rasmus Munk Larsen
a0b16a7e1b
Fix flaky product and eigensolver_selfadjoint tests
...
libeigen/eigen!2326
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-20 13:44:03 -07:00
Pavel Guzenfeld
a72172e563
Add blocking and vectorization boundary tests for LU and Cholesky
...
libeigen/eigen!2317
2026-03-20 13:27:49 -07:00
Rasmus Munk Larsen
8a47aa334b
Replace empirical product test tolerances with principled Higham-Mary bounds
...
libeigen/eigen!2292
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-20 11:03:58 -07:00
Pavel Guzenfeld
05295a818b
Fix undefined behavior in matrix_cwise test for signed integers
...
libeigen/eigen!2310
Closes #2933
2026-03-18 11:51:01 -07:00
Rasmus Munk Larsen
ea13a98dec
Fix imag_ref for real scalar types and clean up svd_fill.h
...
libeigen/eigen!2303
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-15 19:56:01 -07:00
Antonio Sánchez
929785924c
Fix more cache size queries.
...
libeigen/eigen!2296
2026-03-14 16:07:44 +00:00
Antonio Sánchez
b2f95d3733
Fix more cache size queries.
...
libeigen/eigen!2295
2026-03-14 15:43:24 +00:00
Rasmus Munk Larsen
c1faa74738
Add boundary test coverage: stableNorm, LinSpaced, complex GEMV, triangular solve
...
libeigen/eigen!2291
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-12 18:15:30 -07:00
Rasmus Munk Larsen
6b9275d1a8
Add test coverage for transpose, reverse, bool redux, select, diagonal-of-product at boundaries
...
libeigen/eigen!2290
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-12 17:02:58 -07:00
Rasmus Munk Larsen
356a9ba1da
Add test coverage for matrix lpNorm, RowMajor partial reductions, selfadjoint boundaries
...
libeigen/eigen!2289
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-12 14:45:51 -07:00
Rasmus Munk Larsen
15cae83485
Add test coverage for strided maps, triangular blocking, and mixed storage orders
...
libeigen/eigen!2288
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-12 14:07:21 -07:00
Rasmus Munk Larsen
93aa959b8a
Add vectorization boundary tests for redux and visitor
...
libeigen/eigen!2287
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-12 13:47:15 -07:00
Rasmus Munk Larsen
c93116b43d
Improve test coverage for inner product, fill, reductions, and IO
...
libeigen/eigen!2286
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-12 12:48:45 -07:00
Rasmus Munk Larsen
5e478d3285
Improve product test coverage at critical code-path boundaries
...
libeigen/eigen!2285
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-12 12:32:06 -07:00
Charles Schlosser
875fb48f0a
fix various irksome compiler warnings
...
libeigen/eigen!2280
2026-03-11 21:01:20 -07:00
Charles Schlosser
c4eb3c4f4c
fix custom visitors
...
libeigen/eigen!2275
Closes #2920
2026-03-11 10:52:49 +00:00
Antonio Sánchez
4387e32481
Fix row-skipping bug in general_matrix_vector_product::run_small_cols
...
libeigen/eigen!2276
2026-03-10 15:16:00 -07:00
Rasmus Munk Larsen
42b6c43cfe
Revert "Remove random retry loops in tests (batch 2: indices and integer types)"
...
This reverts merge request !2261
2026-03-09 20:01:53 -07:00
Rasmus Munk Larsen
54458cb39d
Remove random retry loops in tests (batch 3: geometry, sparse, umeyama)
...
libeigen/eigen!2262
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-09 00:35:26 -07:00
Rasmus Munk Larsen
8eaa7552fe
Fix three flaky tests: packetmath, array_cwise, polynomialsolver
...
libeigen/eigen!2267
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-08 14:59:23 -07:00
Rasmus Munk Larsen
dd81698aed
Fix vectorization_logic test for wide SIMD widths
...
libeigen/eigen!2266
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-08 12:11:33 -07:00
Rasmus Munk Larsen
ab58784268
Remove random retry loops in tests (batch 5: geometry, mixing types, triangular)
...
libeigen/eigen!2264
Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com >
2026-03-08 11:51:35 -07:00