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

Does current MKL pardiso solver support MPI?

roy_atlans
Beginner
983 Views

I am using Pardiso on one code for my program. it runs fine. Now as I would like to extend my code to distributed version(MPI), I wonder if pardiso supprots MPI. My MKL viersion is 10.3.6.

Thanks!

The errors while linking .o files I just got  are(I use mpif90):

/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_ok_to_fork'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_end_single'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_ordered'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_for_static_init_8'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_barrier'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_next_4'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_end_reduce_nowait'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_critical'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_fini_8'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_atomic_cmplx8_add'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_atomic_float4_add'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_serialized_parallel'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_end_critical'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_init_8'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `ompc_set_nested'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_fini_4'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_push_num_threads'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_reduce_nowait'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_for_static_init_4'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_end_serialized_parallel'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_flush'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_single'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_next_8'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_atomic_float8_add'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_dispatch_init_4'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_global_thread_num'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_end_ordered'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_fork_call'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_atomic_fixed8_add'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_for_static_fini'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to `__kmpc_atomic_cmplx4_add'

0 Kudos
13 Replies
asd__asdqwe
Beginner
983 Views

Hello,

Pardiso works fine within a MPI environment, however it can't be used as a distributed solver (for that, you might want to check http://www.pardiso-project.org/). Concerning your errors, do you link against libiomp5 and activate OpenMP support (-openmp -liomp5) ? If you are using GNU compilers, that might be something like -fopenmp -lgomp.

0 Kudos
roy_atlans
Beginner
983 Views

I am using mpif90 for the linking step, so the last linking command is some thing like:

mpif90 1.o 2.o 3.o -L$MKL_HOME/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lpthread -liomp5 -lm -o run.exe
I got the same error for -openmp -lgomp combination;

I got the following error for -openmp -liomp5 combination:
/usr/bin/ld: cannot find -liomp5

It seems to me that the compiler does not know the option -fopenmp

0 Kudos
Gennady_F_Intel
Moderator
983 Views

Actually, there is some research version of pardiso for distributed version. Can you elaborate with us some more details about the task you are solving? In the case if some restricted info - you can use the private message for that.  Probably I can give you this package for evaluation. 

--Gennady

0 Kudos
Paweł_J_
Beginner
983 Views

Hi,

I'm intrested in pardiso for distributed version. Is there any way to get this package for evaluation?

best,

Paweł J.

0 Kudos
Gennady_F_Intel
Moderator
983 Views

yes, we are going to add this functionality to the 11.2 beta version. This beta would be released soon. the information about this release would be published on mkl forum.

0 Kudos
Zhanghong_T_
Novice
983 Views

Dear Gennady,

Does 11.3 added this new feature? Is there any reference to show how to use the PARDISO as distributed solver?

Thanks,

Tang Laoya

0 Kudos
Alexander_K_Intel2
983 Views

Hi,

Sure, use this link https://software.intel.com/en-us/articles/intel-math-kernel-library-parallel-direct-sparse-solver-for-clusters in which we describe how to switch from pardiso to  cluster_sparse_solver

Thanks,

Alex

0 Kudos
Gennady_F_Intel
Moderator
983 Views

moreover, since version 11.2 when we introduce this solver, now in the next version 11.3 u2 we have many of improvements. Please check this solver and let us know the feedback.

0 Kudos
Zhanghong_T_
Novice
983 Views

That's great! Thank you very much for your kindly reply.

0 Kudos
Zhanghong_T_
Novice
983 Views

Dear Gennady and Alex,

I am trying to test the example cl_solver_sym_f90.f90 in windows 7 64bit + VS2013 + intel Fortran 2016, and set the include path to:

C:\Program Files (x86)\Intel\MPI\4.1.3.047\em64t\include;C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016\windows\mkl\include

The following errors displayed when build the project:

error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MKL_CLUSTER_SPARSE_SOLVER]
error #6457: This derived type name has not been declared.   [MKL_CLUSTER_SPARSE_SOLVER_HANDLE]
error #6404: This name does not have a type, and must have an explicit type.   [PT]
error #6458: This name must be the name of a variable with a derived type (structure type).   [PT]
error #6830: The argument of the ALLOCATED intrinsic cannot be a constant or an expression.   [PT]

Is there anything I have missed?

Thanks

0 Kudos
Zhanghong_T_
Novice
983 Views

I used .f source file to link the project. After I changed the file name to .f90, the build is successed. Why the .f file can't work?

Thanks

0 Kudos
TimP
Honored Contributor III
983 Views

Changing a source file name from .f to .f90 changes default source format setting from f77 (fixed form column dependent) to f90 free form, nothing more.  The same setting applies to include files.

0 Kudos
Zhanghong_T_
Novice
983 Views

Oh, I see. Do you mean that I should include 'mkl_cluster_sparse_solver.f77' for .f or .for file and include 'mkl_cluster_sparse_solver.f90' for .f90 file?

Thanks

0 Kudos
Reply