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