È preferibile concentrarsi sullo studio della matematica o del calcolo?


11

In concomitanza con la mia ricerca sui metodi dello spazio sotterraneo di Krylov, ho la possibilità di esplorare la matematica dietro HPC un passo avanti o la teoria del calcolo (hardware, sistema operativo, compilatori ecc.). Attualmente, so che sia abbastanza per appena tirare avanti. Ad esempio, so come derivare le equazioni per CG e le basi dei metodi iterativi, ma non ho idea dei dettagli e di cose più complicate come Precondizionatori e Convergenza. Allo stesso modo, conosco le basi del metodo degli elementi finiti (forma debole, forma non debole, roba come Codomain e Galerkin e roba) ma non ne conosco la profondità. Sul fronte computazionale, so come programmare in serie in tutte le lingue possibili e posso usare OpenMP e MPI sufficientemente bene. Non capisco bene l'hardware e la memorizzazione nella cache.

La mia domanda è: su cosa ci si dovrebbe concentrare: matematica o calcolo? Sono inseparabili in HPC? Si consiglia a uno di conoscere l'uno e non l'altro?

EDIT: Attualmente sto laureando in ingegneria meccanica (che mi dispiace) e ho tonnellate di corsi di ingegneria e calcolo (fluidi, trasferimento di calore e così via). Mi iscriverò alla scuola di specializzazione per HPC quest'anno e voglio rafforzare alcuni aspetti (matematica / comp / ibrido) prima di iniziare i miei studi di laurea. Mi piace allo stesso modo la matematica e la comp (quindi il "Fai quello che ti piace di più" è ridondante).

Risposte:


10

Mi piace la risposta di aeismail, ma fornirò una prospettiva alternativa.

Nell'ottimizzazione, è impossibile imparare davvero il campo senza capire l'analisi reale. Ancor prima di affrontare i problemi numerici, è necessario comprendere le nozioni di convergenza delle sequenze, poiché si dimostrerà in classi che gli algoritmi convergono. Dovrai comprendere concetti come continuità e differenziabilità a più di un livello superficiale. Di conseguenza, l'analisi reale è un prerequisito per i corsi di programmazione non lineare.

La mia tesi riguarda metodi per risolvere equazioni differenziali ordinarie. I problemi di convergenza, in particolare cose come "se riduco la mia tolleranza di errore locale, la mia soluzione numerica calcolata si avvicina alla vera soluzione delle equazioni che sto risolvendo" sono ancora problemi che richiedono un'analisi reale. Per sviluppare la teoria dei problemi di convergenza mi è stato richiesto (contro i desideri dei miei consulenti) di fare due semestri di analisi reale. (Ha pagato con un paio di manoscritti.)

Tuttavia, so che ci sono persone là fuori che sopravvivono abbastanza bene con metodi numerici e HPC senza prendere lezioni di matematica pura. Dipende molto dalla nicchia che vuoi occupare.

Se vuoi sviluppare nuovi metodi, allora le lezioni di teoria sono utili. Le lezioni di teoria sono utili anche per l'alfabetizzazione matematica generale; leggere i documenti di matematica diventa molto, molto più semplice.

Se si desidera applicare metodi numerici specifici ai problemi, le classi dei metodi numerici sono più utili. Credo che questa prospettiva provenga dall'eismail, ed è una situazione più comune per gli ingegneri. (Dichiarazione di non responsabilità: ci conosciamo e siamo diplomati nello stesso dipartimento.)

Per quanto riguarda HPC, l'impressione che ho avuto è che l'esperienza sia l'insegnante migliore. Ho seguito un corso di programmazione parallelo, ed è stato leggermente utile, ma il messaggio principale della classe era provare cose e vedere se funzionavano. Se è importante per la tua ricerca di tesi, otterrai esperienza in HPC. In caso contrario, non lo farai e probabilmente non importerà fino a quando non desideri cambiare marcia e affrontare i problemi dell'HPC. La mia tesi non è stata particolarmente pesante per HPC, almeno in termini di ciò che programma, quindi non ho avuto bisogno di acquisire quel set di competenze.

Per concludere, dovresti probabilmente concentrarti sull'acquisizione di conoscenze su questioni relative al tuo problema di tesi, tenere a mente ciò che pensi di voler fare in futuro e decidere quale ampio contesto generale devi comunicare con altri ricercatori nel comunità a cui vuoi unirti. Il tuo dottorato sarà una delle ultime opportunità per prendere lezioni e, se pensi di voler imparare la teoria matematica (o qualsiasi altra materia, davvero), impararla da sola è considerevolmente più difficile senza stabilire una sorta di base competenza prima.


Prospettiva interessante — e l'esempio è un'utile domanda riconvenzionale al mio punto. (Devo sottolineare che sto per tenere alcune lezioni sull'ottimizzazione in cui sto esplicitamente tralasciando prove di convergenza, perché l'attenzione è focalizzata sui metodi numerici e davvero non c'è abbastanza tempo per "provare" le cose se Devo introdurre un'analisi reale come parte
dell'affare

2
Raccomando di seguire abbastanza corsi di matematica per essere in grado di comprendere i teoremi e (quando necessario, con sforzo) le prove che compaiono su riviste come SISC, J. Scientific Computing, CMAME, ecc. Questo probabilmente significa un corso di analisi reale, un corso in PDE astratto teoria, un corso di analisi numerica generale e un corso di discretizzazioni per equazioni differenziali parziali. Nella mia esperienza personale, studio personale, scavando nelle biblioteche open source per capire perché sono state fatte le scelte e, soprattutto, diventare uno sviluppatore di una tale biblioteca (PETSc) è stato prezioso per l'apprendimento dell'HPC.
Jed Brown,

Jed: Purtroppo, questo non è possibile nel contesto di molti studenti laureati. So che non sarei stato in grado di seguire tutti quei corsi, oltre a tutti i corsi di scienze fisiche di cui avevo bisogno per il mio campo di ricerca diretto. Quindi, come si fa a bilanciare ciò, in particolare nel contesto di avere un consulente che potrebbe non volere che uno studente si iscriva a (o seduto su) in molti corsi?
Aeismail

@aeismail: l'ho visto come un investimento nella carriera e ci sono ancora delle lacune che devo colmare. Se è importante, trovi il tempo per farlo. (Come ho detto, l'ho fatto contro i desideri dei miei consulenti e ho finito con un approccio che inizia a risolvere il tipo di problemi che hanno detto che volevano risolvere negli ultimi 10 anni.) Detto questo, è sicuramente difficile trovare il tempo ed è difficile trovare consulenti che siano di supporto quando c'è così tanta pressione da pubblicare. È anche difficile se i consulenti non sono in scienze computazionali (o hanno idee diverse su ciò che è di te).
Geoff Oxberry,

12

HPC è una miscela di matematica, calcolo, informatica e applicazioni. Devi essere in grado di capirli tutti per avere davvero successo a lungo termine. Tuttavia, non è necessario necessariamente raggiungere lo stesso livello di competenza in tutti.

Nel calcolo contro argomento matematico, per un ingegnere, direi che i problemi di implementazione numerica sono inizialmente più importanti. Se aspetti di aver appreso la teoria matematica e poi inizi a implementarlo, potresti dedicare molto tempo a lavorare su cose che, sebbene senza dubbio utili, potrebbero non influire direttamente sulla tua ricerca di tesi.

Quindi, inizialmente mi spingerei verso la comprensione degli aspetti computazionali, per poi tornare indietro e riempire i buchi della teoria matematica. Si possono anche imparare i problemi hardware, ma molto del modo in cui influenza il software dipenderà anche dalla piattaforma, quindi, di nuovo, potrebbe non essere il primo argomento all'ordine del giorno.

Altri possono ovviamente non essere d'accordo con me; come hai affermato, questa è più un'opinione che una domanda di fatto.


9

Segui tutti i corsi che puoi in entrambi. L'ho fatto e non me ne pento.

Supponendo che tu sia interessato a una carriera di ricerca, puoi avere successo con qualsiasi mix dei due. Trova collaboratori la cui conoscenza integri la tua. Conosco una notevole quantità di matematica per quanto riguarda l'accuratezza e la stabilità dei metodi numerici, ma molto meno sull'HPC. Ho collaboratori che conoscono molto bene HPC, quindi lavorando insieme possiamo ottenere metodi numerici innovativi in ​​esecuzione su grandi macchine. Faccio la matematica e loro fanno il calcolo, per la maggior parte.

Detto questo, penso che la matematica

  • è più fondamentale
  • è più impegnativo da imparare
  • rimane rilevante per un periodo di tempo più lungo

mentre argomenti HPC

  • cambiare più rapidamente
  • può essere raccolto più facilmente da solo
  • sono generalmente meno utili e più problematici / specifici dell'applicazione / della macchina

Questa è una generalizzazione eccessiva e sicuramente attrarrà commenti in disaccordo. Ma penso che ci sia della verità.


Grazie mille per tutte le tue risposte. Considerando tutto, tra i 3 pilastri del CSE (Numerical Math, HPC e Applications to Science / Engineering). Sono interessato a tutti loro, ma evitato dalla matematica perché non sono riuscito a seguire bene le prove e i documenti. Concentrandomi sull'analisi reale, l'algebra lineare e i metodi numerici ora, penso che mi preparerò per tutto. Il mio consulente ha affermato che il livello di calcolo puro che si comprende è direttamente proporzionale al livello di apprezzamento per qualsiasi campo applicato. Mentre leggo (ri) Calcolo dopo anni di Engg, sono convinto dell'aforisma.
Inchiesta il

6

Sono d'accordo con eeailail e Oxberry. Ho deciso di scrivere una risposta perché sembra che tu stia affrontando le stesse domande a cui stavo cercando di trovare una risposta l'anno scorso. Mi sono anche laureato in ingegneria meccanica (e l'ho odiato, soprattutto la meccanica solida), ho trascorso molto tempo lavorando con metodi numerici in CFD o ottimizzazione. Ora sto facendo i miei maestri in matematica applicata e scienze computazionali. Dal mio punto di vista, devi prima decidere cosa vuoi fare in futuro. Se vuoi entrare nella modellazione o nello sviluppo di metodi numerici, allora dovresti assolutamente andare verso la matematica. Ho trascorso due anni a lavorare con i metodi del volume finito e degli elementi finiti senza conoscere le basi profonde e ora che sto prendendo lezioni di matematica applicata, tutto ciò ha molto più senso per me. Mi rendo conto di come funzionano esattamente i metodi e non sto più camminando ciecamente solo sperimentando tutto. Risparmia molto tempo e fatica. Ma se decidi di voler sviluppare software e argomenti correlati, ti consigliamo di concentrarti sulla parte HPC. Nella mia esperienza, ci sono molti pacchetti là fuori che sono ottimizzati e pronti per l'uso per molte applicazioni numeriche. Quindi non sarà la migliore idea per me passare molto tempo a sviluppare il mio software, così ho deciso di lavorare di più sulla parte matematica.


1

Non credo in una dicotomia teoria / applicazione, ma è anche importante avvicinarsi ai campi in un modo che non sia completamente fuori contesto. Comprendere la teoria che penso ti fornisce un'intuizione generale sul problema che è molto prezioso in quanto ti impedisce di concentrarti sul concreto dopo il concreto (cioè una particolare implementazione contro un'altra), e ti permette di guardare al quadro generale. Questa comprensione tuttavia non nasce da un vuoto, e non puoi INIZIARE a questo livello .. non è così che funziona il cervello. Non puoi arrivare al concetto di foresta senza aver mai visto un albero!

Ciò non vuol dire che anche la teoria abbia un ruolo secondario in questa domanda. Vale a dire che la comprensione teorica fornisce una significativa economia mentale quando si considera una classe di problemi, ma non può esistere senza i concreti che la guidano (almeno nelle teorie computazionali).

Quindi, per rispondere alla tua domanda: se tutto ciò che ti interessa è l'implementazione, questo è il risultato, ma non nel migliorare / alterare questa implementazione, la teoria non sarà così importante. Se tuttavia desideri produrre il tuo, allora sei in svantaggio competitivo con coloro che comprendono meglio la teoria. A meno che, naturalmente, tu non produca il tuo negli anni che sembra essere migliore :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.