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:
- ustawienie tablicy liczb całkowitych na zero (skaluje się idealnie).
- sumując tablicę liczb całkowitych (im więcej wątków używasz, tym więcej narzutów).
- 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.
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło