Jak powinienem uczyć się tworzenia i programowania systemów HPC?

16

Zajmuję się dziedziną, która niekoniecznie wykonuje wiele pracy HPC, a kiedy ją napotyka, często jest to wynikiem badań badaczy z innych dziedzin, którzy badają nowe zastosowania swoich metod i tym podobne. Przede wszystkim oznacza to, że tak naprawdę nigdy nie zostaje wprowadzony w trakcie studiów lub nie jest wychowywany podczas warsztatów, seminariów itp. - można przejść całą karierę bez potrzeby.

Jednocześnie jednak wiele pracy, którą wykonuję, mogłoby skorzystać na lepszym wykorzystaniu dostępnych zasobów HPC - głównie w postaci ładnie równoległych symulacji Monte Carlo.

Moim problemem jest znalezienie zasobów do nauki korzystania z klastrów, MPI itp. I oddzielenie dobra od zła, biorąc pod uwagę, że niewiele wiem.

Jakieś sugestie dotyczące książek na temat programowania na tego typu systemach lub konfigurowania i uruchamiania bardzo skromnych konfiguracji HPC?

Fomite
źródło
Czy powinno to mieć coś w rodzaju „dużej listy”?
shuhalo,
@Martin: nie. To powinno mieć odpowiedzi od ludzi, którzy byli rzeczywiście zrobił to i wiem, co oni mówią, a nie gigantyczny listę wszystkiego, co może być ewentualnie związane. Zmodyfikowałem tytuł, aby to odzwierciedlić.
Shog9

Odpowiedzi:

13

Sprawdź HPC University . W szczególności sekcja zasobów , która zawiera takie rzeczy jak

i wiele więcej.

Istnieje wiele programów szkolnictwa wyższego, które obejmują kursy w HPC . Na przykład mój własny program obejmuje kursy języka

  • Komputery o wysokiej wydajności (2 semestry)
  • Paradygmaty programowania równoległego
  • Inżynieria oprogramowania naukowego
  • Programowanie GPU i GPGPU

a także różnorodne kursy z zakresu obliczeń naukowych i analiz numerycznych.

David Ketcheson
źródło
4

Moje osobiste doświadczenie jest takie, że HPC wymaga tak szerokiego zestawu umiejętności, że bardzo trudno jest to zrobić w jednej książce, przepisie, na uniwersytecie. Weź pod uwagę, że HPC nie polega na programowaniu dużych maszyn lub budowie klastra, ale raczej na rozwiązywaniu dużych problemów naukowych w czołówce komputerów.

Nie jestem pewien, czy wszyscy się zgodzą, ale myślę, że lista obszarów zaangażowanych w HPC może być:

Każdy z tych obszarów jest niezwykle duży i jest tak dużo wiedzy, że trudno jest zdobyć wszystko przed próbą zrobienia czegokolwiek!

W moim przypadku zacząłem od jednego kąta inżynierii i powoli rozwijałem doświadczenie oraz sieć współpracy. Na samym początku miałem tylko jeden problem inżynierii / matematyki stosowanej, który chciałem rozwiązać, od tego momentu przeszedłem do programowania, aby uzyskać większą wydajność dzięki komputerom o większej mocy, analizie numerycznej, zaawansowanym algorytmom, komputerom równoległym, algorytmom równoległym , do jeszcze większych komputerów, do bardziej kompletnego modelu naukowego, a ostatecznie do nowego problemu i znowu się powtarzał. Jeśli spojrzę wstecz, próba zrozumienia i rozwiązania mojego pierwszego problemu była tym, co stworzyło mój plan nauki. Posiadanie opiekuna, który może utrzymać cię na właściwej drodze, również bardzo pomaga, w przeciwnym razie uważaj, aby nie stracić z oczu celu końcowego (w moim przypadku był to problem naukowy, który miałem pod ręką).

Jeśli muszę wymienić jedną rzecz, która naprawdę robi różnicę, idąc ścieżką HPC, było spotkanie z ludźmi z innych dziedzin, wymiana pomysłów i skorzystanie z rozproszonej wiedzy społeczności. Ważne jest również, aby nie obawiać się zbytniej naiwności i robienia głupich rzeczy. Pierwsze kroki są zawsze trudne i najważniejsze!

fcruz
źródło
2

To jest mój plan nauczenia się podstaw HPC tej wiosny. Jestem programistą od ostatniej dekady i połowy i pracuję wyłącznie z technologiami Microsoft. Jestem również studentem, więc mogę uzyskać darmowe oprogramowanie MSDN Academic Alliance(Twój profil wskazuje, że jesteś studentem, więc powinieneś sprawdzić, czy Twoja szkoła bierze udział), a ograniczenie miejsca w domu jest czynnikiem ograniczającym. Moje biuro / den / ManCave ma już kilka komputerów, więc mogę już przetestować niektóre rzeczy. Windows Server 2008 HPC jest wymieniony w niektórych dostępnych pakietach, ale zdawało się, że zniknął ze szkolnego oprogramowania do pobrania w ciągu ostatniego semestru („pakiet obliczeniowy klastra” jest dodatkiem do serwera 2003, podczas gdy serwer 2008 hpc jest dostarczany z wersją uproszczoną) serwera 2008, z ccp, musisz wyłączyć usługi, których nie potrzebujesz).

Moja planowana topologia to „klaster włączony SOA”, który jest czwartym obrazem na tej stronie (kliknij małe kwadraty pod głównym obrazem). Mam już skonfigurowaną usługę Active Directory i kilka innych serwerów, więc zastanawiam się nad zakupem 4 tanich komputerów Dell o niewielkich rozmiarach w serwisie eBay (remont Dell 655 SFF wydaje się być uruchomiony w parku 100-200 $). Ponieważ próbuję się tylko czegoś nauczyć, uważam, że potrzebuję tylko „węzła głównego”, „brokera” i 2 „węzłów obliczeniowych” oraz kilku zapasowych kart ethernetowych, aby zobaczyć, jakie magistrale prywatne i aplikacyjne (z tego obrazu ) robić. Licencja MSDNAA pozwala na 16 węzłów obliczeniowych, czyli o wiele więcej niż szukam.

Czytam Beowulf Cluster Computing w systemie Windows i wydaje mi się, że mam pomysł na kilka pomysłów w biurze (istnieje wersja linux, ale mam 0 umiejętności / platform Linux) w domu - rób to, co jest odpowiednie dla siebie). W biurze dostępnych jest wiele dużych klastrów , ale są one już nasycone, a czas na edukację „Chcę / muszę się nauczyć X” jest bardzo trudny do zdobycia. Oczekuje się już, że zna się na tym, zanim będzie można przesłać prace.

Tangurena
źródło