Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
Intel Customer Support will be observing the Martin Luther King holiday on Monday, Jan. 17, and will return on Tues. Jan. 18.
For the latest information on Intel’s response to the Log4j/Log4Shell vulnerability, please see Intel-SA-00646

Regarding cluster_sparse_solver

Mehdi_M_1
Beginner
186 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
186 Views

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

Alexander_K_Intel2
186 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

Mehdi_M_1
Beginner
186 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
Mehdi_M_1
Beginner
186 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

Reply