xref: /petsc/src/mat/impls/aij/seq/aijmkl/aijmkl.h (revision 4a2a386e7b5808d98dd84541432cdb5471934af8)
1*4a2a386eSRichard Tran Mills /*
2*4a2a386eSRichard Tran Mills   Wrappers for mkl_cspblas_ routines.
3*4a2a386eSRichard Tran Mills   A more elegant way to do this would be to use an approach like that used in petsclbaslapack_mangle.h,
4*4a2a386eSRichard Tran Mills   but since the MKL sparse BLAS routines are not going to be as widely used, and because
5*4a2a386eSRichard Tran Mills   we don't have to worry about Fortran name mangling, this seems OK for now.
6*4a2a386eSRichard Tran Mills */
7*4a2a386eSRichard Tran Mills 
8*4a2a386eSRichard Tran Mills #if !defined(PETSC_USE_COMPLEX)
9*4a2a386eSRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
10*4a2a386eSRichard Tran Mills #   define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_scsrgemv(transa,m,a,ia,ja,x,y)
11*4a2a386eSRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
12*4a2a386eSRichard Tran Mills #   define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_dcsrgemv(transa,m,a,ia,ja,x,y)
13*4a2a386eSRichard Tran Mills # endif
14*4a2a386eSRichard Tran Mills #else
15*4a2a386eSRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
16*4a2a386eSRichard Tran Mills #   define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_ccsrgemv(transa,m,a,ia,ja,x,y)
17*4a2a386eSRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
18*4a2a386eSRichard Tran Mills #   define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_zcsrgemv(transa,m,a,ia,ja,x,y)
19*4a2a386eSRichard Tran Mills # endif
20*4a2a386eSRichard Tran Mills #endif
21