Additionally, in a shared address space, there are shared variables, which may result in the need for synchronization methods (locks/mutex), while there are no shared variables in the message passing model, and thus locks are not necessary. My favorite aspect of the data parallel model was its similarity to higher order functions in SML and other functional languages. If we think about ISPC in this way, it is actually quite neat.
jk2d
Just a recap: The use of locks is not necessary in the message passing model because each thread has its own private data stored in the private address space. Other threads can't mess with that data.
username
Even though we don't need locks in the message passing model, we need to be careful we don't change the value after sending it if it's an asynchronous send, and we don't immediately try reading the value on an asynchronous receive
Additionally, in a shared address space, there are shared variables, which may result in the need for synchronization methods (locks/mutex), while there are no shared variables in the message passing model, and thus locks are not necessary. My favorite aspect of the data parallel model was its similarity to higher order functions in SML and other functional languages. If we think about ISPC in this way, it is actually quite neat.
Just a recap: The use of locks is not necessary in the message passing model because each thread has its own private data stored in the private address space. Other threads can't mess with that data.
Even though we don't need locks in the message passing model, we need to be careful we don't change the value after sending it if it's an asynchronous send, and we don't immediately try reading the value on an asynchronous receive