Does current MKL pardiso solver support MPI?

Does current MKL pardiso solver support MPI?

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'

14 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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.

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

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

Hi,

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

best,

Paweł J.

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.

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

Hi,

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

Thanks,

Alex

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.

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

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

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

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.

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today