Rasmus Munk Larsen
014f12f11a
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 >
2026-04-09 20:19:59 -07:00
..
2026-04-08 13:03:48 -07:00
2026-02-08 10:07:24 -08:00
2026-04-03 03:36:28 +00:00
2025-06-26 16:58:24 +00:00
2026-03-22 09:10:16 -07:00
2026-03-12 14:45:51 -07:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-03-12 17:02:58 -07:00
2024-05-29 13:38:00 -07:00
2023-12-05 21:22:55 +00:00
2026-04-02 14:14:54 -07:00
2026-04-07 21:08:29 -07:00
2024-10-26 00:08:25 +00:00
2025-02-21 10:27:29 -08:00
2023-12-05 21:22:55 +00:00
2026-03-12 12:48:45 -07:00
2026-03-21 16:54:13 -07:00
2026-02-22 21:20:08 -08:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-04-03 03:36:28 +00:00
2024-02-12 03:27:56 +00:00
2026-04-01 17:20:31 -07:00
2026-04-09 20:19:59 -07:00
2023-12-05 21:22:55 +00:00
2025-10-24 20:54:54 +00:00
2026-02-26 22:08:13 -08:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-02-24 19:59:10 -08:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2025-02-12 15:44:32 -08:00
2024-11-15 17:15:09 +00:00
2023-12-05 21:22:55 +00:00
2026-03-21 16:54:13 -07:00
2023-12-05 21:22:55 +00:00
2026-03-12 17:02:58 -07:00
2023-12-05 21:22:55 +00:00
2026-02-10 02:12:03 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-03-21 16:54:13 -07:00
2026-03-21 16:54:13 -07:00
2026-03-21 16:54:13 -07:00
2026-04-07 21:08:29 -07:00
2013-11-06 18:17:59 +01:00
2026-02-26 07:54:27 -08:00
2025-06-26 16:58:24 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-02-22 18:32:10 -08:00
2024-04-12 19:35:04 +00:00
2025-10-07 22:47:35 +00:00
2026-03-08 11:51:35 -07:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2025-05-28 18:39:55 -04:00
2026-03-09 00:35:26 -07:00
2026-04-09 15:21:39 -07:00
2026-04-09 20:19:59 -07:00
2026-03-21 16:54:13 -07:00
2026-04-09 19:05:25 -07:00
2026-04-09 19:11:34 -07:00
2026-04-09 19:11:49 -07:00
2026-04-09 19:11:49 -07:00
2026-04-09 19:11:49 -07:00
2026-04-09 19:11:49 -07:00
2026-04-09 19:11:34 -07:00
2026-04-09 19:05:25 -07:00
2026-04-09 19:05:25 -07:00
2026-04-09 19:11:34 -07:00
2026-04-09 19:11:34 -07:00
2026-04-09 20:19:59 -07:00
2026-04-09 20:19:59 -07:00
2026-03-04 01:41:01 -08:00
2026-04-09 19:05:25 -07:00
2026-04-09 19:05:25 -07:00
2026-04-09 15:21:39 -07:00
2025-06-17 17:05:58 +00:00
2023-12-05 21:22:55 +00:00
2026-03-27 20:49:43 -07:00
2024-03-08 19:18:10 +00:00
2025-01-31 18:32:38 +00:00
2026-03-29 09:39:13 -07:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-04-03 03:36:28 +00:00
2026-03-21 16:54:13 -07:00
2026-03-12 12:48:45 -07:00
2023-12-05 21:22:55 +00:00
2026-03-09 20:01:53 -07:00
2026-03-21 16:54:13 -07:00
2023-12-05 21:22:55 +00:00
2026-03-12 14:07:21 -07:00
2023-12-05 21:22:55 +00:00
2026-03-20 13:27:49 -07:00
2026-04-09 15:21:39 -07:00
2026-03-12 14:07:21 -07:00
2024-04-12 19:35:04 +00:00
2024-11-22 03:39:19 +00:00
2026-03-18 11:51:01 -07:00
2025-06-26 16:58:24 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-03-21 09:46:54 -07:00
2026-03-21 09:46:54 -07:00
2026-04-01 17:20:31 -07:00
2024-11-12 23:34:26 +00:00
2023-12-05 21:22:55 +00:00
2026-03-21 16:54:13 -07:00
2026-02-26 07:54:27 -08:00
2023-12-05 21:22:55 +00:00
2026-04-01 17:20:31 -07:00
2023-12-05 21:22:55 +00:00
2026-04-01 17:20:31 -07:00
2023-12-05 21:22:55 +00:00
2025-07-23 22:26:40 +00:00
2026-02-25 08:50:47 -08:00
2026-02-25 08:50:47 -08:00
2026-02-25 08:50:47 -08:00
2025-06-20 22:40:46 +00:00
2026-04-01 17:20:31 -07:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2025-08-25 18:39:06 +00:00
2026-02-24 18:29:07 -08:00
2026-03-12 18:15:30 -07:00
2026-03-12 12:32:06 -07:00
2023-12-05 21:22:55 +00:00
2026-03-21 16:54:13 -07:00
2026-03-21 16:54:13 -07:00
2026-03-12 12:32:06 -07:00
2026-03-12 17:02:58 -07:00
2026-03-21 16:54:13 -07:00
2026-03-12 12:32:06 -07:00
2023-12-05 21:22:55 +00:00
2026-04-03 03:36:28 +00:00
2026-03-22 11:12:21 -07:00
2026-03-20 17:27:02 -07:00
2026-03-03 18:44:22 -08:00
2026-02-24 18:29:07 -08:00
2024-02-20 23:44:28 +00:00
2023-12-05 21:22:55 +00:00
2026-03-21 16:54:13 -07:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-02-22 10:04:40 -08:00
2026-03-21 16:54:13 -07:00
2026-04-03 03:36:28 +00:00
2026-03-20 17:27:02 -07:00
2025-10-07 22:47:35 +00:00
2024-10-29 18:19:02 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2024-03-29 21:49:27 +00:00
2023-12-05 21:22:55 +00:00
2024-02-17 15:22:11 +00:00
2026-03-21 16:54:13 -07:00
2023-12-05 21:22:55 +00:00
2024-03-28 00:22:27 +00:00
2024-10-28 13:48:53 -07:00
2025-06-26 16:58:24 +00:00
2024-02-04 21:13:06 -05:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-03-21 13:31:12 +00:00
2026-02-23 12:00:52 -08:00
2023-12-05 21:22:55 +00:00
2026-03-09 00:35:26 -07:00
2023-12-05 21:22:55 +00:00
2024-03-28 00:22:27 +00:00
2023-12-05 21:22:55 +00:00
2024-04-12 19:35:04 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2026-03-12 18:15:30 -07:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2024-02-07 04:50:11 +00:00
2023-12-05 21:22:55 +00:00
2026-03-08 11:20:27 -07:00
2026-03-15 19:56:01 -07:00
2026-03-21 16:54:13 -07:00
2026-03-21 16:54:13 -07:00
2023-12-05 21:22:55 +00:00
2026-02-24 18:29:07 -08:00
2025-11-10 17:14:35 +00:00
2026-02-24 18:29:07 -08:00
2026-03-22 09:10:16 -07:00
2026-03-21 16:54:13 -07:00
2026-04-07 21:08:29 -07:00
2026-03-21 16:54:13 -07:00
2023-12-05 21:22:55 +00:00
2026-03-09 00:35:26 -07:00
2023-12-05 21:22:55 +00:00
2023-12-05 21:22:55 +00:00
2024-03-11 19:08:30 +00:00
2023-12-05 21:22:55 +00:00
2026-03-22 22:12:57 -07:00
2026-03-12 14:45:51 -07:00
2026-03-21 16:54:13 -07:00
2025-06-26 16:58:24 +00:00