The working model of shared memory architectures makes communication and synchronization of parallel algorithms much simpler to implement and debug. Virtually any UNIX multithreaded application can be made to run faster on a shared memory multiprocessor machine. In fact, the programming library for shared memory architectures is essentially the same as the ones found in standard multithreaded operating systems. As a down side, algorithms developed for this architecture are very hard to port to distributed memory architectures.
In the methods described below, the volume dataset is accessed by using the common address space shared by processors. The common address space is what makes programming in shared memory MIMD so simple. And while programming in these machines is very simple, the hardware design of the memory system is usually complex, because of the bottlenecks imposed by the speed of DRAMs and bandwidth of the memory bus. One common way to easy the burden of the memory system is to fine-tune the algorithms to avoid hot spots in the memory. This is used to decrease contention and to avoid the memory bottleneck.