Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Arthur_M_
Beginner
151 Views

Is pardiso_64 back-substitution parallelized?

Hello,

I've been running pardiso_64 on several problems. If I change MKL_NUM_THREADS I can quickly notice that the factorization elapsed time goes down.

However, the back-substitution doesn't seem to be affected by the number of threads. Given that I am solving, one right-hand-side at a time, many, many right-hand-side vectors, I would like the back-substitution to also be parallelized.

Do I need to do anything special to get speedup in this phase?

Thanks.

0 Kudos
10 Replies
151 Views

Hi, Did you change value of iparm(25)? With best regards, Alexander Kalinkin
Arthur_M_
Beginner
151 Views

It's been set to 0 which, according to the documentation, If iparm(25) = 0 (default value), then PARDISO uses a parallel algorithm for the solve step. Could it be there's a typo in the documentation and I really need to set it to a non-zero value instead? Thanks.
151 Views

Hi, No, you set iparm correctly. For some matrices parallel solving turn off because of specific internal routine, but such situation happens really rarely. Could you send to me your testcase to reproduce it? And could you provide me information about version of your MKL? With best regards, Alexander Kalinkin
Arthur_M_
Beginner
151 Views

Alexander, I first have to check whether I can share the matrix. It comes from a client. But even if I could I don't really know how to do it. I have about one million equations, and about 34M non-zeros in the matrix. Should I upload each of the arrays in the argument list to pardiso_64? rowIndex, columns, floating point values, integer parameters? Please confirm that this is how I should upload the matrix while I check whether I can share the matrix. Thanks.
Arthur_M_
Beginner
151 Views

Alexander, I forgot to mention: MKLROOT = /opt/intel/composerxe-2011.4.191/mkl
151 Views

Artur, Provide way to send me reproducer in private topic. With best regards, Alexander Kalinkin
Arthur_M_
Beginner
151 Views

Alexander, I am attaching a few files. They are all C binary files, written with fwrite, so you can use fread to read them all back again. The number of equations is 974337. Note that I'm using PARDISO_64, so all integers are 64-bit integers. Files are: iparm.dat: the array of parameters rowIndex.dat: the rowIndex argument. There are 974338 entries in the array (neq + 1). columns.dat: the number of entries equals the last argument in the rowIndex array values.dat: an array of double precision numbers. Same size as columns.dat. Please let me know if I'm missing something. Thanks. Arthur
Roman_A_Intel
Employee
151 Views

Hi Arthur based on your data I can see that you set iparm(5) to 1 that equally to use predefined permuted vector. In such case only serial version of solving step for 1 rhs available. With best regards, Roman
Arthur_M_
Beginner
151 Views

Roman, Thanks for the feedback. I have done all reordering outside of Pardiso. All I want is for the ordering array to be 1,2,3,4,...N. The only way I found to do this trivial thing is to set the flag as you mentioned and set the array to these trivial values. Is there a way in Pardiso to just set the natural ordering and still have a parallel back substitution? Thanks. Arthur
Roman_A_Intel
Employee
151 Views

Arthur, In case you use your own reordering and miss reordering phase in Pardiso, the parallel solving is not available. Regards, Roman
Reply