12#ifndef MFEM_GPU_BLAS_LINALG
13#define MFEM_GPU_BLAS_LINALG
19#if defined(MFEM_USE_CUDA)
21#elif defined(MFEM_USE_HIP)
22#include <hipblas/hipblas.h>
33#if defined(MFEM_USE_CUDA)
34 using HandleType = cublasHandle_t;
35#elif defined(MFEM_USE_HIP)
36 using HandleType = hipblasHandle_t;
38 using HandleType = std::nullptr_t;
41 HandleType handle =
nullptr;
47 static HandleType
Handle();
54#ifdef MFEM_USE_CUDA_OR_HIP
61 Op op = Op::N)
const override;
Abstract base clase for batched linear algebra operations.
Op
Operation type (transposed or not transposed)
Rank 3 tensor (array of matrices)
void AddMult(const DenseTensor &A, const Vector &x, Vector &y, real_t alpha=1.0, real_t beta=1.0, Op op=Op::N) const override
See BatchedLinAlg::AddMult.
void LUSolve(const DenseTensor &LU, const Array< int > &P, Vector &x) const override
See BatchedLinAlg::LUSolve.
void LUFactor(DenseTensor &A, Array< int > &P) const override
See BatchedLinAlg::LUFactor.
void Invert(DenseTensor &A) const override
See BatchedLinAlg::Invert.
Singleton class represented a cuBLAS or hipBLAS handle.
static void EnableAtomics()
Enable atomic operations.
static void DisableAtomics()
Disable atomic operations.
static HandleType Handle()
Return the handle, creating it if needed.