Ist es vorzuziehen, sich auf das Studium der Mathematik oder des Rechnens zu konzentrieren?


11

Gleichzeitig mit meiner Forschung zu Krylov-Subraummethoden habe ich die Möglichkeit, die Mathematik hinter HPC einen Schritt voraus oder die Theorie der Berechnung (Hardware, Betriebssystem, Compiler usw.) zu erforschen. Derzeit kenne ich beide genug, um nur durchzukommen. Zum Beispiel weiß ich, wie man die Gleichungen für CG und die Grundlagen iterativer Methoden ableitet, aber ich habe keine Ahnung von den Details und komplizierteren Dingen wie Vorkonditionierern und Konvergenz. Ebenso kenne ich die Grundlagen der Finite-Elemente-Methode (schwache Form, nicht schwache Form, Dinge wie Codomain und Galerkin und so), aber ich kenne die Tiefen nicht. Im rechnerischen Bereich weiß ich, wie man seriell in allen möglichen Sprachen codiert, und kann OpenMP und MPI ausreichend gut verwenden. Ich verstehe Hardware und Caching nicht so gut.

Meine Frage ist: Worauf sollte man sich konzentrieren: Mathematik oder Berechnung? Sind sie in HPC untrennbar miteinander verbunden? Wird empfohlen, dass einer etwas über den einen und nicht über den anderen lernt?

EDIT: Ich studiere derzeit Maschinenbau (was ich bedauere) und habe Tonnen von Kursen in Ingenieurwesen und Rechnen (Flüssigkeiten, Wärmeübertragung und so weiter). Ich werde dieses Jahr die Graduiertenschule für HPC besuchen und möchte einige Aspekte (Mathematik / Comp / Hybrid) stärken, bevor ich mit meinem Studium beginne. Ich mag Mathe und Comp gleichermaßen (daher ist das "Mach, was dir mehr Spaß macht" überflüssig).

Antworten:


10

Ich mag die Antwort von aeismail, aber ich werde eine alternative Perspektive bieten.

Bei der Optimierung ist es unmöglich, das Gebiet wirklich zu lernen, ohne die wirkliche Analyse zu verstehen. Noch bevor Sie sich mit numerischen Problemen befassen, müssen Sie die Begriffe der Konvergenz von Sequenzen verstehen, da Sie in Klassen beweisen werden, dass Algorithmen konvergieren. Sie müssen Konzepte wie Kontinuität und Differenzierbarkeit mehr als nur oberflächlich verstehen. Folglich ist eine echte Analyse eine Voraussetzung für Kurse in nichtlinearer Programmierung.

Meine Arbeit befasst sich mit Methoden zur Lösung gewöhnlicher Differentialgleichungen. Konvergenzprobleme, insbesondere Dinge wie "Wenn ich meine lokale Fehlertoleranz reduziere, nähert sich meine berechnete numerische Lösung der wahren Lösung der Gleichungen, die ich löse", sind wiederum Probleme, die eine echte Analyse erfordern. Um die Theorie für Konvergenzprobleme zu entwickeln, musste ich (gegen den Willen meiner Berater) zwei Semester echte Analyse absolvieren. (Es hat sich mit ein paar Manuskripten ausgezahlt.)

Ich weiß jedoch, dass es Leute gibt, die mit numerischen Methoden und HPC recht gut überleben, ohne reinen Mathematikunterricht zu nehmen. Es hängt wirklich von der Nische ab, die Sie besetzen möchten.

Wenn Sie neue Methoden entwickeln möchten, sind Theorieklassen hilfreich. Theorieunterricht ist auch hilfreich für die allgemeine mathematische Kompetenz; Das Lesen von Mathepapieren wird viel, viel einfacher.

Wenn Sie bestimmte numerische Methoden auf Probleme anwenden möchten, sind numerische Methodenklassen hilfreicher. Ich glaube, aus dieser Perspektive kommt aeismail, und für Ingenieure ist dies eine häufigere Situation. (Haftungsausschluss: Wir kennen uns und haben die gleiche Abteilung absolviert.)

Was HPC betrifft, habe ich den Eindruck, dass Erfahrung der beste Lehrer ist. Ich nahm an einem parallelen Programmierkurs teil, der ein wenig nützlich war, aber die Hauptbotschaft der Klasse war, Dinge auszuprobieren und zu sehen, ob sie funktionierten. Wenn es für Ihre Abschlussarbeit wichtig ist, erhalten Sie Erfahrung in HPC. Wenn dies nicht der Fall ist, werden Sie es nicht tun, und es wird wahrscheinlich keine Rolle spielen, bis Sie die Gänge wechseln und HPC-Probleme angehen möchten. Meine Diplomarbeit war nicht besonders HPC-lastig, zumindest was mein Programm betrifft, so dass ich diese Fähigkeiten nicht erlernen musste.

Zum Abschluss sollten Sie sich wahrscheinlich darauf konzentrieren, Hintergrundinformationen zu Themen zu erhalten, die sich auf Ihr Diplomarbeitsproblem beziehen, sich vor Augen halten, was Sie in Zukunft tun möchten, und entscheiden, welchen allgemeinen Hintergrund Sie für die Kommunikation mit anderen Forschern in der EU benötigen Community, der Sie beitreten möchten. Ihre Promotion wird eine der letzten Gelegenheiten für Sie sein, Unterricht zu nehmen, und wenn Sie glauben, dass Sie Mathe-Theorie (oder wirklich irgendein Fach) lernen möchten, ist es erheblich schwieriger, sie selbst zu lernen, ohne eine Grundvoraussetzung zu schaffen Kompetenz zuerst.


Interessante Perspektive - und das Beispiel ist eine nützliche Gegenforderung zu meinem Standpunkt. (Ich sollte darauf hinweisen, dass ich im Begriff bin, ein paar Vorträge über Optimierung zu halten, in denen ich Konvergenzbeweise ausdrücklich auslasse, da der Schwerpunkt auf den numerischen Methoden liegt und es wirklich nicht genug Zeit gibt, um Dinge zu "beweisen", wenn Ich muss echte Analyse als Teil des Schnäppchen
einführen

2
Ich empfehle, genügend Mathematikkurse zu belegen, um Theoreme und (wenn nötig mit Mühe) Beweise zu verstehen, die in Zeitschriften wie SISC, J. Scientific Computing, CMAME usw. erscheinen. Dies bedeutet wahrscheinlich einen Kurs in realer Analyse, einen Kurs in abstrakter PDE Theorie, ein Kurs in allgemeiner numerischer Analyse und ein Kurs in Diskretisierungen für partielle Differentialgleichungen. Nach meiner persönlichen Erfahrung war das Selbststudium, das Stöbern in Open-Source-Bibliotheken, um zu verstehen, warum Entscheidungen getroffen wurden, und vor allem das Entwickeln einer solchen Bibliothek (PETSc) für das Erlernen von HPC von unschätzbarem Wert.
Jed Brown

Jed: Leider ist dies im Kontext vieler Doktoranden nicht möglich. Ich weiß, dass ich nicht in der Lage gewesen wäre, alle diese Kurse sowie alle naturwissenschaftlichen Kurse zu belegen, die ich für mein direktes Forschungsgebiet benötigte. Wie kann man das ausgleichen - insbesondere im Zusammenhang mit einem Berater, der möglicherweise nicht möchte, dass ein Student in vielen Kursen eingeschrieben ist (oder daran teilnimmt)?
Aeismail

@aeismail: Ich habe es als Investition in die Karriere angesehen und es gibt immer noch Lücken, die ich füllen muss. Wenn es wichtig ist, finden Sie die Zeit dafür. (Wie ich bereits sagte, habe ich es gegen die Wünsche meiner Berater getan und einen Ansatz gefunden, der die Art von Problemen zu lösen beginnt, von denen sie sagten, dass sie sie in den letzten 10 Jahren lösen wollten.) Das heißt, es ist definitiv schwer, das zu finden Zeit, und es ist schwer, Berater zu finden, die unterstützen, wenn es so viel Druck gibt, zu veröffentlichen. Es ist auch schwierig, wenn Berater nicht in der Computerwissenschaft tätig sind (oder andere Vorstellungen davon haben, was es ist als Sie).
Geoff Oxberry

12

HPC ist eine Mischung aus Mathematik, Computer, Informatik und Anwendungen. Sie müssen in der Lage sein, alle zu verstehen, um auf lange Sicht wirklich erfolgreich zu sein. Sie müssen jedoch nicht unbedingt in allen das gleiche Niveau erreichen.

Im Argument Berechnung versus Mathematik würde ich für einen Ingenieur argumentieren, dass die numerischen Implementierungsprobleme zunächst wichtiger sind. Wenn Sie warten, bis Sie die mathematische Theorie gelernt haben, und dann mit der Implementierung beginnen, arbeiten Sie möglicherweise lange an Dingen, die zwar zweifellos nützlich sind, sich aber möglicherweise nicht direkt auf Ihre Abschlussarbeit auswirken.

Ich würde mich also zunächst dazu neigen, die rechnerischen Aspekte zu verstehen, und dann zurückgehen und die Lücken in der mathematischen Theorie ausfüllen. Hardwareprobleme können ebenfalls erlernt werden - aber viele Auswirkungen auf Software hängen auch von der Plattform ab. Daher ist dies möglicherweise nicht der erste Punkt auf Ihrer Tagesordnung.

Andere mögen mir natürlich nicht zustimmen; Wie Sie sagten, ist dies eher eine Stellungnahme als eine sachliche Frage.


9

Nehmen Sie an so vielen Kursen wie möglich teil. Ich habe es getan und ich bereue es nicht.

Angenommen, Sie interessieren sich für eine Forschungskarriere, können Sie mit jeder Mischung aus beiden erfolgreich sein. Finden Sie Mitarbeiter, deren Wissen Ihr Wissen ergänzt. Ich kenne eine beträchtliche Menge Mathematik in Bezug auf Genauigkeit und Stabilität numerischer Methoden, aber viel weniger über HPC. Ich habe Mitarbeiter, die HPC sehr gut kennen, sodass wir gemeinsam innovative numerische Methoden auf großen Maschinen ausführen können. Ich rechne und sie rechnen größtenteils.

Das heißt, ich denke, dass Mathe

  • ist grundlegender
  • ist schwieriger zu lernen
  • bleibt für einen längeren Zeitraum relevant

während HPC- Themen

  • schneller ändern
  • kann leichter selbst abgeholt werden
  • sind weniger allgemein nützlich und eher problem- / anwendungs- / maschinenspezifisch

Dies ist eine Übergeneralisierung und wird sicherlich nicht übereinstimmende Kommentare anziehen. Aber ich denke, das stimmt.


Vielen Dank für all Ihre Antworten. Betrachtet man alles unter den 3 Säulen von CSE (Numerische Mathematik, HPC und Anwendungen für Wissenschaft / Technik). Ich interessiere mich für alle, scheute mich aber vor Mathe, weil ich den Beweisen und Papieren nicht gut folgen konnte. Wenn ich mich jetzt auf reale Analyse, lineare Algebra und numerische Methoden konzentriere, denke ich, dass ich mich auf alles vorbereiten werde. Mein Berater sagte, das Niveau des reinen Kalküls, das man versteht, sei direkt proportional zum Grad der Wertschätzung für jedes angewandte Gebiet. Da ich nach Jahren von Engg Calculus (wieder) lese, bin ich vom Aphorismus überzeugt.
Anfrage

6

Ich stimme sowohl Aeismail als auch Oxberry zu. Ich habe beschlossen, eine Antwort zu schreiben, weil Sie anscheinend vor denselben Fragen stehen, auf die ich letztes Jahr versucht habe, eine Antwort zu finden. Ich habe auch Maschinenbau studiert (und es gehasst, besonders Festkörpermechanik) und viel Zeit damit verbracht, mit numerischen Methoden in CFD oder Optimierung zu arbeiten. Jetzt mache ich meinen Master in Angewandter Mathematik und Computerwissenschaften. Aus meiner Sicht müssen Sie zunächst entscheiden, was Sie in Zukunft tun möchten. Wenn Sie sich mit der Modellierung oder Entwicklung numerischer Methoden befassen möchten, sollten Sie sich auf jeden Fall der Mathematik widmen. Ich habe zwei Jahre lang mit Finite-Volumen- und Finite-Elemente-Methoden gearbeitet, ohne die tiefe Basis zu kennen, und jetzt, wo ich Unterricht in angewandter Mathematik nehme, ist alles für mich viel sinnvoller. Mir ist klar, wie die Methoden genau funktionieren, und ich gehe nicht mehr blind, sondern experimentiere nur mit allem. Das spart viel Zeit und Mühe. Wenn Sie sich jedoch für die Entwicklung von Software und verwandten Themen entscheiden, möchten Sie sich möglicherweise auf den HPC-Teil konzentrieren. Nach meiner Erfahrung gibt es viele Pakete, die optimiert und für viele numerische Anwendungen einsatzbereit sind. Daher ist es nicht die beste Idee für mich, viel Zeit mit der Entwicklung meiner eigenen Software zu verbringen, also habe ich beschlossen, mehr am mathematischen Teil zu arbeiten.


1

Ich glaube nicht an eine Theorie / Anwendung-Dichotomie, aber es ist auch wichtig, Felder auf eine Weise anzugehen, die nicht völlig aus dem Zusammenhang gerät. Das Verständnis der Theorie vermittelt Ihnen meiner Meinung nach eine allgemeine Vorstellung von dem Problem, das sehr wertvoll ist, da Sie sich nicht auf Beton nach Beton konzentrieren müssen (dh eine bestimmte Implementierung im Vergleich zu einer anderen), und Sie können das Gesamtbild betrachten. Dieses Verständnis entsteht jedoch nicht aus einem Vakuum heraus, und Sie können auf dieser Ebene nicht BEGINNEN. So funktioniert das Gehirn nicht. Sie können nicht zum Konzept eines Waldes gelangen, ohne jemals einen Baum gesehen zu haben!

Das heißt nicht, dass die Theorie auch in dieser Frage eine untergeordnete Rolle spielt. Es ist zu sagen, dass theoretisches Verständnis eine signifikante mentale Ökonomie bietet, wenn man eine Klasse von Problemen betrachtet, aber es kann nicht ohne die Betone existieren, die es antreiben (zumindest in den Computertheorien).

Um Ihre Frage zu beantworten: Wenn Sie nur an der Implementierung interessiert sind, das ist das Ergebnis, aber nicht an der Verbesserung / Änderung dieser Implementierung, ist die Theorie nicht so wichtig. Wenn Sie jedoch Ihre eigenen produzieren möchten, haben Sie einen Wettbewerbsnachteil gegenüber denen, die die Theorie besser verstehen. Es sei denn natürlich, Sie produzieren im Laufe der Jahre Ihre eigenen, die zufällig besser sind :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.