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

Trouble porting model from 1 to multiple mpi ranks #664

Open
gduclaux opened this issue Jul 3, 2023 · 3 comments
Open

Trouble porting model from 1 to multiple mpi ranks #664

gduclaux opened this issue Jul 3, 2023 · 3 comments

Comments

@gduclaux
Copy link

gduclaux commented Jul 3, 2023

G'day UW folks!

I have an issue with porting an UW model from serial to parallel and I was wondering if you could kindly give me a hand?
I’ve setup a Tapponnier-like indenter model that runs fine in Docker directly from the notebook but rises error in the model.solve() in parallel (I tried running on 2 and 4 mpi ranks in Docker terminal).

MontagePlasticStrain

Hope one of you can point me the issue...

Cheers

Guillaume

Tapponnier_extrusionAsia-final.ipynb.zip

@julesghub
Copy link
Member

Hi Gilly,

Good to hear from you. Nice model!
The problem is to do with the multigrid solver and the indenter (internal BC). I'm working on a fix now. To get around the problem you can use the mumps solver. i.e.

Model.solver.set_inner_method("mumps")

For 2D models this works well and gets around the problem. For 3D solves it DOESN"T work well because mumps is a direct solve method that consumes far too much memory.
Let me know how it goes.

cheers,
Jules

@gduclaux
Copy link
Author

Thanks Jules! Sorry for the delayed response. I'll give it a go and let you know if I have any issue with this workaround.

Cheers,
Gilly

@gduclaux
Copy link
Author

Quick feedback on the workaround you pointed out:

  • the model starts on multiple ranks with mumps (Model.solver.set_inner_method("mumps")) but it takes forever to converge... I tried adding some penalty too, but it doesn't do any good.
  • following your original suggestion Jules I did play around a bit and found that using superludist for the inner solves (Model.solver.set_inner_method("superludist")) is doing a better job with this setup.

Thanks again for your help Jules!

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

No branches or pull requests

2 participants