# 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_ordered'
/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_end_reduce_nowait'
/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_float4_add'
/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 ompc_set_nested'
/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_for_static_init_4'
/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_dispatch_next_8'
/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_end_ordered'
/opt/intel/composer_xe_2011_sp1.8.273/mkl/lib/intel64/libmkl_intel_thread.so: undefined reference to __kmpc_atomic_fixed8_add'

14 posts / 0 new
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.

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.

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.

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