9#include <batchlas/backend_config.h>
21inline constexpr bool kHasNetlib = BATCHLAS_HAS_LAPACKE && BATCHLAS_HAS_CBLAS;
23 BATCHLAS_HAS_CUBLAS && BATCHLAS_HAS_CUSOLVER && BATCHLAS_HAS_CUSPARSE;
59 : B ==
Backend::SYCL ?
"a vendor GPU library" :
"netlib CBLAS/LAPACKE";
63 : B ==
Backend::SYCL ?
"a vendor GPU library" :
"netlib CBLAS/LAPACKE";
67 : B ==
Backend::SYCL ?
"a vendor GPU library" :
"netlib CBLAS/LAPACKE";
71 : B ==
Backend::SYCL ?
"a vendor GPU library" :
"netlib CBLAS/LAPACKE";
103template <Backend B,
typename T>
NoRouteError(Op op, Backend backend, ScalarKind scalar, std::string detail)
What this build links and what a run reached, as CSV in BATCHLAS_COVERAGE_OUT.pid; the columns are a ...
Enumerations, scalar traits and scalar concepts shared by every public header.
Backend
Library family an entry point dispatches to, used as a template argument.
@ NETLIB
Host CBLAS / LAPACKE; the fallback for any device.
@ SYCL
Native SYCL kernels on a GPU with no vendor library (AdaptiveCpp Metal); float and complex<float> onl...
@ ROCM
AMD GPU: rocBLAS / rocSOLVER / rocSPARSE and the native SYCL kernels.
@ CUDA
NVIDIA GPU: cuBLAS / cuSOLVER / cuSPARSE and the native SYCL kernels.
void record_miss(Op op, ScalarKind scalar, Backend backend, const char *library)
constexpr bool solver_vendor_available
constexpr bool level3_vendor_available
constexpr const char * kLevel3Library
The library name a diagnostic quotes when the answer is no.
constexpr bool native_gpu_backend
Backends with wired native GPU kernels; ROCm and the host keep their vendor routes.
constexpr bool factorization_vendor_available
geqrf/orgqr/getrf/getrs/getri/ormqr.
Lib
The library group an op's Vendor family calls; an op names exactly one (OpSpec::vendor).
constexpr bool kHasNetlib
constexpr bool has_library(Lib l)
Is library group l compiled in for backend B? Always false for Lib::none.
constexpr const char * library_name(Lib l)
constexpr bool level3_tile_substitution_enabled
constexpr bool sparse_vendor_available
constexpr const char * kSolverLibrary
constexpr bool kHasCudaVendor
void throw_no_vendor_route(Op op, Backend backend, const char *library)
The single funnel for "nothing can serve this call": records the miss, then throws NoRouteError.
constexpr const char * kSparseLibrary
constexpr const char * kFactorizationLibrary
constexpr ScalarKind scalar_kind_of