链接已复制
21 回复数
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
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.
- 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
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.
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
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
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
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
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
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
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