Est-il préférable de se concentrer sur l'étude des mathématiques ou du calcul?

11

Parallèlement à mes recherches sur les méthodes de sous-espace de Krylov, j'ai la possibilité d'explorer les mathématiques derrière HPC un pas en avant ou la théorie du calcul (matériel, OS, compilateurs etc.). Actuellement, je connais suffisamment les deux pour me débrouiller. Par exemple, je sais comment dériver les équations de CG et les bases des méthodes itératives, mais je ne sais rien des détails et des choses plus compliquées comme les préconditionneurs et la convergence. De même, je connais les bases de la méthode des éléments finis (forme faible, forme non faible, des trucs comme Codomain et Galerkin et des trucs), mais je n'en connais pas les profondeurs. Sur le plan informatique, je sais coder en série dans tous les langages possibles et je peux utiliser suffisamment OpenMP et MPI. Je ne comprends pas très bien le matériel et la mise en cache.

Ma question est: sur quoi doit-on se concentrer: les mathématiques ou le calcul? Sont-ils indissociables en HPC? Est-il recommandé que l'un apprenne l'un et pas l'autre?

EDIT: Je suis actuellement en génie mécanique (ce que je regrette) et j'ai des tonnes de cours d'ingénierie et de calcul (fluides, transfert de chaleur, etc.). Je vais rejoindre l'école d'études supérieures pour le HPC cette année et je veux renforcer certains aspects (mathématiques / comp / hybride) avant de commencer mes études supérieures. J'aime les maths et les comp également (donc le "Faites ce que vous aimez plus" est redondant).

Enquête
la source

Réponses:

10

J'aime la réponse de aeismail, mais je vais fournir une perspective alternative.

En optimisation, il est impossible d'apprendre vraiment le terrain sans comprendre une analyse réelle. Avant même d'aborder les problèmes numériques, vous devez comprendre les notions de convergence des séquences, car vous allez prouver dans les classes que les algorithmes convergent. Vous devrez comprendre des concepts comme la continuité et la différentiabilité à plus d'un niveau superficiel. Par conséquent, une véritable analyse est une condition préalable aux cours de programmation non linéaire.

Ma thèse porte sur les méthodes de résolution d'équations différentielles ordinaires. Les problèmes de convergence, en particulier des choses comme «si je réduis ma tolérance aux erreurs locale, alors ma solution numérique calculée s'approche de la vraie solution des équations que je résous» sont encore des problèmes qui nécessitent une analyse réelle. Développer la théorie des problèmes de convergence m'a obligé (contre la volonté de mes conseillers) à prendre deux semestres d'analyse réelle. (Cela a payé avec quelques manuscrits.)

Cependant, je sais qu'il y a des gens qui survivent très bien dans les méthodes numériques et le HPC sans prendre de cours de mathématiques pures. Cela dépend vraiment de la niche que vous souhaitez occuper.

Si vous souhaitez développer de nouvelles méthodes, les cours théoriques sont utiles. Les cours de théorie sont également utiles pour l'alphabétisation mathématique générale; lire des documents mathématiques devient beaucoup, beaucoup plus facile.

Si vous souhaitez appliquer des méthodes numériques spécifiques à des problèmes, les classes de méthodes numériques sont plus utiles. Je crois que c'est de cette perspective que vient l'aeismail, et c'est une situation plus courante pour les ingénieurs. (Avertissement: nous nous connaissons et sommes diplômés du même département.)

Quant au HPC, j'ai l'impression que l'expérience est le meilleur professeur. J'ai suivi un cours de programmation parallèle, et c'était un peu utile, mais le message principal de la classe était d'essayer des choses et de voir si elles fonctionnaient. Si c'est important pour votre recherche de thèse, vous aurez de l'expérience en HPC. Si ce n'est pas le cas, vous ne le ferez pas, et cela n'aura probablement aucune importance jusqu'à ce que vous vouliez changer de vitesse et résoudre les problèmes de HPC. Ma thèse n'a pas été particulièrement chargée en HPC, du moins en ce qui concerne mon programme, donc je n'ai pas eu besoin d'acquérir cet ensemble de compétences.

Pour conclure, vous devriez probablement vous concentrer sur la mise en contexte des questions liées à votre problème de thèse, garder à l'esprit ce que vous pensez que vous voulez faire à l'avenir et décider du contexte général et large dont vous avez besoin pour communiquer avec d'autres chercheurs du communauté que vous souhaitez rejoindre. Votre doctorat va être l'une des dernières opportunités pour vous de prendre des cours, et si vous pensez que vous voulez apprendre la théorie des mathématiques (ou n'importe quel sujet, vraiment), l'apprendre par vous-même est considérablement plus difficile sans établir une sorte de base la compétence d'abord.

Geoff Oxberry
la source
Point de vue intéressant - et l'exemple est une demande reconventionnelle utile à mon propos. (Je dois souligner que je suis sur le point de donner quelques conférences sur l'optimisation où je laisse explicitement de côté les preuves de convergence, car l'accent est mis sur les méthodes numériques, et il n'y a vraiment pas assez de temps pour "prouver" les choses si Je dois introduire une analyse réelle dans le cadre de la négociation.)
aeismail
2
Je recommande de suivre suffisamment de cours de mathématiques pour pouvoir comprendre les théorèmes et (si nécessaire, avec effort) les preuves apparaissant dans des revues comme SISC, J. Scientific Computing, CMAME, etc. Cela signifie probablement un cours d'analyse réelle, un cours de PDE abstrait théorie, un cours d'analyse numérique générale et un cours de discrétisation pour les équations aux dérivées partielles. Dans mon expérience personnelle, l'auto-apprentissage, fouiller dans les bibliothèques open source pour comprendre pourquoi des choix ont été faits, et surtout, devenir un développeur d'une telle bibliothèque (PETSc) était inestimable pour apprendre le HPC.
Jed Brown
Jed: Malheureusement, cela n'est pas possible dans le contexte de nombreux étudiants diplômés. Je sais que je n'aurais pas pu suivre tous ces cours, ainsi que tous les cours de sciences physiques dont j'avais besoin pour mon domaine de recherche direct. Alors, comment peut-on équilibrer cela - en particulier dans le contexte d'avoir un conseiller qui ne veut peut-être pas qu'un étudiant soit inscrit (ou assis) à de nombreux cours?
aeismail
@aeismail: Je l'ai vu comme un investissement dans la carrière, et il y a encore des lacunes à combler. Si c'est important, vous trouvez le temps de le faire. (Comme je l'ai dit, je l'ai fait contre la volonté de mes conseillers, et je me suis retrouvé avec une approche qui commence à résoudre le type de problèmes qu'ils ont dit vouloir résoudre au cours des 10 dernières années.) Cela dit, il est certainement difficile de trouver le temps, et il est difficile de trouver des conseillers qui sont favorables quand il y a tellement de pression pour publier. Il est également difficile si les conseillers ne sont pas en science informatique (ou s'ils ont des idées différentes de ce que vous faites).
Geoff Oxberry
12

HPC est un mélange de mathématiques, de calcul, d'informatique et d'applications. Vous devez être en mesure de les comprendre tous pour vraiment réussir à long terme. Cependant, vous n'avez pas nécessairement besoin d'atteindre le même niveau de compétence dans chacun d'eux.

Dans l'argument calcul versus mathématiques, pour un ingénieur, je dirais que les problèmes d'implémentation numérique sont plus importants au début. Si vous attendez d'avoir appris la théorie mathématique, puis commencez la mise en œuvre, vous pouvez passer beaucoup de temps à travailler sur des choses qui, sans aucun doute utiles, peuvent ne pas avoir d'impact direct sur votre recherche de thèse.

Donc, je pencherais pour comprendre les aspects informatiques au début, puis pour revenir en arrière et remplir les trous dans la théorie mathématique. Les problèmes matériels peuvent également être appris - mais une grande partie de la façon dont cela affecte les logiciels dépendra également de la plate-forme, donc encore une fois, ce n'est peut-être pas le premier point à votre ordre du jour.

D'autres peuvent bien sûr être en désaccord avec moi; comme vous l'avez dit, il s'agit davantage d'une opinion que d'une question factuelle.

aeismail
la source
9

Suivez autant de cours que possible dans les deux. Je l'ai fait et je ne le regrette pas.

En supposant que vous êtes intéressé par une carrière de chercheur, vous pouvez réussir avec n'importe quel mélange des deux. Trouvez des collaborateurs dont les connaissances complètent les vôtres. Je connais une quantité importante de mathématiques en ce qui concerne la précision et la stabilité des méthodes numériques, mais beaucoup moins sur le HPC. J'ai des collaborateurs qui connaissent très bien le HPC, donc en travaillant ensemble, nous pouvons faire fonctionner des méthodes numériques innovantes sur de grandes machines. Je fais le calcul et ils font le calcul, pour la plupart.

Cela dit, je pense que les mathématiques

  • est plus fondamental
  • est plus difficile à apprendre
  • reste pertinent pour une période plus longue

alors que les sujets HPC

  • changer plus rapidement
  • peut être ramassé plus facilement par vous-même
  • sont généralement moins utiles et plus spécifiques aux problèmes / applications / machines

Il s'agit d'une généralisation excessive qui attirera certainement des commentaires divergents. Mais je pense qu'il y a du vrai.

David Ketcheson
la source
Merci beaucoup pour toutes vos réponses. Considérant tout, parmi les 3 piliers du CSE (Mathématiques Numériques, HPC et Applications à la Science / Ingénierie). Je m'intéresse à tous, mais je me détournais des mathématiques parce que je ne pouvais pas bien suivre les épreuves et les documents. En me concentrant sur l'analyse réelle, l'algèbre linéaire et les méthodes numériques maintenant, je pense que je vais me préparer à tout. Mon conseiller a dit que le niveau de calcul pur que l'on comprend est directement proportionnel au niveau d'appréciation de n'importe quel domaine appliqué. Alors que je (re) lis le Calcul après des années d'Engg, je suis convaincu de l'aphorisme.
Enquête du
6

Je suis d'accord avec aeismail et Oxberry. J'ai décidé d'écrire une réponse parce que vous semblez être confronté aux mêmes questions auxquelles j'essayais de trouver une réponse l'année dernière. Je me suis également spécialisé en génie mécanique (et je détestais ça, en particulier la mécanique des solides), j'ai passé beaucoup de temps à travailler avec des méthodes numériques en CFD ou en optimisation. Maintenant, je fais ma maîtrise en mathématiques appliquées et sciences informatiques. De mon point de vue, vous devez d'abord décider de ce que vous voulez faire à l'avenir. Si vous souhaitez vous lancer dans la modélisation ou le développement de méthodes numériques, vous devez absolument vous orienter vers les mathématiques. J'ai passé deux ans à travailler avec les méthodes des volumes finis et des éléments finis sans connaître la base profonde et maintenant que je prends des cours de mathématiques appliquées, tout cela a beaucoup plus de sens pour moi. Je me rends compte comment les méthodes fonctionnent exactement et je ne marche plus aveuglément, je fais simplement des expériences avec tout. Cela économise beaucoup de temps et d'efforts. Mais si vous décidez de vous lancer dans le développement de logiciels et de sujets connexes, vous pouvez vous concentrer sur la partie HPC. D'après mon expérience, il existe de nombreux packages optimisés et prêts à l'emploi pour de nombreuses applications numériques. Ce ne sera donc pas la meilleure idée pour moi de passer beaucoup de temps à développer mon propre logiciel, j'ai donc décidé de travailler davantage sur la partie mathématique.

bamdadhosseini
la source
1

Je ne crois pas à une dichotomie théorie / application, mais il est également important d'aborder les domaines d'une manière qui n'est pas complètement hors contexte. Comprendre la théorie, je pense, vous donne une intuition générale sur le problème qui est très précieuse car elle vous évite d'avoir à vous concentrer sur le béton après le béton (c'est-à-dire une mise en œuvre particulière contre une autre), et vous permet de voir la situation dans son ensemble. Cette compréhension ne vient cependant pas d'un vide, et vous ne pouvez pas COMMENCER à ce niveau .. ce n'est pas ainsi que fonctionne le cerveau. Vous ne pouvez pas arriver au concept d'une forêt sans avoir jamais vu un arbre!

Cela ne veut pas dire non plus que la théorie joue un rôle subalterne dans cette question. C'est dire que la compréhension théorique fournit une économie mentale significative quand on considère une classe de problèmes, mais elle ne peut exister sans les bétons qui la conduisent (au moins dans les théories computationnelles).

Donc, pour répondre à votre question: si tout ce qui vous intéresse, c'est l'implémentation, c'est le résultat, mais pas pour améliorer / modifier cette implémentation, la théorie ne sera pas si importante. Si toutefois vous souhaitez produire le vôtre, vous êtes désavantagé par rapport à ceux qui comprennent mieux la théorie. À moins bien sûr que vous ne produisiez le vôtre au fil des ans, il se trouve que c'est mieux :)

Reid.Atcheson
la source