Jakie są scenariusze, dla których MPI lepiej pasuje niż MapReduce?

O ile rozumiem, MPI daje mi znacznie większą kontrolę nad tym, jak dokładnie różne węzły w klastrze będą się komunikować.

W MapReduce / Hadoop, każdy węzeł wykonuje pewne obliczenia, wymienia dane z innymi węzłami, a następnie zestawia swoją partycję wyników. Wydaje się proste, ale ponieważ można iterować proces, nawet algorytmy takie jak k-means lub PageRank pasują do modelu całkiem dobrze. W rozproszonym systemie plików z lokalizacją planowania wydajność jest najwyraźniej dobra. W porównanie, MPI daje mi wyraźną kontrolę nad tym, jak węzły wysyłają wiadomości do siebie.

Czy ktoś może opisać scenariusz programowania klastrowego, w którym bardziej ogólny model MPI jest oczywistą przewagą nad prostszym modelem MapReduce?

Author: Igor ostrovsky, 2009-10-07

5 answers

Prawie każdy kod naukowy -- różnice skończone, elementy skończone itp. Co prowadzi do okrągłej odpowiedzi, że każdy rozproszony program, który nie łatwo mapować do MapReduce, byłby lepiej zaimplementowany z bardziej ogólnym modelem MPI. Nie jestem pewien, czy to ci pomoże, odrzucę tę odpowiedź zaraz po tym, jak ją opublikuję.

 24
Author: High Performance Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-17 09:03:33

Mimo, że na to pytanie udzielono odpowiedzi, chciałbym dodać/powtórzyć jeden bardzo ważny punkt.

MPI najlepiej nadaje się do problemów, które wymagają dużo komunikacji międzyprocesowej.

Kiedy dane stają się duże( petabajty, ktoś?), a komunikacja międzyprocesowa jest niewielka, MPI staje się bólem. Dzieje się tak dlatego, że procesy spędzają cały czas na wysyłaniu danych do siebie (przepustowość staje się czynnikiem ograniczającym), a Twoje Procesory pozostaną bezczynne. Być może nawet większym problemem jest odczytanie wszystkich danych.

To jest podstawowy powód posiadania czegoś takiego jak Hadoop. Dane muszą być również dystrybuowane-Hadoop Distributed File System!

Krótko mówiąc, MPI jest dobre dla równoległości zadań, a Hadoop jest dobre dla równoległości danych.

 19
Author: Gitmo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-06 15:32:36

Najlepszą odpowiedzią, jaką mogłem wymyślić jest to, że MPI jest lepsze niż MapReduce w dwóch przypadkach:

  1. Do krótkich zadań, a nie przetwarzania wsadowego . Na przykład MapReduce nie może być używany do odpowiadania na indywidualne zapytania - każde zadanie powinno zająć kilka minut. Myślę, że w MPI można zbudować system odpowiedzi na zapytania, w którym maszyny wysyłają do siebie wiadomości, aby skierować zapytanie i wygenerować odpowiedź.

  2. W przypadku zadań węzły muszą się komunikować więcej niż to, co obsługuje itered MapReduce jobs, ale nie zbyt wiele, aby ogólne koszty komunikacji sprawiały, że obliczenia były niepraktyczne. Nie jestem jednak pewien, jak często takie przypadki występują w praktyce.

 1
Author: Igor ostrovsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-11 23:51:26

Gdy obliczenia i dane, których używasz, mają nieregularne zachowania, które najczęściej przekładają się na wiele komunikatów między obiektami, lub gdy potrzebujesz dostępu na niskim poziomie sprzętowym, np. RDMA, wtedy MPI jest lepsze. W niektórych odpowiedziach, które widzisz tutaj, wspomina się o opóźnieniach zadań lub modelu spójności pamięci, frameworki takie jak Spark lub modele aktorów, takie jak AKKA, pokazały, że mogą konkurować z MPI. Wreszcie należy wziąć pod uwagę, że MPI ma korzyści z bycia przez lata głównym baza do tworzenia bibliotek potrzebnych do obliczeń naukowych (są to najważniejsze brakujące części w nowych frameworkach wykorzystujących modele dag / MapReduce).

Podsumowując, myślę, że korzyści, które modele MapReduce / DAG przynoszą do stołu, jak dynamiczne Menedżery zasobów, a obliczenia tolerancji błędów sprawią, że będą one wykonalne dla grup obliczeniowych naukowych.

 1
Author: M.Rez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-16 17:32:03

Spodziewam się, że MPI beats MapReduce łatwo, gdy zadanie jest iteracją nad zestawem danych, którego rozmiar jest porównywalny z pamięcią podręczną procesora, i gdy komunikacja z innymi zadaniami jest często wymagana. Wiele naukowych metod paralelizacji dekompozycji pasuje do tego wzoru. Jeśli MapReduce wymaga sekwencyjnego przetwarzania i komunikacji lub zakończenia procesów, to korzyści z wydajności obliczeniowej wynikające z radzenia sobie z problemem wielkości bufora są tracone.

 0
Author: mabraham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 07:14:31