Przy założeniu o podziale procesorów na grupy podczas operacji dostępu do pamięci dzielonej konieczne staje się określenie, czy wszystkie procesory należące do danej grupy już zgłosiły odpowiednie zlecenie i czy w związku z tym można je wykonać. Rozproszenie pamięci dzielonej wymusza przeprowadzenie w tym celu dodatkowej komunikacji pomiędzy procesorami. Załóżmy, że pamięć jest podzielona między kilka maszyn fizycznych. Każda z nich po otrzymaniu zlecenia od jednego z procesorów wirtualnych musiałby powiadomić o tym pozostałe jednostki, a to oznacza kolejne komunikaty przesyłane siecią i dalsze opóźnienie. Dopiero po otrzymaniu komunikatu, że wszystkie procesory wirtualne zgłosiły się do operacji, mogłaby zakończyć operację. Nie można pominąć również faktu, że procesor wirtualny musiałby wyliczać, do której z jednostek wysyłać dane zlecenie. To powoduje kolejne opóźnienia. Scentralizowanie pamięci globalnej oraz połączenie jej z jednostką odpowiadającą za synchronizację redukuje dużą część komunikatów sieciowych. Może to co prawda doprowadzić do obniżenia wydajności niektórych operacji (głównie blokowych), jednak sytuacje, w których to następuje zdarzają się niezwykle rzadko i problem ten można zazwyczaj obejść.
Komunikacja między procesorami a pamięcią odbywa się z użyciem komunikacji sieciowej. Jest ona bardzo kosztowna. W skrajnych przypadkach może okazać się, że procesor większość swojego czasu spędza na oczekiwaniu na zakończenie komunikacji z pamięcią globalną. Dlatego też w takich programach wskazane staje się uruchomienie kilku ,,procesorów wirtualnych'' na jednej maszynie fizycznej, zbieranie ich zleceń a następnie łączne wysyłanie ich do pamięci. Dzięki temu średni czas komunikacji w przeliczeniu na jeden procesor wirtualny staje się zdecydowanie mniejszy (sumaryczny czas przesłania pojedynczych komunikatów jest większy od czasu przesłania jednego ale większego, jest to związane z protokołami transmisji sieciowej). Takie rozwiązanie daje ponadto możliwość uruchomienia programu na dużo większej liczbie procesorów wirtualnych. Jeśli mamy na przykład sieć złożoną z 12 maszyn fizycznych to w zależności od konfiguracji można na niej uruchomić nawet około procesorów wirtualnych (dotyczy standardowo skonfigurowanych maszyn działających pod systemem Linux na procesorach firmy Intel, przy innej konfiguracji może to być maksymalnie do około procesorów). Może to nie spowodować co prawda przyspieszenia wykonywanych obliczeń, ale daje możliwość testowania bardziej złożonych algorytmów.