PLASMA
Parallel Linear Algebra Software for Multicore Architectures
core_lapack.h
1 
10 #ifndef ICL_CORE_LAPACK_H
11 #define ICL_CORE_LAPACK_H
12 
13 
14 
15 #if defined(PLASMA_WITH_MKL)
16  #include <mkl_cblas.h>
17  #include <mkl_lapacke.h>
18 
19  // MKL LAPACKE doesn't provide LAPACK_GLOBAL macro, so define it here.
20  // MKL provides all 3 name manglings (foo, foo_, FOO); pick foo_.
21  #ifndef LAPACK_GLOBAL
22  #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_
23  #endif
24 #elif defined(PLASMA_WITH_ESSL)
25  // GCC + ESSL(BLAS) + LAPACKE/CBLAS from LAPACK
26  #include <cblas.h>
27  #include <lapacke.h>
28  #ifndef LAPACK_GLOBAL
29  #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_
30  #endif
31 #else
32  #include <cblas.h>
33  #include <lapacke.h>
34 
35  // Intel mkl_cblas.h does: typedef enum {...} CBLAS_ORDER;
36  // Netlib cblas.h does: enum CBLAS_ORDER {...};
37  // OpenBLAS cblas.h does: typedef enum CBLAS_ORDER {...} CBLAS_ORDER;
38  // We use (CBLAS_ORDER), so add these typedefs for Netlib.
39  #ifndef OPENBLAS_VERSION
40  typedef enum CBLAS_ORDER CBLAS_ORDER;
41  typedef enum CBLAS_TRANSPOSE CBLAS_TRANSPOSE;
42  typedef enum CBLAS_UPLO CBLAS_UPLO;
43  typedef enum CBLAS_DIAG CBLAS_DIAG;
44  typedef enum CBLAS_SIDE CBLAS_SIDE;
45  #endif
46 #endif
47 
48 #include "core_lapack_s.h"
49 #include "core_lapack_d.h"
50 #include "core_lapack_c.h"
51 #include "core_lapack_z.h"
52 #endif // ICL_CORE_LAPACK_H