Zmniejszenie złożoności dzięki równoległości

10

Czy jest możliwe (ukośnik, czy możesz podać przykład) zmniejszenie złożoności obliczeniowej problemu za pomocą algorytmu równoległego, który nie wymaga wielu procesorów w stosunku do wielkości wejściowej?

Nick Larsen
źródło
Czy mógłbyś trochę wyjaśnić swoje pytanie? Trywialnie stała liczba procesorów -> w najlepszym wypadku możesz poprawić czas działania o stały współczynnik. Chyba nie o to ci chodziło?
Jukka Suomela
„Nie dotyczy wielkości wejściowej”. Co dokładnie przez to rozumiesz? O (1)?
Aryabhata
Mam na myśli procesory O (1). @Jukka: o to mi chodzi, czy złożoność obliczeniową można zmniejszyć tylko poprzez dodanie liczby procesorów w stosunku do wielkości wejściowej?
Nick Larsen

Odpowiedzi:

12

Jeśli chodzi o procesory O (1), to nie, złożoność obliczeń nie może zostać zmniejszona.

Po prostu dopasuj pracę wykonaną przez każdy procesor i zrób to na jednym. Jeśli martwisz się synchronizacją, jeden procesor może to łatwo emulować.

Aryabhata
źródło
Dziękuję za szybką odpowiedź. Bez tworzenia kolejnego pytania dla czegoś tak blisko związanego, czy można zmniejszyć złożoność obliczeniową za pomocą szeregu procesorów w stosunku do czegoś innego niż wielkość wejściowa?
Nick Larsen
2
@Nick: Coś innego niż rozmiar wejściowy to O (1) :-)
Aryabhata
Dzięki, miałem problem z myśleniem o czymkolwiek innym, ale chciałem się upewnić.
Nick Larsen
WRT, czy można osiągnąć przyspieszenie za pomocą wielu procesorów, które rosną z pewną ilością inną niż wielkość wejściowa, nie jestem pewien, czy odpowiedź brzmi „nie”. Istnieją problemy, których złożoność rośnie wraz z pewnym parametrem, który jest inny (choć oczywiście nie niezależny) od wielkości wejściowej. Co zrobić, jeśli dla jakiegoś problemu z grafem pozwoliłem na przykład na kilka procesorów związanych z szerokością drzewa wykresu?
Aaron Roth,
@Aaron: Jeśli dozwolona liczba procesorów jest w jakiś sposób powiązana z danymi wejściowymi, to tak, nie możemy na pewno powiedzieć „nie”. Oczywiście, o ile nie jesteśmy konkretni, pytanie jest bez znaczenia.
Aryabhata,
6

Pojawia się dziedzina algorytmów gruboziarnistych równoległych, w których czas działania (i inne zużycie zasobów obliczeniowych) jest uważany za funkcję niezależnych parametrów n (wielkość wejściowa) ip (liczba procesorów), często przy naturalnym założeniu n >> s .

Dobrym punktem wyjścia jest wyszukanie w Google „równoległości masowo-synchronicznej”.

Alexander Tiskin
źródło
Czy klasa złożoności może się zmienić, jeśli pozwolisz sprzętowi skalować się z danymi wejściowymi? Mam problem z wyszukaniem go w Google jako laika: /
Gerenuk
3

Ten artykuł może Cię zainteresować:

Wydajność superliniowa w równoległych obliczeniach w czasie rzeczywistym autorstwa Selima Akl.

Podaje przykłady problemów obliczeniowych, w których „rozwiązanie sekwencyjne jest ponad razy wolniejsze niż rozwiązanie równoległe n- procesora”; odbywa się to poprzez twórczą interpretację pojęcia „problemu obliczeniowego”.nn

Michaił Gluszenkow
źródło
1

pp

O(f(n)/p)O((1/p)f(n))O(cf(n))O(f(n))c=1/p

TT/p+SomeMoreTime

Ale NIE zmienia się złożoność.

Pratik Deoghare
źródło
1

„nie można go obliczyć za pomocą 1 procesora, ale można obliczyć za pomocą 2.”

Nie jest to możliwe, zakładając, że oba procesory są bazami TM lub mniej wydajnym modelem. Z wikipedii, dla maszyn z wieloma taśmami:

Model ten intuicyjnie wydaje się o wiele potężniejszy niż model z jedną taśmą, ale każda maszyna z wieloma taśmami, bez względu na to, jak duże jest k, może być symulowana przez maszynę z jedną taśmą, wykorzystując tylko kwadratowo więcej czasu obliczeniowego (Papadimitriou 1994, Thrm 2.1)

Także dla maszyn wielogłowicowych, z „Symulacji w czasie liniowym maszyn wielogłowicowych z głowicami - skoki od głowy do głowy” Waltera J. Savitcha i Paula MB Vitányi:

Główny wynik tego artykułu pokazuje, że mając maszynę Turinga z kilkoma głowicami do odczytu i zapisu na taśmę i która ma dodatkową operację przesunięcia jednym ruchem „przesuń daną głowicę do pozycji innej danej głowy”, można skutecznie skonstruować wielowarstwowa maszyna Turinga z pojedynczą głowicą do odczytu i zapisu na taśmę, która symuluje ją w czasie liniowym; tzn. jeśli oryginalna maszyna działa w czasie T (n), wówczas maszyna symulująca będzie działać w czasie cT (n), dla pewnej stałej c.

chazisop
źródło
Tutaj mamy świetny przykład kosztu abstrakcji. Prawdziwe komputery (jako implementacje RM) mogą być lepiej zrównoleglone niż TM.
Raphael
Co oznacza skrót RM? Jeśli to był błąd i masz na myśli TM, nie zgadzam się. Multitape / multihead TM nie muszą martwić się komunikacją procesora i prawem Amdahla. Co więcej, nie widzę, jak komputer może działać lepiej niż TM o dostępie swobodnym i odwrotnie, tzn. Uważam, że są one równoważne.
chazisop
0

Być może „równoległe lub” (biorąc pod uwagę dwie funkcje zwracające wartość logiczną, powiedz, czy jedna z nich zwraca wartość prawda, biorąc pod uwagę, że jedna z nich, ale nie obie, mogą się nie kończyć) może być tym, o czym mówisz: nie możesz obliczyć z 1 procesorem, ale może obliczyć z 2.

Jednak to wszystko zależy od tego, jakiego modelu obliczeniowego będziesz używać, niezależnie od tego, czy otrzymujesz procesy jako czarne skrzynki, czy jako ich opis, który możesz zinterpretować sam itp.

jkff
źródło
2
To wydaje się fałszywe, chyba że pracujesz w jakimś poważnie ograniczonym modelu. Pojedynczy procesor może po prostu przeplatać instrukcje, które w innym przypadku działałyby na 2, powodując co najwyżej spowolnienie 2x + O (1). Myślę, że przez `` czarną skrzynkę '' masz na myśli, że przeplatanie jest niemożliwe? Nawet wtedy, jeśli możesz przerwać obliczenia czarnej skrzynki, które trwają zbyt długo, nadal możesz symulować dwa procesory, wielokrotnie zgadując i podwajając wymaganą długość obliczeń dla każdego procesu.
Aaron Roth,
Ale to z kolei wymaga od nas możliwości zakończenia obliczeń. Mam na myśli, że nie możesz wykonywać równolegle lub na 1 procesorze w modelu, w którym jedyne, co możesz zrobić, to uruchomić obliczenia, dopóki się nie skończy.
jkff
Teraz rozumiem, co miałeś na myśli, ale uważam, że to nie jest kompletne. Nie można go obliczyć również z 2. Jeśli jedna maszyna nadal działa, a druga odpowiada TAK, odpowiedź brzmi TAK. Ale co jeśli zwróci NIE? Nie możesz odpowiedzieć w sposób deterministyczny, ponieważ nie wiesz, czy komputer, który nadal działa, czy jest zablokowany (np. Problem POŁOWU).
chazisop