fml  0.1-0
Fused Matrix Library
pblas.hh
1 // This file is part of fml which is released under the Boost Software
2 // License, Version 1.0. See accompanying file LICENSE or copy at
3 // https://www.boost.org/LICENSE_1_0.txt
4 
5 #ifndef FML_MPI_LINALG_INTERNALS_PBLAS_H
6 #define FML_MPI_LINALG_INTERNALS_PBLAS_H
7 #pragma once
8 
9 
10 #include "pblas_prototypes.h"
11 
12 
13 namespace fml
14 {
15  namespace pblas
16  {
17  inline void gemm(const char transa, const char transb, const int m, const int n,
18  const int k, const float alpha, const float *a, const int *desca,
19  const float *b, const int *descb, const float beta, float *c,
20  const int *descc)
21  {
22  int ij = 1;
23  psgemm_(&transa, &transb, &m, &n, &k, &alpha, a, &ij, &ij, desca, b,
24  &ij, &ij, descb, &beta, c, &ij, &ij, descc);
25  }
26 
27  inline void gemm(const char transa, const char transb, const int m, const int n,
28  const int k, const double alpha, const double *a, const int *desca,
29  const double *b, const int *descb, const double beta, double *c,
30  const int *descc)
31  {
32  int ij = 1;
33  pdgemm_(&transa, &transb, &m, &n, &k, &alpha, a, &ij, &ij, desca, b,
34  &ij, &ij, descb, &beta, c, &ij, &ij, descc);
35  }
36 
37 
38 
39  inline void syrk(const char uplo, const char trans, const int n, const int k,
40  const float alpha, const float *a, const int *desca,
41  const float beta, float *c, const int *descc)
42  {
43  int ij = 1;
44  pssyrk_(&uplo, &trans, &n, &k, &alpha, a, &ij, &ij, desca, &beta, c, &ij,
45  &ij, descc);
46  }
47 
48  inline void syrk(const char uplo, const char trans, const int n, const int k,
49  const double alpha, const double *a, const int *desca,
50  const double beta, double *c, const int *descc)
51  {
52  int ij = 1;
53  pdsyrk_(&uplo, &trans, &n, &k, &alpha, a, &ij, &ij, desca, &beta, c, &ij,
54  &ij, descc);
55  }
56 
57 
58 
59  inline void tran(const int m, const int n, const float alpha, const float *a,
60  const int *desca, const float beta, float *c, const int *descc)
61  {
62  int ij = 1;
63  pstran_(&m, &n, &alpha, a, &ij, &ij, desca, &beta, c, &ij, &ij, descc);
64  }
65 
66  inline void tran(const int m, const int n, const double alpha, const double *a,
67  const int *desca, const double beta, double *c, const int *descc)
68  {
69  int ij = 1;
70  pdtran_(&m, &n, &alpha, a, &ij, &ij, desca, &beta, c, &ij, &ij, descc);
71  }
72 
73 
74 
75  inline void geadd(const char trans, const int m, const int n,
76  const float alpha, const float *a, const int *desca, const float beta,
77  float *c, const int *descc)
78  {
79  int ij = 1;
80  psgeadd_(&trans, &m, &n, &alpha, a, &ij, &ij, desca, &beta, c, &ij, &ij,
81  descc);
82  }
83 
84  inline void geadd(const char trans, const int m, const int n,
85  const double alpha, const double *a, const int *desca, const double beta,
86  double *c, const int *descc)
87  {
88  int ij = 1;
89  pdgeadd_(&trans, &m, &n, &alpha, a, &ij, &ij, desca, &beta, c, &ij, &ij,
90  descc);
91  }
92  }
93 }
94 
95 
96 #endif
fml
Core namespace.
Definition: dimops.hh:10