Miałem problemy z zaakceptowaniem złożonego poglądu teoretycznego na „efektywnie rozwiązany algorytm równoległy”, który podaje klasa NC :
NC klasa problemów, które mogą zostać rozwiązane przez algorytm równoległym w czasie o p ( n ) ∈ O ( n k ) procesory c , k ∈ N .
Możemy założyć PRAM .
Mój problem polega na tym, że wydaje się, że nie mówi to wiele o „prawdziwych” maszynach, czyli maszynach o skończonej liczbie procesorów. Teraz powiedziano mi, że „jest to znany”, że może „skutecznie” symulować algorytm procesora na p ∈ N procesorów.
Co oznacza tutaj „efektywnie”? Czy ten folklor, czy też istnieje rygorystyczne twierdzenie, które kwantyfikuje koszty ogólne spowodowane symulacją?
Obawiam się, że tak się dzieje, że mam problem z sekwencyjnym algorytmem , a także „wydajnym” algorytmem równoległym, który, gdy jest symulowany na procesorach p , zajmuje również czas O ( n k ) (co jest wszystkim tego można się spodziewać na tym poziomie szczegółowości analizy, jeśli algorytm sekwencyjny jest optymalny asymptotycznie). W tym przypadku, o ile nam wiadomo, nie ma przyspieszenia; w rzeczywistości symulowany algorytm równoległy może być wolniejszy niż algorytm sekwencyjny. To znaczy, tak naprawdę szukam stwierdzeń bardziej precyzyjnych niż O- bounds (lub deklaracji braku takich wyników).
Odpowiedzi:
Jeśli założymy, że liczba procesorów jest ograniczona stałą, to masz rację, że problem z NC nie znaczy wiele w praktyce. Ponieważ dowolny algorytm w pamięci PRAM z k procesorami it czasem równoległym t może być symulowany za pomocą jednoprocesorowej pamięci RAM w czasie O ( kt ), czas równoległy i czas sekwencyjny mogą różnić się tylko stałym współczynnikiem, jeżeli k jest stałą.
Jeśli jednak założysz, że możesz przygotować komputer z większą liczbą procesorów w miarę wzrostu wielkości wejściowej, problem z NC oznacza, że tak długo, jak możesz przygotować więcej procesorów, czas działania będzie „bardzo krótki”, a ściślej polilogarytmiczny w wielkości wejściowej. Jeśli uważasz, że to założenie jest nierealne, porównaj je z założeniem nieograniczonej pamięci: rzeczywiste komputery mają tylko skończoną ilość miejsca, ale w badaniu algorytmów i złożoności prawie zawsze zakładamy, że urządzenie obliczeniowe nie ma stałej górnej związany z przestrzenią. W praktyce oznacza to, że możemy przygotować komputer z większą pamięcią w miarę wzrostu wielkości wejściowej, i tak zwykle używamy komputerów w prawdziwym świecie. NC modeluje analogiczną sytuację w obliczeniach równoległych.
źródło
Ale czekaj, jest więcej.
W jednej z odpowiedzi zaobserwowano, że „W praktyce oznacza to, że możemy przygotować komputer z większą pamięcią w miarę wzrostu wielkości wejściowej, i tak zwykle używamy komputerów w prawdziwym świecie. NC modeluje analogiczną sytuację w obliczenia równoległe ".
Częściowo zgadzam się z tym punktem widzenia. Kupujemy nowy komputer równoległy z większą pamięcią, gdy starszy superkomputer jest wycofywany z eksploatacji również dlatego, że układy DRAM są tańsze w czasie i nieco równoważą komputer równoległy w odniesieniu do jego głównych komponentów (procesorów, pamięci, połączeń itp.).
Dlatego coraz ważniejsze jest projektowanie skalowalnych algorytmów równoległych pamięci, ponieważ są one praktyczne w przypadku dużych problemów.
źródło