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

Add example and / or support for multi-node simulation #356

Open
Tracked by #350
rkierulf opened this issue Apr 2, 2024 · 0 comments
Open
Tracked by #350

Add example and / or support for multi-node simulation #356

rkierulf opened this issue Apr 2, 2024 · 0 comments
Labels

Comments

@rkierulf
Copy link
Collaborator

rkierulf commented Apr 2, 2024

Feature Request

In some cases, it may be necessary to run MRI simulations across multiple compute nodes if the problem is too large to fit in memory for a single computer. Similar to #355, we could add an example dividing the phantom object into parts and using Distributed.jl to distribute the simulation across multiple workers. I think ClusterManagers.jl can wrap Distributed.jl to operate on different backends (for example, MPIClusterManagers.jl for an MPI backend).

If this isn't feasible for some reason, then support for multi-node computing would need to be added within the package. The approach used by DifferentialEquations.jl, LinearSolve.jl, and other packages is to use generic array operations for inner functions that work for distributed array types, which is more or less how KomaMRI's current GPU simulation works. So a possible approach is to convert all arrays that are part of the simulation structs to whatever distributed array type (DArray, MPIArray, etc.) we wanted to support using Adapt.jl and Functors.jl , although this is probably easier said than done.

@rkierulf rkierulf added the enhancement New feature or request label Apr 2, 2024
@cncastillo cncastillo added the GSoC label Apr 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants