[Python-ideas] solving multi-core Python

Sturla Molden sturla.molden at gmail.com
Thu Jun 25 02:45:24 CEST 2015


On 25/06/15 02:09, Devin Jeanpierre wrote:

> Although, threads are better for memory
> usage, by defaulting to sharing even on write. (Good for memory, maybe
> not so good for bug-freedom...)

I am not sure. Code written to use OpenMP tend to have less bugs than 
code written to use MPI. This suggests that shared memory is easier than 
message-passing, which is contrary to the common belief.

My own experience with OpenMP and MPI suggests it is easier to create a 
deadlock with message-passing than accidentally have threads access the 
same address concurrently. This is also what I hear from other people 
who writes code for scientific computing.

I see a lot of claims that message-passing is supposed to be "safer" 
than a shared memory model, but that is not what we see with OpenMP and 
MPI. With MPI, the programmer must make sure that the send and receive 
commands are passed in the right order at the right time, in each 
process. This leaves plenty of room for messing up or creating 
unmaintainable spaghetti code, particularly in a complex algorithm. It 
is easier to make sure all shared objects are protected with mutexes 
than to make sure a spaghetti of send and receive messages are in 
correct order.

It might be that Python's queue method of passing messages leave less 
room for deadlocking than the socket-like MPI_send and MPI_recv 
functions. But I think message-passing are sometimes overrated as "the 
safe solution" to multi-core programming (cf. Go and Erlang).


Sturla



More information about the Python-ideas mailing list