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

using pardiso

array123
Beginner
877 Views
hi,
i am new in using pardiso
can anyone tell me how to compile and run a c program using PARDISO in a multiple processor cluster. The architecture is INTEL 64 bit.
0 Kudos
21 Replies
Gennady_F_Intel
Moderator
814 Views
The current version of PARDISO is SMP version but not a version for Cluster.
--Gennady
0 Kudos
array123
Beginner
814 Views
By cluster i mean parallel processing. Can we do it by giving more no. of threads and if so then how to do it. Pardiso always reports no. of processors as 1
0 Kudos
Gennady_F_Intel
Moderator
814 Views
ok. I've got what you mean. You can just link your application with mkl's threaded libraries and then pardiso will automatically execute in parallel mode. Please look at the MKL Linker Adviser and you can find How to link your application with threaded versions of MKL.
What MKL version are you using? In the case of version > 10.2 you don't need to set the number of threads PARSDISO will be running explicitly ( iparm(3) is not used).
--Gennady
0 Kudos
array123
Beginner
814 Views
hi,
thanks for early reply. I am using mkl 10.2.5.035. I saw the link advisor, what i am not getting is what essential changes do i need to make in program to run it parallel, i mean values of iparm. And while compiling i should use mpicc *.c or gcc *.c to run pardiso in parallel mode.
Note: I want to run c program as serial code and inside c program use pardiso in parallel mode.
0 Kudos
Gennady_F_Intel
Moderator
814 Views
- it will depends on many factors, but for the first attempt, you can use the default values of iparm.
just set iparm(1) == 0 and items iparm(2)-iparm(64) are filled with default values.
- use gcc compiler
>>Note: I want to run c program as serial code and inside c program use pardiso in parallel mode.
- yes, if you will link the application with threaded MKL's libraries, then PARDISO will be running in parallel mode ( the number of threads == the nubmer of CPU core by the default)
may be I have to ask one more question: are you going to use another MKL's routines in your application?
--Gennady

0 Kudos
array123
Beginner
814 Views
hi,
i am not using any other MKL library.
I have a c program running in serial using gcc compiler. In this program to solve equation of type Ax=b i am calling PARDISO. Now i want to use it in such that internally PARDISO works on parallel way so as to reduce computational time.
0 Kudos
array123
Beginner
814 Views
i tried example problem pardiso_unsym_c.c setting value of iparm[0]=1 but it is giving segmentation fault.
0 Kudos
Gennady_F_Intel
Moderator
814 Views
pardiso_unsym_c.c from MKL's examples?
how did you build this exmple?
--Gennady
0 Kudos
array123
Beginner
814 Views
i did it using
gcc -O3 pardiso_unsym_c.c $MKLPATH/libmkl_solver_lp64.a -Wl,--start-group $MKLPATH/libmkl_intel_lp64.a $MKLPATH/libmkl_gnu_thread.a $MKLPATH/libmkl_core.a $MKLPATH/libmkl_blacs_openmpi_lp64.a -Wl,--end-group -fopenmp -lpthread -lm
0 Kudos
Gennady_F_Intel
Moderator
814 Views
Very intersting! Can you try again removing blacs lib:
gcc -O3 pardiso_unsym_c.c $MKLPATH/libmkl_solver_lp64.a -Wl,--start-group $MKLPATH/libmkl_intel_lp64.a $MKLPATH/libmkl_gnu_thread.a $MKLPATH/libmkl_core.a $MKLPATH/libmkl_blacs_openmpi_lp64.a -Wl,--end-group -fopenmp -lpthread -lm
0 Kudos
array123
Beginner
814 Views
even after removing blacs lib again error is segmentation fault
0 Kudos
Artem_V_Intel
Employee
814 Views
Hello,

I tried to reproduce your problem using command line you specified and doesn't meet any issues.

Could you please send the version of your gcc compiler? What processor do you use?

Best regards,
Artem
0 Kudos
array123
Beginner
814 Views
i tried with above command but again error is segmentation fault.
0 Kudos
array123
Beginner
814 Views
for using pardiso in parallel mode i was suggested that set iparm[0]=0 and pardiso will run in parallel mode. So in the example given in installation folder i.e. pardiso_unsym_c.c by setting iparm values. But i got segmentation fault
0 Kudos
Gennady_F_Intel
Moderator
814 Views
Artem asked you about gcc version and CPU type you are running.
We cannot see the problem on our side when we ran this example on Corei7 CPU type, gcc (4.1.2).
--Gennady
0 Kudos
array123
Beginner
814 Views
i am using gcc 4.4 and core 2 duo processor
0 Kudos
Artem_V_Intel
Employee
814 Views
Hi,

I tried to build unmodified pardiso_unsym_c.c using gcc 4.4 and command line you postedand doesn't obtain any issues again.

Could you please show your kernel version and full output of 'gcc -v' command? What Linux distribution do you use?

Best regards,
Artem
0 Kudos
array123
Beginner
814 Views
hi,
thanks Artem i tried the same thing and its working.
tc
0 Kudos
Gennady_F_Intel
Moderator
814 Views
tc,
nevertheless, the situation is not clear for me:what were conditions under which this sample produced segmentation fault?
How did you changepardiso_unsym_c.c?
--Gennady
0 Kudos
array123
Beginner
677 Views
hi,
in oreder to use all values as default i did iparm[0]=0 (in pardiso_unsym_c.c )and it was giving me segmentation fault.
0 Kudos
Reply