xref: /petsc/src/mat/impls/aij/seq/aijmkl/aijmkl.h (revision df555b7191f89ca506518fb67cedc13d88de444b)
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
21a84739b8SRichard Tran Mills 
22a84739b8SRichard Tran Mills #if !defined(PETSC_USE_COMPLEX)
23a84739b8SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
24a84739b8SRichard 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)
25a84739b8SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
26a84739b8SRichard 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)
27a84739b8SRichard Tran Mills # endif
28a84739b8SRichard Tran Mills #else
29a84739b8SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
30a84739b8SRichard 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)
31a84739b8SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
32a84739b8SRichard 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)
33a84739b8SRichard Tran Mills # endif
34a84739b8SRichard Tran Mills #endif
35*df555b71SRichard Tran Mills 
36*df555b71SRichard Tran Mills #if !defined(PETSC_USE_COMPLEX)
37*df555b71SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
38*df555b71SRichard Tran Mills #   define mkl_sparse_x_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values) mkl_sparse_s_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values)
39*df555b71SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
40*df555b71SRichard Tran Mills #   define mkl_sparse_x_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values) mkl_sparse_d_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values)
41*df555b71SRichard Tran Mills # endif
42*df555b71SRichard Tran Mills #else
43*df555b71SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
44*df555b71SRichard Tran Mills #   define mkl_sparse_x_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values) mkl_sparse_c_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values)
45*df555b71SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
46*df555b71SRichard Tran Mills #   define mkl_sparse_x_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values) mkl_sparse_z_create_csr(A,indexing,rows,cols,rows_start,rows_end,col_indx,values)
47*df555b71SRichard Tran Mills # endif
48*df555b71SRichard Tran Mills #endif
49*df555b71SRichard Tran Mills 
50*df555b71SRichard Tran Mills #if !defined(PETSC_USE_COMPLEX)
51*df555b71SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
52*df555b71SRichard Tran Mills #   define mkl_sparse_x_mv(operation,alpha,A,descr,x,beta,y) mkl_sparse_s_mv(operation,alpha,A,descr,x,beta,y)
53*df555b71SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
54*df555b71SRichard Tran Mills #   define mkl_sparse_x_mv(operation,alpha,A,descr,x,beta,y) mkl_sparse_d_mv(operation,alpha,A,descr,x,beta,y)
55*df555b71SRichard Tran Mills # endif
56*df555b71SRichard Tran Mills #else
57*df555b71SRichard Tran Mills # if defined(PETSC_USE_REAL_SINGLE)
58*df555b71SRichard Tran Mills #   define mkl_sparse_x_mv(operation,alpha,A,descr,x,beta,y) mkl_sparse_c_mv(operation,alpha,A,descr,x,beta,y)
59*df555b71SRichard Tran Mills # elif defined(PETSC_USE_REAL_DOUBLE)
60*df555b71SRichard Tran Mills #   define mkl_sparse_x_mv(operation,alpha,A,descr,x,beta,y) mkl_sparse_z_mv(operation,alpha,A,descr,x,beta,y)
61*df555b71SRichard Tran Mills # endif
62*df555b71SRichard Tran Mills #endif
63