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