Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Namespaces | Macros | Functions
blasproto.hpp File Reference

Templated BLAS interface declarations and wrappers. More...

This graph shows which files directly or indirectly include this file:

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)
 

Detailed Description

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:

Each inclusion generates extern "C" declarations and inline C++ overloads, optionally including trace hooks via UNI20_EXTERNAL_API_CALL.

Note
This file must not use #pragma once or include guards.
Valid combinations of macros:
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