TRIQS/nda 1.3.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
cxx_interface.hpp
Go to the documentation of this file.
1// Copyright (c) 2019--present, The Simons Foundation
2// This file is part of TRIQS/nda and is licensed under the Apache License, Version 2.0.
3// SPDX-License-Identifier: Apache-2.0
4// See LICENSE in the root of this distribution for details.
5
10
11#pragma once
12
13#include "../tools.hpp"
14
15#if defined(NDA_HAVE_CUDA)
17#endif // NDA_HAVE_CUDA
18
19namespace nda::blas::f77 {
20
21 void axpy(int n, double alpha, const double *x, int incx, double *y, int incy);
22 void axpy(int n, dcomplex alpha, const dcomplex *x, int incx, dcomplex *y, int incy);
23
24 void copy(int n, const double *x, int incx, double *y, int incy);
25 void copy(int n, const dcomplex *x, int incx, dcomplex *y, int incy);
26
27 double dot(int m, const double *x, int incx, const double *y, int incy);
28 dcomplex dot(int m, const dcomplex *x, int incx, const dcomplex *y, int incy);
29 dcomplex dotc(int m, const dcomplex *x, int incx, const dcomplex *y, int incy);
30
31 void gemm(char op_a, char op_b, int m, int n, int k, double alpha, const double *a, int lda, const double *b, int ldb, double beta, double *c,
32 int ldc);
33 void gemm(char op_a, char op_b, int m, int n, int k, dcomplex alpha, const dcomplex *a, int lda, const dcomplex *b, int ldb, dcomplex beta,
34 dcomplex *c, int ldc);
35
36 void gemm_batch(char op_a, char op_b, int m, int n, int k, double alpha, const double **a, int lda, const double **b, int ldb, double beta,
37 double **c, int ldc, int batch_count);
38 void gemm_batch(char op_a, char op_b, int m, int n, int k, dcomplex alpha, const dcomplex **a, int lda, const dcomplex **b, int ldb, dcomplex beta,
39 dcomplex **c, int ldc, int batch_count);
40
41 void gemm_vbatch(char op_a, char op_b, int *m, int *n, int *k, double alpha, const double **a, int *lda, const double **b, int *ldb, double beta,
42 double **c, int *ldc, int batch_count);
43 void gemm_vbatch(char op_a, char op_b, int *m, int *n, int *k, dcomplex alpha, const dcomplex **a, int *lda, const dcomplex **b, int *ldb,
44 dcomplex beta, dcomplex **c, int *ldc, int batch_count);
45
46 void gemm_batch_strided(char op_a, char op_b, int m, int n, int k, double alpha, const double *a, int lda, int stride_a, const double *b, int ldb,
47 int stride_b, double beta, double *c, int ldc, int stride_c, int batch_count);
48 void gemm_batch_strided(char op_a, char op_b, int m, int n, int k, dcomplex alpha, const dcomplex *a, int lda, int stride_a, const dcomplex *b,
49 int ldb, int stride_b, dcomplex beta, dcomplex *c, int ldc, int stride_c, int batch_count);
50
51 void gemv(char op, int m, int n, double alpha, const double *a, int lda, const double *x, int incx, double beta, double *y, int incy);
52 void gemv(char op, int m, int n, dcomplex alpha, const dcomplex *a, int lda, const dcomplex *x, int incx, dcomplex beta, dcomplex *y, int incy);
53
54 void ger(int m, int n, double alpha, const double *x, int incx, const double *y, int incy, double *a, int lda);
55 void ger(int m, int n, dcomplex alpha, const dcomplex *x, int incx, const dcomplex *y, int incy, dcomplex *a, int lda);
56 void gerc(int m, int n, dcomplex alpha, const dcomplex *x, int incx, const dcomplex *y, int incy, dcomplex *a, int lda);
57
58 void scal(int m, double alpha, double *x, int incx);
59 void scal(int m, dcomplex alpha, dcomplex *x, int incx);
60
61 void swap(int n, double *x, int incx, double *y, int incy); // NOLINT (this is a BLAS swap)
62 void swap(int n, dcomplex *x, int incx, dcomplex *y, int incy); // NOLINT (this is a BLAS swap)
63
64} // namespace nda::blas::f77
Provides a C++ interface for the GPU versions of various BLAS routines.
std::complex< double > dcomplex
Alias for std::complex<double> type.
Definition tools.hpp:28
Provides various traits and utilities for the BLAS interface.