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