Uwagi wstępne na temat paralelizacji, w szczególności schematów problemów i algorytmów


10

Szukam dostępnych w Internecie notatek z wykładów lub innych zasobów, które stanowią dobre wprowadzenie do programowania równoległego, podobnie jak równoległy analog podstawowych zajęć z informatyki.

Skupiam się na następujących zagadnieniach: chociaż jestem w stanie mówić o dzieleniu i podbijaniu, chciwych algorytmach, programowaniu dynamicznym itp., Tj. Podstawowych wzorcach algorytmów sekwencyjnych (i problemów), i nie mam odpowiedniego języka do klasyfikowania podejść w algorytmach równoległych.

Na przykład chciałbym uzyskać odpowiednie warunki, aby wyrazić fakt, że oczywiste równoległe podejścia do każdego z następujących problemów mają różne zachowania jakościowe:

  1. ustawienie tablicy liczb całkowitych na zero (skaluje się idealnie).
  2. sumując tablicę liczb całkowitych (im więcej wątków używasz, tym więcej narzutów).
  3. Biorąc pod uwagę tablicę, wypisz produkty każdego wpisu ze sobą (jeśli zrównoleglimy kanoniczną pętlę podwójnej pętli, czas wykonania zostanie skalowany do sqrt procesorów liczbowych).

Wystarczy środowisko pamięci współdzielonej, a komunikacja międzyprocesowa nie jest dla mnie tak istotna (w rzeczywistości interesują mnie algorytmy, które w ogóle tego unikają). Ponadto aspekty techniczne są dla mnie nieistotne.


Czy możesz przeformułować to zdanie: „Na przykład chciałbym mieć język, dla którego oczywiste równoległe podejście do następujących problemów ma inne zachowanie jakościowe”
Gopi

Gotowy. Mam nadzieję, że to jest bardziej dokładne.
shuhalo

Odpowiedzi:


6

W książce wprowadzającej do programowania równoległego (nie wiem o materiale online) uczyłem się go za pomocą algorytmów równoległych autorstwa Casanova, Legrand i Roberta, co jest bardzo pomocne na początku teoretycznego algorytmu równoległego.

Ponadto w SPAA'11 odbyła się dyskusja na temat tego, co student równoległy powinien wiedzieć i czego powinien uczyć. Ta inicjatywa programowa na temat przetwarzania równoległego i rozproszonego pomoże ci znaleźć nie kurs, ale listę różnych tematów, które powinny być omówione na kursie licencjackim. Przypuszczam, że łatwiej jest znaleźć dokumentację na każdy konkretny temat.


1
Termin „język” odnosi się do języka naturalnego, a nie języka programowania lub podobnego. Podobnie jak matematyka jest językiem, a na przykład mówi się, że teoria kategorii lub teoria grupy zapewnia „język” dla niektórych struktur, relacji i faktów. Ale i tak dzięki.
shuhalo,

rzeczywiście mój zły :). Następnie, jeśli chodzi o trzy pytania, naprawdę polecam książkę, którą podłączyłem, która jest bardzo teoretyczna. Uczą się wszelkiego rodzaju równoległych algorytmów i technik dotyczących różnego rodzaju architektury równoległej. Wówczas część, która mogłaby odpowiedzieć na trzy pytania, byłaby częścią o jednolitych pętlach .
Gopi,


+1 za inicjatywę programową NSF / IEEE-TCPP, ale sugeruję usunięcie OpenMP i MPI, ponieważ tak naprawdę nie są one tutaj istotne.
Jukka Suomela

Rzeczywiście zapomniałem go usunąć po komentarzu @Martin. Dzięki.
Gopi,

7

Jeśli nie chcesz zagłębiać się w krwawe szczegóły, bardzo dobre wprowadzenie do wzorców projektowania równoległości zapewnia książka Patterns for Parallel Programming autorstwa Mattson, Sanders i Massingill.

Znajdziesz ogólne, szeroko stosowane rozwiązania w zakresie paralelizacji, a nawet krótkie wprowadzenie do OpenMP i MPI. Książka zaczyna się od wprowadzenia wzorców projektowych i współbieżności. Następnie autorzy przystępują do zilustrowania, jak wykorzystać współbieżność, jak zbudować algorytm i jak faktycznie wdrożyć algorytm, biorąc pod uwagę synchronizację i komunikację.

Ponownie, nie jest to podręcznik na temat algorytmów równoległych. Wykonuje bardzo dobrą robotę, prezentując materiały ściśle związane z równoległą inżynierią oprogramowania, z naciskiem zarówno praktycznym, jak i teoretycznym. Dlatego powinien idealnie pasować do twoich potrzeb.


1

MPI_RUBY ... muszę znaleźć moją najnowszą stabilną wersję. Sugerowałbym dodanie do listy przedrostka równoległego (skanowanie). Po prostu nauczę równoległego prefiksu i pokażę, jak używać krzywej wypełniania spacji, aby uzyskać lepszą wydajność pamięci podręcznej dla problemu wszystkich par.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.