next up previous contents
Next: Podsumowanie Up: Eksperymenty Previous: Środowisko pracy   Spis rzeczy

Wnioski

Po przeanalizowaniu powyższych testów jako pierwszy nasuwa się wniosek, że efektywne wykorzystanie niniejszej implementacji maszyny PRAM w istotny sposób zależy od rozpatrywanego problemu. Jeśli uruchamiany algorytm w dużym stopniu używa pamięci dzielonej może okazać się, że narzut systemowy związany z komunikacją zniweluje zysk związany z uruchamianiem programu na wielu rzeczywistych procesorach. W niektórych przypadkach może okazać się, że taki algorytm będzie działał znacząco wolniej od podobnego algorytmu sekwencyjnego uruchomionego na pojedynczym procesorze.

Fakt scentralizowania pamięci dzielonej wydaje się być w niektórych przypadkach istotnym ograniczeniem. Należy pamiętać jednak o ograniczeniach związanych z przyjętym modelem synchronizacji. Rozproszenie pamięci mogłoby przynieść poprawę wydajności jedynie w przypadku algorytmów przesyłających duże ilości danych do i z pamięci dzielonej podczas jednej operacji. Jednowątkowość serwera staje się w tym przypadku wąskim gardłem. Zdecydowana większość algorytmów działa jednak w zgoła odmienny sposób. Blokowe operacje mogą natomiast w istotny sposób przyspieszyć działanie algorytmów nawet kosztem zwiększenia pamięci podręcznej procesora wirtualnego (można przecież wykorzystać większą liczbę maszyn fizycznych i ich pamięć operacyjną).

Jeśli problem daje się podzielić na podproblemy mniejszego rozmiaru, do rozwiązania których nie jest wymagana intensywna komunikacja z pamięcią dzieloną, to zysk może być znaczny. Odpowiednio zapisując algorytm można do minimum zredukować operacje synchronizacji procesorów oraz dostęp do pamięci podręcznej. Właśnie te operacje powodują największe spowolnienie działania programu.

Należy pamiętać o optymalnym doborze wielkości strony pamięci -- w przypadku ,,losowych'' operacji na pojedynczych komórkach zmniejszenie wielkości strony niesie za sobą przyspieszenie operacji odczytu. Ma to znaczeniu nie tylko w przypadku algorytmów w dużym stopniu korzystających z pamięci dzielonej. Ponieważ rozmiar strony pamięci wpływa również w dość istotny sposób na operacje blokowe, jego właściwy dobór jest także istotny przy programach odczytujących większe fragmenty pamięci i dalej używających danych lokalnych. W tym przypadku efekt prędkościowy jest jednak odwrotny -- zwiększenie wielkości strony powoduje przyspieszenie operacji odczytu. Należy więc dobrać optymalną wielkość strony w zależności od algorytmu i sposobu jego implementacji.


next up previous contents
Next: Podsumowanie Up: Eksperymenty Previous: Środowisko pracy   Spis rzeczy
Łukasz Maśko
2000-04-17