xref: /petsc/src/mat/impls/baij/seq/baijmkl/baijmkl.h (revision 3ea99036a5fedea4d39e7e77471d0ab500c249d7)
1 #ifndef BAIJMKL_H
2 #define BAIJMKL_H
3 
4 #define MKL_Complex16 PetscScalar
5 #define MKL_Complex8  PetscScalar
6 #define PetscCallMKL(stat) \
7   do { \
8     PetscCheck(stat == SPARSE_STATUS_SUCCESS, PETSC_COMM_SELF, PETSC_ERR_LIB, "Error in MKL sparse matrix call"); \
9   } while (0)
10 #if !defined(PETSC_USE_COMPLEX)
11   #if defined(PETSC_USE_REAL_SINGLE)
12     #define mkl_sparse_x_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values) mkl_sparse_s_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values)
13   #elif defined(PETSC_USE_REAL_DOUBLE)
14     #define mkl_sparse_x_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values) mkl_sparse_d_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values)
15   #endif
16 #else
17   #if defined(PETSC_USE_REAL_SINGLE)
18     #define mkl_sparse_x_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values) mkl_sparse_c_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values)
19   #elif defined(PETSC_USE_REAL_DOUBLE)
20     #define mkl_sparse_x_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values) mkl_sparse_z_create_bsr(A, indexing, block_layout, rows, cols, block_size, rows_start, rows_end, col_indx, values)
21   #endif
22 #endif
23 
24 #if !defined(PETSC_USE_COMPLEX)
25   #if defined(PETSC_USE_REAL_SINGLE)
26     #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_s_mv(operation, alpha, A, descr, x, beta, y)
27   #elif defined(PETSC_USE_REAL_DOUBLE)
28     #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_d_mv(operation, alpha, A, descr, x, beta, y)
29   #endif
30 #else
31   #if defined(PETSC_USE_REAL_SINGLE)
32     #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_c_mv(operation, alpha, A, descr, x, beta, y)
33   #elif defined(PETSC_USE_REAL_DOUBLE)
34     #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_z_mv(operation, alpha, A, descr, x, beta, y)
35   #endif
36 #endif
37 
38 #endif
39