- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm having serious problems with running Pardiso in Parallel mode, as in, it just won't! Could someone please shed some light.
Trying to iteratively diagonalize a sparse matrix using ARPACK and Pardiso. I used to use the regular Pardiso library that is downloadable from the pardiso project website, but their liscensing set-up is a real pain when I want to use multiple computers.
Compilers:
-ifort 11.1_072
-mkl (bundled with the latest fortran compiler)
I did a standard install with these.
System:
-AMD 6 core Phenom
-8GB (4x2) DDR3 1333MHz memory
Pardiso options used:
INTEGER :: mkl_get_max_threads
EXTERNAL :: mkl_get_max_threads
IIparm(1)=1 !No solver default
IIparm(2)=2 !Fill-in reordering from METIS
IIparm(3)=mkl_get_max_threads() !Number of processors mkl_get_max_threads()
IIparm(4)=0 !No iterative-direct algorithm
IIparm(5)=0 !No user fill-in reducing permutation
IIparm(6)=0 !=0 solution on the first n components of x
IIparm(8)=9 !Number of iterative refinement steps
IIparm(10)=13 !Perturb the pivot elements with 1E-13
IIparm(11)=1 !Use non-symetric permutation and scaling MPS
IIparm(13)=1 ! maximum weighted matching algorithm is switched-on (default for non-symmetric)
IIparm(14)=0 !OUTPUT: number of perturbed pivots
IIparm(18)=-1 !OUTPUT: number of non-zeros in the factor LU
IIparm(19)=-1 !OUTPUT: MFlops for LU factorizations
IIparm(21)=1
IIparm(27)=1
NOTE: Not using OOC IIparm(60)>1
Linking libraries when compling:
-lblas -llapack -L ARPACK -larpack_x86_64 -L/opt/intel/Compiler/11.1/072/mkl/lib/em64t/ -lguide -lmkl_intel_lp64 -liomp5 -lmkl_sequential -lpthread -lmkl_core -L JADAMILU_2.0/lib/INT64Nifort -ljadamilu
When I run, with these options the pardiso information just tells me that the #processors used =1. I can't seem to get pardiso to run using multiple processors.
I'm really fed-up with trying to link to alternate libraries and trying different options. It's just confusing using pardiso when bundles examples appear to be wrong. For instants, the example found at the following link:
http://www.intel.com/software/products/mkl/docs/webhelp/appendices/mkl_appC_SULS.html
It calls the following:
include 'mkl_pardiso.f77' (I have no idea why!)
Trying to iteratively diagonalize a sparse matrix using ARPACK and Pardiso. I used to use the regular Pardiso library that is downloadable from the pardiso project website, but their liscensing set-up is a real pain when I want to use multiple computers.
Compilers:
-ifort 11.1_072
-mkl (bundled with the latest fortran compiler)
I did a standard install with these.
System:
-AMD 6 core Phenom
-8GB (4x2) DDR3 1333MHz memory
Pardiso options used:
INTEGER :: mkl_get_max_threads
EXTERNAL :: mkl_get_max_threads
IIparm(1)=1 !No solver default
IIparm(2)=2 !Fill-in reordering from METIS
IIparm(3)=mkl_get_max_threads() !Number of processors mkl_get_max_threads()
IIparm(4)=0 !No iterative-direct algorithm
IIparm(5)=0 !No user fill-in reducing permutation
IIparm(6)=0 !=0 solution on the first n components of x
IIparm(8)=9 !Number of iterative refinement steps
IIparm(10)=13 !Perturb the pivot elements with 1E-13
IIparm(11)=1 !Use non-symetric permutation and scaling MPS
IIparm(13)=1 ! maximum weighted matching algorithm is switched-on (default for non-symmetric)
IIparm(14)=0 !OUTPUT: number of perturbed pivots
IIparm(18)=-1 !OUTPUT: number of non-zeros in the factor LU
IIparm(19)=-1 !OUTPUT: MFlops for LU factorizations
IIparm(21)=1
IIparm(27)=1
NOTE: Not using OOC IIparm(60)>1
Linking libraries when compling:
-lblas -llapack -L ARPACK -larpack_x86_64 -L/opt/intel/Compiler/11.1/072/mkl/lib/em64t/ -lguide -lmkl_intel_lp64 -liomp5 -lmkl_sequential -lpthread -lmkl_core -L JADAMILU_2.0/lib/INT64Nifort -ljadamilu
When I run, with these options the pardiso information just tells me that the #processors used =1. I can't seem to get pardiso to run using multiple processors.
I'm really fed-up with trying to link to alternate libraries and trying different options. It's just confusing using pardiso when bundles examples appear to be wrong. For instants, the example found at the following link:
http://www.intel.com/software/products/mkl/docs/webhelp/appendices/mkl_appC_SULS.html
It calls the following:
integer omp_get_max_threadsThe example bundled with the mkl library, file `pardiso_unsym_f.f' has the following include file:
external omp_get_max_threads
yet uses (what appears to be conflicting to me):iparm(3) = mkl_get_max_threads()
include 'mkl_pardiso.f77' (I have no idea why!)
Link Copied
7 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
There is used sequential MKL library on yourlinking line therefore you will not get parallization.
Alsowhy do you use-lguide together with -liomp5 and in strange places before MKL libraries?
Please visit MKL Link line Advisorat the top of MKL Forum to correctly constract needed link line.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Seb,
some more comments on this topic:
1) as Victor mentioned before, your linking line
-lguide -lmkl_intel_lp64 -liomp5 -lmkl_sequential -lpthread -lmkl_core -L
have to be different.
2)iparm(3)-
currently is not used inifort 11.1_072 ( MKL 10.2 Update 5). See here the details.
3) what is the task size you are solving? Pardiso will not execute in parallel in the case of small inputs...
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Victor,
I've used the linkline advisor and have linked in the following way now:
LIBFLAGS= -lblas -llapack -L ARPACK -larpack_x86_64 -L JADAMILU_2.0/lib/INT64Nifort -ljadamilu -L /opt/intel/Compiler/11.1/072/mkl/lib/em64t/ /opt/intel/Compiler/11.1/072/mkl/lib/em64t/libmkl_solver_ilp64.a -Wl,--start-group -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -openmp -lpthread
The program now compiles fine but on the very first call to pardiso I get a segmentation fault. I've never had this before and previous results in the sequential version have been fine:
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Are any of the libraries I need missing? What could cause such a problem?
I've used the linkline advisor and have linked in the following way now:
LIBFLAGS= -lblas -llapack -L ARPACK -larpack_x86_64 -L JADAMILU_2.0/lib/INT64Nifort -ljadamilu -L /opt/intel/Compiler/11.1/072/mkl/lib/em64t/ /opt/intel/Compiler/11.1/072/mkl/lib/em64t/libmkl_solver_ilp64.a -Wl,--start-group -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -openmp -lpthread
The program now compiles fine but on the very first call to pardiso I get a segmentation fault. I've never had this before and previous results in the sequential version have been fine:
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Are any of the libraries I need missing? What could cause such a problem?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Could you please send small test-case and makefile to reproduce the problem?
However, maybe it's related to ILP64/LP64 model.
Please take a look at the following thread
http://software.intel.com/en-us/forums/showthread.php?t=76101
andmore details are in MKL docs. See for example:
http://www.intel.com/software/products/mkl/docs/linux/WebHelp/mkl_ug_structure/support_for_ilp64_programming.htm
Could you please send small test-case and makefile to reproduce the problem?
However, maybe it's related to ILP64/LP64 model.
Please take a look at the following thread
http://software.intel.com/en-us/forums/showthread.php?t=76101
andmore details are in MKL docs. See for example:
http://www.intel.com/software/products/mkl/docs/linux/WebHelp/mkl_ug_structure/support_for_ilp64_programming.htm
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Gennady, I didn't realize that iparm(3) was no longer in use.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This worked a treat. No more segmentation faults and using all 6 processors.
There are many long explanations for the difference between ilp/lp, did it just cause a segmentation fault for ilp because I've defined my own 'integer' precision?
There are many long explanations for the difference between ilp/lp, did it just cause a segmentation fault for ilp because I've defined my own 'integer' precision?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yes, there are many seg. faults happens for this reason.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page