1 #pragma once 2 3 #define MKL_Complex16 PetscScalar 4 #define MKL_Complex8 PetscScalar 5 #define PetscCallMKL(stat) \ 6 do { \ 7 PetscCheck(stat == SPARSE_STATUS_SUCCESS, PETSC_COMM_SELF, PETSC_ERR_LIB, "Error in MKL sparse matrix call"); \ 8 } while (0) 9 #if !defined(PETSC_USE_COMPLEX) 10 #if defined(PETSC_USE_REAL_SINGLE) 11 #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) 12 #elif defined(PETSC_USE_REAL_DOUBLE) 13 #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) 14 #endif 15 #else 16 #if defined(PETSC_USE_REAL_SINGLE) 17 #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) 18 #elif defined(PETSC_USE_REAL_DOUBLE) 19 #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) 20 #endif 21 #endif 22 23 #if !defined(PETSC_USE_COMPLEX) 24 #if defined(PETSC_USE_REAL_SINGLE) 25 #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_s_mv(operation, alpha, A, descr, x, beta, y) 26 #elif defined(PETSC_USE_REAL_DOUBLE) 27 #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_d_mv(operation, alpha, A, descr, x, beta, y) 28 #endif 29 #else 30 #if defined(PETSC_USE_REAL_SINGLE) 31 #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_c_mv(operation, alpha, A, descr, x, beta, y) 32 #elif defined(PETSC_USE_REAL_DOUBLE) 33 #define mkl_sparse_x_mv(operation, alpha, A, descr, x, beta, y) mkl_sparse_z_mv(operation, alpha, A, descr, x, beta, y) 34 #endif 35 #endif 36