my fortran program is solving a linear matrix with 1000*1000 elements with pardiso (comes in attachment.)
the matrix is positive definite (mtype=2)
my questions :
is the solution mode sequential or parallel by default ? if default mode is sequential , can i parallelize that? what?
if not and default mode is parallel ,why the CPU usage is not 100% ?
thanks for taking the time and Apology for my poor english!!
The speed of your program will depend on the type of calculation that it is doing, the compiler options in effect, the specific choice of performance libraries used and the control parameters passed to Pardiso.
Parallelization, while doable and worthwhile, cannot be achieved trivially. See http://en.wikipedia.org/wiki/Amdahl%27s_law and, if that is too depressing, see http://en.wikipedia.org/wiki/Gustafson%27s_law .
Indiscriminate parallelization can make a program become a bottleneck to the computer on which it is run.
Have you timed your program to find out what fraction of the running time is used in setting up the problem for Pardiso and compared that with the solution time?
I also see that your program ignores the error codes returned by the Pardiso calls. If, for example, a reordering call fails and you move on to the next phase, the behavior of the program can be unpredictable and any benchmarking results would be meaningless.
Which OS, compiler and MKL versions do you use? What were the compiler options used?