Re:James Gosling Interview
by cowsandmilk on Thursday August 12, 2021 @04:34AM
(#28153664)
And while MPI was designed for multi nodes, I’ve found that in many cases where a code base supports both MPI and openMP (shared memory with multiple threads in one process), the MPI version runs faster because each single threaded process knows that it owns it’s memory and there’s no need for synchronization.
Being explicit about the data being passed around while defaulting to “not shared” has benefits for making use of all your cores more efficiently.
That Erlang forces some synchronization that other languages may not does not affect the ability to (with versions of Erlang since, what, 2007 or 2008?) make use of SMP for simultaneous execution of processes on separate cores or processors.
See also OpenMPI for an example of a distributed programming system that also can't share memory without copying it. Though in its case it was across physical nodes (and so the need to communicate was more obvious, they physically didn't share memory anyways). Still true parallelism.
[0] https://blog.golang.org/waza-talk