14a2a386eSRichard Tran Mills /* 24a2a386eSRichard Tran Mills Wrappers for mkl_cspblas_ routines. 34a2a386eSRichard Tran Mills A more elegant way to do this would be to use an approach like that used in petsclbaslapack_mangle.h, 44a2a386eSRichard Tran Mills but since the MKL sparse BLAS routines are not going to be as widely used, and because 54a2a386eSRichard Tran Mills we don't have to worry about Fortran name mangling, this seems OK for now. 64a2a386eSRichard Tran Mills */ 74a2a386eSRichard Tran Mills 84a2a386eSRichard Tran Mills #if !defined(PETSC_USE_COMPLEX) 94a2a386eSRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE) 104a2a386eSRichard Tran Mills # define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_scsrgemv(transa,m,a,ia,ja,x,y) 114a2a386eSRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE) 124a2a386eSRichard Tran Mills # define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_dcsrgemv(transa,m,a,ia,ja,x,y) 134a2a386eSRichard Tran Mills # endif 144a2a386eSRichard Tran Mills #else 154a2a386eSRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE) 164a2a386eSRichard Tran Mills # define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_ccsrgemv(transa,m,a,ia,ja,x,y) 174a2a386eSRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE) 184a2a386eSRichard Tran Mills # define mkl_cspblas_xcsrgemv(transa,m,a,ia,ja,x,y) mkl_cspblas_zcsrgemv(transa,m,a,ia,ja,x,y) 194a2a386eSRichard Tran Mills # endif 204a2a386eSRichard Tran Mills #endif 21*a84739b8SRichard Tran Mills 22*a84739b8SRichard Tran Mills #if !defined(PETSC_USE_COMPLEX) 23*a84739b8SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE) 24*a84739b8SRichard Tran Mills # define mkl_xcsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) mkl_scsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) 25*a84739b8SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE) 26*a84739b8SRichard Tran Mills # define mkl_xcsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) mkl_dcsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) 27*a84739b8SRichard Tran Mills # endif 28*a84739b8SRichard Tran Mills #else 29*a84739b8SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE) 30*a84739b8SRichard Tran Mills # define mkl_xcsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) mkl_ccsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) 31*a84739b8SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE) 32*a84739b8SRichard Tran Mills # define mkl_xcsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) mkl_zcsrmv(transa,m,k,alpha,matdescra,val,indx,pntrb,pntre,x,beta,y) 33*a84739b8SRichard Tran Mills # endif 34*a84739b8SRichard Tran Mills #endif 35