SIRIUS 7.5.0
Electronic structure library and applications
Namespaces | Macros | Functions
acc_blas.hpp File Reference

Blas functions for execution on GPUs. More...

Go to the source code of this file.

Namespaces

module  sirius
 Namespace of the SIRIUS library.
 
namespace  sirius::acc
 Namespace for accelerator-related functions.
 
namespace  sirius::acc::blas
 User facing interface to GPU blas functions.
 
namespace  sirius::acc::blas::xt
 Interface to cuBlasXt functions.
 

Macros

#define CALL_GPU_BLAS(func__, args__)
 

Functions

const char * sirius::acc::blas::error_message (acc::blas_api::status_t status)
 
acc::blas_api::operation_t sirius::acc::blas::get_gpublasOperation_t (char c)
 
acc::blas_api::side_mode_t sirius::acc::blas::get_gpublasSideMode_t (char c)
 
acc::blas_api::fill_mode_t sirius::acc::blas::get_gpublasFillMode_t (char c)
 
acc::blas_api::diagonal_t sirius::acc::blas::get_gpublasDiagonal_t (char c)
 
acc::blas_api::handle_t & sirius::acc::blas::null_stream_handle ()
 Store the default (null) stream handler. More...
 
std::vector< acc::blas_api::handle_t > & sirius::acc::blas::stream_handles ()
 Store the gpublas handlers associated with acc streams. More...
 
void sirius::acc::blas::create_stream_handles ()
 
void sirius::acc::blas::destroy_stream_handles ()
 
acc::blas_api::handle_t sirius::acc::blas::stream_handle (int id__)
 
void sirius::acc::blas::zgemv (char transa, int32_t m, int32_t n, acc_complex_double_t *alpha, acc_complex_double_t *a, int32_t lda, acc_complex_double_t *x, int32_t incx, acc_complex_double_t *beta, acc_complex_double_t *y, int32_t incy, int stream_id)
 
void sirius::acc::blas::cgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, acc_complex_float_t const *alpha, acc_complex_float_t const *a, int32_t lda, acc_complex_float_t const *b, int32_t ldb, acc_complex_float_t const *beta, acc_complex_float_t *c, int32_t ldc, int stream_id)
 
void sirius::acc::blas::zgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, acc_complex_double_t const *alpha, acc_complex_double_t const *a, int32_t lda, acc_complex_double_t const *b, int32_t ldb, acc_complex_double_t const *beta, acc_complex_double_t *c, int32_t ldc, int stream_id)
 
void sirius::acc::blas::sgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, float const *alpha, float const *a, int32_t lda, float const *b, int32_t ldb, float const *beta, float *c, int32_t ldc, int stream_id)
 
void sirius::acc::blas::dgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, double const *alpha, double const *a, int32_t lda, double const *b, int32_t ldb, double const *beta, double *c, int32_t ldc, int stream_id)
 
void sirius::acc::blas::strmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, float const *alpha__, float const *A__, int lda__, float *B__, int ldb__, int stream_id)
 
void sirius::acc::blas::dtrmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, double const *alpha__, double const *A__, int lda__, double *B__, int ldb__, int stream_id)
 
void sirius::acc::blas::ctrmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, acc_complex_float_t const *alpha__, acc_complex_float_t const *A__, int lda__, acc_complex_float_t *B__, int ldb__, int stream_id)
 
void sirius::acc::blas::ztrmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, acc_complex_double_t const *alpha__, acc_complex_double_t const *A__, int lda__, acc_complex_double_t *B__, int ldb__, int stream_id)
 
void sirius::acc::blas::sger (int m, int n, float const *alpha, float const *x, int incx, float const *y, int incy, float *A, int lda, int stream_id)
 
void sirius::acc::blas::dger (int m, int n, double const *alpha, double const *x, int incx, double const *y, int incy, double *A, int lda, int stream_id)
 
void sirius::acc::blas::cgeru (int m, int n, acc_complex_float_t const *alpha, acc_complex_float_t const *x, int incx, acc_complex_float_t const *y, int incy, acc_complex_float_t *A, int lda, int stream_id)
 
void sirius::acc::blas::zgeru (int m, int n, acc_complex_double_t const *alpha, acc_complex_double_t const *x, int incx, acc_complex_double_t const *y, int incy, acc_complex_double_t *A, int lda, int stream_id)
 
void sirius::acc::blas::zaxpy (int n__, acc_complex_double_t const *alpha__, acc_complex_double_t const *x__, int incx__, acc_complex_double_t *y__, int incy__)
 
void sirius::acc::blas::dscal (int n__, double const *alpha__, double *x__, int incx__)
 
void sirius::acc::blas::sscal (int n__, float const *alpha__, float *x__, int incx__)
 
cublasXtHandle_t & sirius::acc::blas::xt::cublasxt_handle ()
 
void sirius::acc::blas::xt::create_handle ()
 
void sirius::acc::blas::xt::destroy_handle ()
 
void sirius::acc::blas::xt::cgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, acc_complex_float_t const *alpha, acc_complex_float_t const *a, int32_t lda, acc_complex_float_t const *b, int32_t ldb, acc_complex_float_t const *beta, acc_complex_float_t *c, int32_t ldc)
 
void sirius::acc::blas::xt::zgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, acc_complex_double_t const *alpha, acc_complex_double_t const *a, int32_t lda, acc_complex_double_t const *b, int32_t ldb, acc_complex_double_t const *beta, acc_complex_double_t *c, int32_t ldc)
 
void sirius::acc::blas::xt::sgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, float const *alpha, float const *a, int32_t lda, float const *b, int32_t ldb, float const *beta, float *c, int32_t ldc)
 
void sirius::acc::blas::xt::dgemm (char transa, char transb, int32_t m, int32_t n, int32_t k, double const *alpha, double const *a, int32_t lda, double const *b, int32_t ldb, double const *beta, double *c, int32_t ldc)
 
void sirius::acc::blas::xt::strmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, float const *alpha__, float const *A__, int lda__, float *B__, int ldb__)
 
void sirius::acc::blas::xt::dtrmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, double const *alpha__, double const *A__, int lda__, double *B__, int ldb__)
 
void sirius::acc::blas::xt::ctrmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, acc_complex_float_t const *alpha__, acc_complex_float_t const *A__, int lda__, acc_complex_float_t *B__, int ldb__)
 
void sirius::acc::blas::xt::ztrmm (char side__, char uplo__, char transa__, char diag__, int m__, int n__, acc_complex_double_t const *alpha__, acc_complex_double_t const *A__, int lda__, acc_complex_double_t *B__, int ldb__)
 

Detailed Description

Blas functions for execution on GPUs.

Definition in file acc_blas.hpp.

Macro Definition Documentation

◆ CALL_GPU_BLAS

#define CALL_GPU_BLAS (   func__,
  args__ 
)
Value:
{ \
acc::blas_api::status_t status; \
if ((status = func__ args__) != acc::blas_api::status::Success) { \
error_message(status); \
char nm[1024]; \
gethostname(nm, 1024); \
std::printf("hostname: %s\n", nm); \
std::printf("Error in %s at line %i of file %s\n", #func__, __LINE__, __FILE__); \
acc::stack_backtrace(); \
} \
}
@ nm
Non-magnetic case.

Definition at line 154 of file acc_blas.hpp.