Is pardiso_64 back-substitution parallelized?

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.

11 posts / novo 0
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.
imagem de Alexander Kalinkin (Intel)

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

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.

imagem de Alexander Kalinkin (Intel)

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

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.

Alexander,

I forgot to mention:

MKLROOT = /opt/intel/composerxe-2011.4.191/mkl

imagem de Alexander Kalinkin (Intel)

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

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

Anexos: 

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

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

Arthur,

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

Regards,
Roman

Faça login para deixar um comentário.