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.