¿Es preferible concentrarse en estudiar matemáticas o computación?

11

Simultáneamente a mi investigación sobre los métodos del subespacio de Krylov, tengo la opción de explorar las matemáticas detrás de HPC un paso adelante o la teoría de la computación (hardware, sistema operativo, compiladores, etc.). Actualmente, sé tanto suficiente para simplemente sobrevivir. Por ejemplo, sé cómo derivar las ecuaciones para CG y los conceptos básicos de los métodos iterativos, pero no tengo idea de los detalles y cosas más complicadas como los preacondicionadores y la convergencia. Del mismo modo, conozco los conceptos básicos del método de elementos finitos (forma débil, forma no débil, cosas como Codomain y Galerkin y otras cosas), pero no sabré las profundidades del mismo. En el frente computacional, sé cómo codificar en serie en todos los idiomas posibles y puedo usar OpenMP y MPI lo suficientemente bien. No entiendo bien el hardware y el almacenamiento en caché.

Mi pregunta es: ¿En qué debería concentrarse uno: Matemáticas o Computación? ¿Son inseparables en HPC? ¿Se recomienda que uno aprenda sobre uno y no sobre el otro?

EDITAR: Actualmente me estoy especializando en Ingeniería Mecánica (lo cual lamento) y tengo toneladas de cursos en ingeniería y computación (fluidos, transferencia de calor, etc.). Me uniré a la escuela de posgrado para HPC este año y quiero fortalecer algunos aspectos (Matemáticas / Comp / Híbrido) antes de comenzar mis estudios de posgrado. Me gustan las matemáticas y la composición por igual (por lo que "Hacer lo que más disfrutas" es redundante).

Encuesta
fuente

Respuestas:

10

Me gusta la respuesta de aeismail, pero voy a proporcionar una perspectiva alternativa.

En la optimización, es imposible aprender realmente el campo sin comprender un análisis real. Incluso antes de abordar problemas numéricos, debe comprender las nociones de convergencia de secuencias, ya que va a demostrar en clases que los algoritmos convergen. Tendrá que comprender conceptos como continuidad y diferenciabilidad en un nivel más que superficial. En consecuencia, el análisis real es un requisito previo para los cursos de programación no lineal.

Mi tesis se relaciona con métodos para resolver ecuaciones diferenciales ordinarias. Los problemas de convergencia, específicamente cosas como "si reduzco mi tolerancia de error local, entonces mi solución numérica calculada se aproxima a la solución verdadera de las ecuaciones que estoy resolviendo" son nuevamente problemas que requieren un análisis real. Desarrollar la teoría de los problemas de convergencia me exigió (en contra de los deseos de mis asesores) tomar dos semestres de análisis real. (Valió la pena con un par de manuscritos).

Sin embargo, sé que hay personas que sobreviven bastante bien en métodos numéricos y HPC sin tomar clases de matemáticas puras. Realmente depende del nicho que quieras ocupar.

Si desea desarrollar nuevos métodos, entonces las clases de teoría son útiles. Las clases de teoría también son útiles para la alfabetización matemática general; leer documentos de matemáticas se vuelve mucho, mucho más fácil.

Si desea aplicar métodos numéricos específicos a los problemas, las clases de métodos numéricos son más útiles. Creo que esta perspectiva es de donde proviene el correo electrónico, y es una situación más común para los ingenieros. (Descargo de responsabilidad: nos conocemos y nos graduamos del mismo departamento).

En cuanto a HPC, la impresión que tengo es que la experiencia es la mejor maestra. Tomé un curso de programación paralela, y fue un poco útil, pero el mensaje principal de la clase fue probar cosas y ver si funcionaban. Si es importante para su investigación de tesis, obtendrá experiencia en HPC. Si no es así, no lo hará, y probablemente no importará hasta que desee cambiar de marcha y abordar los problemas de HPC. Mi tesis no ha sido especialmente pesada en HPC, al menos en términos de lo que programo, por lo que no he necesitado adquirir ese conjunto de habilidades.

Para concluir, probablemente debería concentrarse en obtener antecedentes en temas relacionados con su problema de tesis, tener en cuenta lo que cree que quiere hacer en el futuro y decidir qué antecedentes generales y generales necesita para comunicarse con otros investigadores en el comunidad a la que te gustaría unirte. Tu doctorado será una de las últimas oportunidades para que tomes clases, y si crees que quieres aprender teoría matemática (o cualquier materia, realmente), aprenderla por tu cuenta es considerablemente más difícil sin establecer algún tipo de base competencia primero.

Geoff Oxberry
fuente
Perspectiva interesante, y el ejemplo es una contrademanda útil para mi punto. (Debo señalar que estoy a punto de dar algunas conferencias sobre optimización en las que omito explícitamente pruebas de convergencia, porque el enfoque está en los métodos numéricos, y realmente no hay tiempo suficiente para "probar" las cosas si Tengo que presentar un análisis real como parte del trato.)
aeismail
2
Recomiendo tomar suficientes cursos de matemáticas para poder comprender teoremas y (cuando sea necesario, con esfuerzo) pruebas que aparecen en revistas como SISC, J. Scientific Computing, CMAME, etc. Esto probablemente significa un curso en análisis real, un curso en PDE abstracto teoría, un curso de análisis numérico general y un curso de discretizaciones para ecuaciones diferenciales parciales. En mi experiencia personal, el autoestudio, la búsqueda en bibliotecas de código abierto para comprender por qué se tomaron decisiones y, lo más importante, convertirse en desarrollador de dicha biblioteca (PETSc) fueron invaluables para aprender HPC.
Jed Brown
Jed: Lamentablemente, esto no es posible en el contexto de muchos estudiantes de posgrado. Sé que no habría podido tomar todos esos cursos, además de todos los cursos de ciencias físicas que necesitaba para mi campo de investigación directo. Entonces, ¿cómo se equilibra eso, particularmente en el contexto de tener un asesor que puede no querer que un estudiante se inscriba (o participe) en muchos cursos?
aeismail el
@aeismail: lo vi como una inversión en carrera, y todavía hay vacíos que necesito llenar. Si es importante, encuentra el tiempo para hacerlo. (Como dije, lo hice en contra de los deseos de mis asesores, y terminé con un enfoque que comienza a resolver el tipo de problemas que dijeron que querían resolver durante los últimos 10 años). Dicho esto, definitivamente es difícil encontrar el tiempo, y es difícil encontrar asesores que sean solidarios cuando hay tanta presión para publicar. También es difícil si los asesores no están en ciencias computacionales (o si tienen ideas diferentes sobre lo que es usted).
Geoff Oxberry
12

HPC es una combinación de matemáticas, computación, informática y aplicaciones. Debe ser capaz de comprenderlos a todos para ser verdaderamente exitoso a largo plazo. Sin embargo, no necesariamente necesita alcanzar el mismo nivel de competencia en todos ellos.

En el argumento de la computación versus las matemáticas, para un ingeniero, diría que los problemas de implementación numérica son más importantes al principio. Si espera hasta que haya aprendido la teoría matemática y luego comience la implementación, puede pasar mucho tiempo trabajando en cosas que, aunque sin duda útiles, pueden no afectar directamente su investigación de tesis.

Entonces, me inclinaría hacia la comprensión de los aspectos computacionales al principio, y luego regresaría y llenaría los agujeros en la teoría matemática. Los problemas de hardware también se pueden aprender, pero gran parte de cómo eso afecta al software también dependerá de la plataforma, por lo que, nuevamente, puede que no sea el primer elemento de su agenda.

Otros, por supuesto, pueden estar en desacuerdo conmigo; como usted dijo, esto es más una opinión que una pregunta objetiva.

aeismail
fuente
9

Toma tantos cursos como puedas en ambos. Lo hice, y no me arrepiento.

Suponiendo que esté interesado en una carrera de investigación, puede tener éxito con cualquier combinación de ambas. Encuentra colaboradores cuyo conocimiento complemente el tuyo. Sé una gran cantidad de matemáticas en lo que se refiere a la precisión y la estabilidad de los métodos numéricos, pero mucho menos sobre HPC. Tengo colaboradores que conocen muy bien HPC, por lo que trabajando juntos podemos obtener métodos numéricos innovadores que se ejecutan en máquinas grandes. Yo hago los cálculos y ellos hacen el cálculo, en su mayor parte.

Dicho eso, creo que las matemáticas

  • es más fundamental
  • es más difícil de aprender
  • sigue siendo relevante por un período de tiempo más largo

mientras que los temas de HPC

  • cambiar más rápidamente
  • se puede recoger más fácilmente por su cuenta
  • son menos útiles en general y más problemáticos / aplicaciones / máquinas

Esta es una sobregeneralización y seguramente atraerá comentarios en desacuerdo. Pero creo que hay verdad en ello.

David Ketcheson
fuente
Muchas gracias por todas sus respuestas. Considerando todo, entre los 3 pilares de CSE (Matemática numérica, HPC y Aplicaciones a la Ciencia / Ingeniería). Estoy interesado en todos ellos, pero evité las matemáticas porque no podía seguir bien las pruebas y los documentos. Al centrarme en el análisis real, el álgebra lineal y los métodos numéricos ahora, creo que me prepararé para todo. Mi asesor dijo que el nivel de cálculo puro que uno entiende es directamente proporcional al nivel de apreciación de cualquier campo aplicado. Como estoy (re) leyendo Cálculo después de años de Engg, estoy convencido del aforismo.
Consulta del
6

Estoy de acuerdo con aeismail y Oxberry. Decidí escribir una respuesta porque parece que estás enfrentando las mismas preguntas que estaba tratando de encontrar una respuesta el año pasado. También me especialicé en ingeniería mecánica (y la odié, especialmente la mecánica sólida), pasé mucho tiempo trabajando con métodos numéricos en CFD u optimización. Ahora estoy haciendo mi maestría en Matemática Aplicada y Ciencias Computacionales. Desde mi punto de vista, primero debe decidir qué quiere hacer en el futuro. Si quieres comenzar a modelar o desarrollar métodos numéricos, entonces definitivamente deberías ir a las matemáticas. Pasé dos años trabajando con métodos de Volumen Finito y Elementos Finitos sin conocer la base profunda y ahora que estoy tomando clases de matemática aplicada, todo tiene mucho más sentido para mí. Me doy cuenta de cómo funcionan exactamente los métodos y ya no estoy caminando ciegamente solo experimentando con todo. Ahorra mucho tiempo y esfuerzo. Pero si decide que desea dedicarse al desarrollo de software y temas relacionados, puede centrarse en la parte de HPC. En mi experiencia, hay muchos paquetes que están optimizados y listos para usar para muchas aplicaciones numéricas. Por lo tanto, no será la mejor idea para mí pasar mucho tiempo desarrollando mi propio software, así que decidí trabajar más en la parte matemática.

bamdadhosseini
fuente
1

No creo en una dicotomía teoría / aplicación, pero también es importante abordar los campos de una manera que no esté completamente fuera de contexto. Creo que la teoría de la comprensión le proporciona una intuición general sobre el problema que es muy valiosa, ya que le evita tener que centrarse en concreto después de concreto (es decir, una implementación en particular frente a otra), y le permite ver el panorama general. Sin embargo, esta comprensión no surge de un vacío, y no puedes COMENZAR a este nivel ... así no es como funciona el cerebro. ¡No se puede llegar al concepto de bosque sin haber visto un árbol!

Eso no quiere decir que la teoría también tenga un papel subordinado en esta pregunta. Es decir que la comprensión teórica proporciona una economía mental significativa cuando se considera una clase de problemas, pero no puede existir sin los concretos que lo impulsan (al menos en las teorías computacionales).

Entonces, para responder a su pregunta: si todo lo que le interesa es la implementación, ese es el resultado, pero no en mejorar / alterar esta implementación, la teoría no será tan importante. Sin embargo, si desea producir la suya, entonces está en desventaja competitiva con aquellos que entienden mejor la teoría. A menos que, por supuesto, produzcas el tuyo a lo largo de los años, eso es mejor :)

Reid.Atcheson
fuente