2010-03-09 13 views
5

ja recenty zadawane pytanie o równoległych algorytmów programowych, które zostało zamknięte dość szybko ze względu na mój zły umiejętność porozumiewania się mój zamiar:Najbardziej przydatny algorytm programowania równoległego?

https://stackoverflow.com/questions/2407631/what-is-the-most-useful-parallel-programming-algorithm-closed

Ja również niedawno poprosił jeszcze jedno pytanie, w szczególności:

Is MapReduce just a generalisation of another programming principle?

Drugie pytanie dotyczyło zmniejszenia mapy i sprawdzenia, czy mapreduce jest bardziej szczegółową wersją innej koncepcji w programowaniu równoległym. To pytanie (o przydatnym algorytmie programowania równoległego) dotyczy raczej całej serii algorytmów programowania równoległego. Będziesz musiał mi wybaczyć, ponieważ jestem całkiem nowy w programowaniu równoległym, więc być może MapReduce lub coś, co jest bardziej ogólną formą mapreduce, jest "jedynym" konstruktem programowania równoległego, który jest dostępny, w którym to przypadku przepraszam za moją niewiedzę.

+1

to jest subiektywne –

+0

Zgadzam się @Gabriel, dzięki. Zapomniałem sprawdzić pole "wiki społeczności" – Zubair

+0

Powiedziałbym, że 'make -j ' –

Odpowiedz

1

Prawdopodobnie istnieją dwie "główne" konstrukcje do programowania równoległego.

Mapa/Zmniejszenie to jeden. Na wysokim, bardzo ogólnym poziomie, jest to po prostu równoległe dzielenie i zdobywanie. Wysyłaj poszczególne bity do równoległych modułów obsługi i łącz wyniki po ich otrzymaniu.

Inną główną konstrukcją do programowania równoległego jest rurociąg ... elementy prac przechodzą serię etapów, z których każdy może być prowadzony równolegle.

Myślę, że prawie każdy algorytm równoległości będzie sprowadzał się do jednego z tych dwóch. Oczywiście mogę się mylić.

+0

Nie jest mapreduce tak samo jak algorytm rurociągu, używając dwóch rur, jednej do wysłania obliczeń i jednej, aby uzyskać odpowiedź ? – Zubair

+0

@Zubair: Nie do końca ... map reduce wysyła dane do wielu "potoków" równolegle, podczas gdy potok przesyła wszystko w dół do tej samej kolejnej serii potoków. Tak więc mapowanie/zmniejszanie wygląda jak A -> (B, C, D, E) -> F (B, C, D, E otrzymują żądanie równolegle, a ich odpowiedź idzie prosto do F), podczas gdy rurociąg wygląda jak A-> B-> C-> D-> E-> F - każdy element wysyła swoje dane do następnego elementu, więc wszystko, co dostaje się do F, przechodzi już od A do E. IOW, w potoku, każdy krok pobiera dane wyjściowe z poprzedniego kroku. – kyoryu

+0

Dzięki za wyjaśnienia. Jeśli wszystko w potoku musi być przetwarzane w sposób szeregowy, to gdzie jest równoległość? – Zubair

Powiązane problemy