They use a message-passing interface to pass information to and from any node in the cluster.
Programs can be either fine, or course grained.
A fine-grained program is o ne that passes a lot of information back and forth between machines in small bits. There is not one way that is universally better than any other. It only depends on the kind of program you are trying to write, and the data you have to work with. If what you are doing is going to be close to real time, then you would be forced to work with a fine-grained program. If, however, you are going to do more of a traditional program where you feed the computer information, then leave and come back a long time later, you would likely use course grained programming.