Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix incorrect call to dist_psymbtonum when fact is SamePattern_SameRowPerm #143

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

jamtrott
Copy link
Contributor

Hi Sherry,

I found this issue while testing a combination of reusing the row and column permutations (SamePattern_SameRowPerm) and using parallel symbolic factorisation. This would fail with the assertion:

ERROR: call of dist_psymbtonum with fact equals SamePattern_SameRowPerm.

I also found the following lines in pdgssvx() near the call to ddist_psymbtonum():

	//if (parSymbFact == NO || ???? Fact == SamePattern_SameRowPerm) {
	if ( parSymbFact == NO ) {

Everything seems to work fine after I uncommented the top line and removed the bottom one.

It would be great if you could confirm if you think this is indeed a correct fix.

Thanks!

jamtrott added 2 commits May 22, 2023 22:44
…risation

This adds the same options that are available in pddrive, so they can
be tested with the SamePattern and SamePattern_SameRowPerm options.
…Perm

In cases where parallel symbolic factorisation with reusing the row
and column permutations (i.e., Fact is SamePattern_SameRowPerm), the
function ddist_psymbtonum() is incorrectly called and SuperLU_dist
exits with the following error message:

  ERROR: call of dist_psymbtonum with fact equals SamePattern_SameRowPerm.

This is already noted in the comments to ddist_psymbtonum():

  "This routine should not be called for this case, an error is
  generated.  Instead, pddistribute routine should be called."

A valid fix seems to be to uncomment a line in the calling function,
pdgssvx(), which handles the case when Fact is equal to
SamePattern_SameRowPerm by instead calling pddistribute(), as
suggested in the above-mentioned comment.

The error can be easily reproduced with the following command:

  mpirun -np 2 pddrive3 -r 1 -c 2 -p 0 -q 5 -s 1 EXAMPLE/big.rua
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant