Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Regarding cluster_sparse_solver

Mehdi_M_1
Beginner
439 Views

I am Mehdi and this is my first time using this forum.

I need to used cluster_sparse_solver in my FORTRAN Finite Element program. Because the degree of freedom of my system is very high (1^6), the number of nonzero members in the stiffness matrix (A in Ax=B) will be also very high in a way that I can not store the number of non-zero in an integer  number with type 4 and I must use integer(8). Therefore, the parameter ia (row indexing of sparse matrix) must be integer(8). 

In this situation, how I should compile my program. I have tried to use 4 bit and 8 bit libraries, during compiling of my program and none of them are working. Shall I use all of the integers in my program with type integer(8)? When ia in integer(8) and ja is integer(4), is it possible to compile the program?

Please help me. I can provide any more information you may need.

Bests

Mehdi

0 Kudos
4 Replies
James_S
Employee
439 Views

Hi Mehdi, your issue is related to Intel Math Kernel Library, I will transfer your issue to the MKL forum. Thanks.

0 Kudos
Alexander_K_Intel2
439 Views

Hi Mehdi,

Just use MKL_INT instead of int type for whole program - it allow you to switch between 4 and 8 bytes integer using compiling flag -i8 during compiling and link _lp64 or _ilp64 libraries corresponded. Correct link line can be found here:

https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/

As about pardiso parameters - ia and ja need to be set to same MKL_INT type. However, in case of lp64 library you can use 8byte input parameters in direct solver using pardiso_64 interface. Details here:

https://software.intel.com/en-us/mkl-developer-reference-fortran-pardiso-64

Thanks,

Alex

0 Kudos
Mehdi_M_1
Beginner
439 Views

Hi Alex,

I do not know how to use MKL_INT in my FORTRAN program. Can you please explain me. As far as I found on the web, MKL_INT is used for C++ compilers not FORTRAN.

I have also a question regarding cluster_sparse_solver_64:Should I define ia and ja as well as all of the parameters using integer(8)? by that I mean: 

TYPE(MKL_CLUSTER_SPARSE_SOLVER_HANDLE)  :: PT(64)

INTEGER(8)                              :: MAXFCT, MNUM, MTYPE, PHASE, N , MSGLVL

INTEGER(8)                              :: PERM(1), NRHS, ERROR, IPARM(64) , COMM
 
Thanks 
Mehdi
0 Kudos
Mehdi_M_1
Beginner
439 Views

Hi Alex,

I do not know how to use MKL_INT in my FORTRAN program. Can you please explain me. As far as I found on the web, MKL_INT is used for C++ compilers not FORTRAN.

I have also a question regarding cluster_sparse_solver_64:Should I define ia and ja as well as all of the parameters using integer(8)? by that I mean: 

TYPE(MKL_CLUSTER_SPARSE_SOLVER_HANDLE)  :: PT(64)

INTEGER(8)                              :: MAXFCT, MNUM, MTYPE, PHASE, N , MSGLVL

INTEGER(8)                              :: PERM(1), NRHS, ERROR, IPARM(64) , COMM

 

Thanks 

Mehdi

Hi Mehdi,

Just use MKL_INT instead of int type for whole program - it allow you to switch between 4 and 8 bytes integer using compiling flag -i8 during compiling and link _lp64 or _ilp64 libraries corresponded. Correct link line can be found here:

https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/

As about pardiso parameters - ia and ja need to be set to same MKL_INT type. However, in case of lp64 library you can use 8byte input parameters in direct solver using pardiso_64 interface. Details here:

https://software.intel.com/en-us/mkl-developer-reference-fortran-pardiso-64

Thanks,

Alex

0 Kudos
Reply