I am wondering whether there is any advantage to running dynamical simulations with MPI, or is it only implemented for static simulations?
In other words, is submiting an MPI job with dynamics the same as submiting many separate serial jobs (i.e embarrassingly parallel job)?
Thanks
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hey! Thanks for posting your question, and sorry it's taken so long for me to get back to you.
The short answer to your question is yes.
There is a lot you can do without rewriting lower-level implementation(s) to leverage parallelism in your workloads. Take, for example, simulations A, B, C, D, E where A, B, D start in some ground state and C and E in another (different) ground state. Simulations A and C will calculate the ground state while the others are waiting. We can, therefore, improve our resource efficiency by computing statics. Somewhat obvious.
That said, we have native support for data parallelism (in the initial conditions) in our code.
The longer answer is that dynamic parallelism is high on our priority list for things to accomplish. There are many things one can do algorithmically and physically to take advantage of more sophisticated techniques in the mathematical framework and the physical model.
We're open source, though, and we love it when people contribute. If you have ideas, we can scope your technical implementation, here, and come up with a more concrete plan. If you'd like to help develop that is!
Last edit: Matthew Jones 2018-09-18
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I am wondering whether there is any advantage to running dynamical simulations with MPI, or is it only implemented for static simulations?
In other words, is submiting an MPI job with dynamics the same as submiting many separate serial jobs (i.e embarrassingly parallel job)?
Thanks
Hey! Thanks for posting your question, and sorry it's taken so long for me to get back to you.
The short answer to your question is yes.
There is a lot you can do without rewriting lower-level implementation(s) to leverage parallelism in your workloads. Take, for example, simulations A, B, C, D, E where A, B, D start in some ground state and C and E in another (different) ground state. Simulations A and C will calculate the ground state while the others are waiting. We can, therefore, improve our resource efficiency by computing statics. Somewhat obvious.
That said, we have native support for data parallelism (in the initial conditions) in our code.
The longer answer is that dynamic parallelism is high on our priority list for things to accomplish. There are many things one can do algorithmically and physically to take advantage of more sophisticated techniques in the mathematical framework and the physical model.
We're open source, though, and we love it when people contribute. If you have ideas, we can scope your technical implementation, here, and come up with a more concrete plan. If you'd like to help develop that is!
Last edit: Matthew Jones 2018-09-18