Czy lepiej skoncentrować się na studiowaniu matematyki lub obliczeń?


11

Równolegle z moimi badaniami nad Krylov Metodami podprzestrzennymi, mam możliwość zbadania matematyki stojącej za HPC o krok do przodu lub teorii obliczeń (sprzęt, system operacyjny, kompilatory itp.). Obecnie wiem zarówno wystarczy po prostu przetrwać. Na przykład wiem, jak wyprowadzić równania dla CG i podstawy metod iteracyjnych, ale nie mam pojęcia o szczegółach i bardziej skomplikowanych rzeczach, takich jak Warunki wstępne i Konwergencja. Podobnie, znam podstawy Metody Elementów Skończonych (Forma Słaba, Forma Słaba, Codomain i Galerkin i inne), ale nie poznam jej głębi. W zakresie obliczeń wiem, jak kodować szeregowo we wszystkich możliwych językach i potrafię wystarczająco dobrze używać OpenMP i MPI. Nie rozumiem dobrze sprzętu i buforowania.

Moje pytanie brzmi: na czym należy się skoncentrować: matematyka lub obliczenia? Czy są nierozłączne w HPC? Czy zaleca się, aby jeden dowiedział się o jednym, a nie o drugim?

EDYCJA: Obecnie specjalizuję się w inżynierii mechanicznej (której żałuję) i mam mnóstwo kursów inżynierskich i obliczeniowych (płyny, wymiana ciepła i tak dalej). W tym roku dołączę do szkoły dla absolwentów HPC i chcę wzmocnić jakiś aspekt (Math / Comp / Hybrid) przed rozpoczęciem studiów. Lubię matematykę i comp na równi (więc „Rób to, co lubisz bardziej” jest zbędne).

Odpowiedzi:


10

Podoba mi się odpowiedź aeismail, ale przedstawię alternatywną perspektywę.

W optymalizacji nie można naprawdę nauczyć się tej dziedziny bez zrozumienia prawdziwej analizy. Jeszcze zanim rozwiążesz problemy numeryczne, musisz zrozumieć pojęcia zbieżności sekwencji, ponieważ udowodnisz w klasach, że algorytmy są zbieżne. Musisz zrozumieć pojęcia takie jak ciągłość i zróżnicowanie na więcej niż powierzchownym poziomie. W związku z tym rzeczywista analiza jest warunkiem wstępnym dla kursów programowania nieliniowego.

Moja praca dotyczy metod rozwiązywania równań różniczkowych zwyczajnych. Kwestie konwergencji, a konkretnie takie rzeczy, jak „jeśli zmniejszę moją lokalną tolerancję błędów, wówczas moje obliczone rozwiązanie numeryczne zbliża się do prawdziwego rozwiązania równań, które rozwiązuję”, to znowu kwestie wymagające prawdziwej analizy. Opracowanie teorii zagadnień konwergencji wymagało ode mnie (wbrew życzeniom moich doradców) dwóch semestrów prawdziwej analizy. (Opłaciło się kilkoma manuskryptami.)

Wiem jednak, że są ludzie, którzy dość dobrze przeżywają w metodach numerycznych i HPC, nie ucząc się matematyki. To naprawdę zależy od niszy, którą chcesz zająć.

Jeśli chcesz opracować nowe metody, pomocne są zajęcia teoretyczne. Zajęcia z teorii są również pomocne w ogólnej wiedzy matematycznej; czytanie artykułów matematycznych staje się o wiele łatwiejsze.

Jeśli chcesz zastosować określone metody numeryczne do problemów, bardziej pomocne są klasy metod numerycznych. Wierzę, że z tej perspektywy pochodzi eeismail i jest to sytuacja bardziej powszechna dla inżynierów. (Oświadczenie: Znamy się i ukończyliśmy ten sam wydział).

Jeśli chodzi o HPC, mam wrażenie, że doświadczenie jest najlepszym nauczycielem. Wziąłem kurs programowania równoległego i było to trochę przydatne, ale głównym przesłaniem zajęć było wypróbowanie różnych rzeczy i sprawdzenie, czy działają. Jeśli jest to ważne dla twoich badań, zdobędziesz doświadczenie w HPC. Jeśli tak nie jest, nie będziesz i prawdopodobnie nie będzie to miało znaczenia, dopóki nie będziesz chciał zmienić biegów i rozwiązać problemów HPC. Moja praca nie była szczególnie ciężka dla HPC, przynajmniej jeśli chodzi o to, co programuję, więc nie musiałem podnosić tego zestawu umiejętności.

Podsumowując, prawdopodobnie powinieneś skoncentrować się na zapoznaniu się z zagadnieniami związanymi z problemem pracy dyplomowej, pamiętaj o tym, co według Ciebie chcesz zrobić w przyszłości, i zdecyduj, jakie szerokie, ogólne tło musisz komunikować się z innymi badaczami w społeczność, do której chcesz dołączyć. Twój doktorat będzie jedną z ostatnich okazji do wzięcia udziału w zajęciach, a jeśli uważasz, że chcesz nauczyć się teorii matematyki (lub dowolnego przedmiotu, naprawdę), samodzielne nauczenie się jej jest znacznie trudniejsze bez ustalenia jakiejś podstawowej najpierw biegłość.


Interesująca perspektywa - a mój przykład stanowi przydatne roszczenie wzajemne. (Powinienem zaznaczyć, że mam zamiar wygłosić kilka wykładów na temat optymalizacji, w których wyraźnie pomijam dowody zbieżności, ponieważ nacisk kładziony jest na metody numeryczne i naprawdę nie ma wystarczająco dużo czasu, aby „udowodnić” rzeczy, jeśli Muszę przedstawić prawdziwą analizę w ramach okazji.)
aeismail

2
Polecam wziąć wystarczającą liczbę kursów matematyki, aby móc zrozumieć twierdzenia i (w razie potrzeby, z wysiłkiem) dowody pojawiające się w czasopismach takich jak SISC, J. Scientific Computing, CMAME itp. Prawdopodobnie oznacza to kurs z prawdziwej analizy, kurs z abstrakcyjnego PDE teoria, kurs ogólnej analizy numerycznej i kurs dyskretyzacji dla równań różniczkowych cząstkowych. Z mojego osobistego doświadczenia, samokształcenie, przeszukiwanie bibliotek otwartego oprogramowania, aby zrozumieć, dlaczego dokonano wyborów, a co najważniejsze, zostanie twórcą takiej biblioteki (PETSc) było nieocenione w nauce HPC.
Jed Brown

Jed: Niestety, nie jest to możliwe w kontekście wielu doktorantów. Wiem, że nie byłbym w stanie uczestniczyć w tych wszystkich kursach, a także wszystkich kursach nauk fizycznych, których potrzebowałem do mojej bezpośredniej dziedziny badań. Jak zatem zachować równowagę - szczególnie w kontekście posiadania doradcy, który może nie chcieć, aby uczeń zapisał się (lub siedział) na wielu kursach?
aeismail

@aeismail: Widziałem to jako inwestycję w karierę i wciąż muszę uzupełnić luki. Jeśli to ważne, znajdziesz na to czas. (Tak jak powiedziałem, zrobiłem to wbrew życzeniom moich doradców, a skończyło się na podejściu, które zaczyna rozwiązywać problemy, które chcieli rozwiązać przez ostatnie 10 lat.) To powiedziawszy, zdecydowanie trudno jest znaleźć czasu i ciężko jest znaleźć doradców, którzy byliby pomocni, gdy istnieje tak duży nacisk na publikację. Jest to również trudne, jeśli doradcy nie są naukami obliczeniowymi (lub mają inne poglądy na temat tego, co to jest niż ty).
Geoff Oxberry

12

HPC to połączenie matematyki, obliczeń, informatyki i aplikacji. Musisz być w stanie zrozumieć je wszystkie, aby odnieść prawdziwy sukces na dłuższą metę. Jednak niekoniecznie musisz osiągnąć ten sam poziom biegłości we wszystkich z nich.

W przypadku argumentu obliczenia kontra matematyka, dla inżyniera, argumentowałbym, że numeryczne problemy z implementacją są na początku ważniejsze. Jeśli zaczekasz, aż nauczysz się teorii matematycznej, a następnie zaczniesz wdrażanie, możesz poświęcić dużo czasu na pracę nad rzeczami, które - choć bez wątpienia przydatne - mogą nie mieć bezpośredniego wpływu na twoje badania magisterskie.

Dlatego najpierw skłaniałem się do zrozumienia aspektów obliczeniowych, a potem do tyłu i wypełniania dziur w teorii matematycznej. Można również dowiedzieć się o problemach sprzętowych - ale wiele z tego, jak wpływa to na oprogramowanie, zależy również od platformy, więc znowu może nie być to pierwszy punkt w twoim programie.

Inni oczywiście mogą się ze mną nie zgadzać; jak powiedziałeś, jest to bardziej opinia niż pytanie oparte na faktach.


9

Weź udział w jak największej liczbie kursów. Zrobiłem to i nie żałuję tego.

Zakładając, że interesuje Cię kariera naukowa, możesz odnieść sukces z dowolną kombinacją tych dwóch. Znajdź współpracowników, których wiedza uzupełnia Twoją. Znam znaczną ilość matematyki, ponieważ dotyczy ona dokładności i stabilności metod numerycznych, ale znacznie mniej na temat HPC. Mam współpracowników, którzy bardzo dobrze znają HPC, więc dzięki współpracy możemy uzyskać innowacyjne metody numeryczne działające na dużych komputerach. Robię matematykę, a oni w większości obliczają.

To powiedziawszy, myślę, że matematyka

  • jest bardziej fundamentalny
  • nauka jest trudniejsza
  • pozostaje istotny przez dłuższy czas

podczas gdy tematy HPC

  • zmieniać się szybciej
  • może być łatwiej odebrany samodzielnie
  • są mniej ogólnie przydatne i bardziej zależą od problemu / aplikacji / maszyny

Jest to nadmierna generalizacja i na pewno przyciągnie nieprzyzwoite komentarze. Ale myślę, że jest w tym prawda.


Dziękuję bardzo za wszystkie odpowiedzi. Biorąc pod uwagę wszystko, wśród 3 filarów CSE (matematyka numeryczna, HPC i zastosowania w nauce / inżynierii). Interesuję się nimi wszystkimi, ale unikałem matematyki, ponieważ nie mogłem dobrze śledzić dowodów i dokumentów. Koncentrując się teraz na analizie rzeczywistej, algebrze liniowej i metodach numerycznych, myślę, że przygotuję się na wszystko. Mój doradca powiedział, że poziom rachunku różniczkowego, który rozumiemy, jest wprost proporcjonalny do poziomu uznania dla dowolnego zastosowanego pola. Kiedy (ponownie) czytam Rachunek po latach Engga, jestem przekonany o aforyzmie.
Zapytanie

6

Zgadzam się zarówno z eeismail, jak i Oxberry. Postanowiłem napisać odpowiedź, ponieważ wydaje się, że masz do czynienia z tymi samymi pytaniami, na które próbowałem znaleźć odpowiedź w zeszłym roku. Specjalizowałem się również w inżynierii mechanicznej (i nienawidziłem tego, szczególnie mechaniki litej), spędziłem dużo czasu pracując z metodami numerycznymi w CFD lub optymalizacji. Teraz robię mistrzów matematyki stosowanej i nauk obliczeniowych. Z mojego punktu widzenia musisz najpierw zdecydować, co chcesz robić w przyszłości. Jeśli chcesz zająć się modelowaniem lub rozwojem metod numerycznych, zdecydowanie powinieneś pójść w kierunku matematyki. Spędziłem dwa lata pracując z metodami objętości skończonej i elementów skończonych, nie znając głębokiej podstawy, a teraz, kiedy biorę lekcje matematyki stosowanej, wszystko to ma dla mnie o wiele więcej sensu. Zdaję sobie sprawę, jak dokładnie działają te metody i nie chodzę już na ślepo, tylko eksperymentuję ze wszystkim. Oszczędza dużo czasu i wysiłku. Ale jeśli zdecydujesz, że chcesz zająć się tworzeniem oprogramowania i pokrewnych tematów, możesz skupić się na części HPC. Z mojego doświadczenia wynika, że ​​istnieje wiele pakietów, które są zoptymalizowane i gotowe do użycia w wielu aplikacjach numerycznych. Dlatego nie będzie dla mnie najlepszym pomysłem poświęcanie dużo czasu na tworzenie własnego oprogramowania, dlatego postanowiłem więcej pracować nad matematyką.


1

Nie wierzę w dychotomię teorii / aplikacji, ale ważne jest również podejście do pól w sposób, który nie jest całkowicie poza kontekstem. Zrozumienie teorii, jak sądzę, zapewnia ogólną intuicję na temat problemu, który jest bardzo cenny, ponieważ powstrzymuje cię od konieczności skupiania się na konkretach po konkretnym (tj. Jednej konkretnej implementacji w porównaniu do drugiej) i pozwala spojrzeć na ogólny obraz. Zrozumienie to jednak nie wynika z próżni i nie możesz POCZĄTKUĆ na tym poziomie ... to nie tak działa mózg. Nie możesz dojść do koncepcji lasu bez zobaczenia drzewa!

Nie oznacza to również, że teoria odgrywa podrzędną rolę w tym pytaniu. To znaczy, że teoretyczne rozumienie zapewnia znaczną oszczędność mentalną przy rozważaniu klasy problemów, ale nie może istnieć bez konkretnych konkrecji (przynajmniej w teoriach obliczeniowych).

Tak więc, aby odpowiedzieć na twoje pytanie: Jeśli wszystko, co cię interesuje, to implementacja, to jest wynik, ale nie poprawa / modyfikacja tej implementacji, teoria nie będzie tak ważna. Jeśli jednak chcesz wyprodukować własny, to znajdujesz się w niekorzystnej sytuacji konkurencyjnej z tymi, którzy lepiej rozumieją teorię. Chyba że oczywiście produkujesz własne przez lata, które okazują się lepsze :)

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.