|
Uni20
Asynchronous tensor and runtime library.
|
Templated BLAS interface declarations and wrappers. More...
Go to the source code of this file.
Namespaces | |
| namespace | uni20 |
| namespace | uni20::blas |
Macros | |
| #define | UNI20_INTERNAL_BLAS_FN(NAME) UNI20_INTERNAL_CONCAT(UNI20_INTERNAL_CONCAT(BLASCHAR, NAME), _) |
| Builds the mangled Fortran symbol name for the current BLAS instantiation. | |
| #define | UNI20_INTERNAL_CONCAT(x, y) UNI20_INTERNAL_CONCAT2(x, y) |
| Internal macro that concatenates two tokens after expanding both arguments. | |
| #define | UNI20_INTERNAL_CONCAT2(x, y) x##y |
Internal macro that concatenates two tokens without macro expansion on x. | |
Functions | |
| void | uni20::blas::gemm (char transa, char transb, blas_int m, blas_int n, blas_int k, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE const *B, blas_int ldb, BLASTYPE beta, BLASTYPE *C, blas_int ldc) |
| void | uni20::blas::gemv (char trans, blas_int m, blas_int n, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE const *x, blas_int incx, BLASTYPE beta, BLASTYPE *y, blas_int incy) |
| void | uni20::blas::ger (blas_int m, blas_int n, BLASTYPE alpha, BLASTYPE const *x, blas_int incx, BLASTYPE const *y, blas_int incy, BLASTYPE *A, blas_int lda) |
| void | uni20::blas::syr2k (char uplo, char trans, blas_int n, blas_int k, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE const *B, blas_int ldb, BLASTYPE beta, BLASTYPE *C, blas_int ldc) |
| void | uni20::blas::syrk (char uplo, char trans, blas_int n, blas_int k, BLASTYPE alpha, BLASTYPE const *A, blas_int lda, BLASTYPE beta, BLASTYPE *C, blas_int ldc) |
Templated BLAS interface declarations and wrappers.
This header defines overloads for BLAS level 2 and 3 routines such as gemm, gemv, syrk, herk, etc., using Fortran-style symbols like dgemm_, zher2k_, and so on.
It is designed to be included multiple times, with the following preprocessor macros defined before each inclusion:
BLASCHAR: One of s, d, c, or z, indicating the BLAS prefix.BLASTYPE: The C++ scalar type corresponding to the BLAS prefix.BLASREALTYPE: The corresponding real type, used by herk/her2k.BLASCOMPLEX: Either 0 (for real types) or 1 (for complex types).Each inclusion generates extern "C" declarations and inline C++ overloads, optionally including trace hooks via UNI20_EXTERNAL_API_CALL.
#pragma once or include guards.| Fortran Type | BLASCHAR | BLASTYPE | BLASREALTYPE | BLASCOMPLEX |
|---|---|---|---|---|
| REAL | s | float32 | float32 | 0 |
| DOUBLE PRECISION | d | float64 | float64 | 0 |
| COMPLEX | c | complex64 | float32 | 1 |
| COMPLEX*16 | z | complex128 | float64 | 1 |