É preferível se concentrar em estudar matemática ou computação?

11

Simultaneamente à minha pesquisa sobre os métodos do subespaço de Krylov, tenho a opção de explorar a matemática por trás do HPC um passo à frente ou a teoria da computação (hardware, SO, compiladores etc.). Atualmente, eu sei que tanto o suficiente para apenas sobreviver. Por exemplo, eu sei como derivar as equações para CG e os conceitos básicos de métodos iterativos, mas não tenho noção dos detalhes e coisas mais complicadas, como Preconditioners e Convergence. Da mesma forma, eu sei o básico do Método dos Elementos Finitos (Forma Fraca, Forma Não Fraca, coisas como Codomain e Galerkin e outras), mas não conhecerei as profundezas dela. Na frente computacional, sei codificar serialmente em todos os idiomas possíveis e posso usar o OpenMP e o MPI suficientemente bem. Eu não entendo hardware e cache muito bem.

Minha pergunta é: Em que devemos nos concentrar: Matemática ou Computação? Eles são inseparáveis ​​no HPC? É recomendado que um aprenda sobre um e não o outro?

EDIT: Atualmente, estou me formando em Engenharia Mecânica (do qual me arrependo) e tenho vários cursos de engenharia e computação (fluidos, transferência de calor e outros). Eu vou ingressar na escola de pós-graduação da HPC este ano e quero fortalecer alguns aspectos (Matemática / Comp / Híbrido) antes de começar meus estudos de graduação. Gosto de matemática e comp igualmente (por isso o "Faça o que você mais gosta" é redundante).

Inquérito
fonte

Respostas:

10

Gosto da resposta do e-mail, mas vou fornecer uma perspectiva alternativa.

Na otimização, é impossível aprender realmente o campo sem entender a análise real. Mesmo antes de abordar questões numéricas, é necessário entender noções de convergência de seqüências, porque você vai provar em classes que os algoritmos convergem. Você terá que entender conceitos como continuidade e diferenciabilidade em mais do que um nível superficial. Consequentemente, a análise real é um pré-requisito para os cursos de programação não linear.

Minha tese se refere a métodos para resolver equações diferenciais ordinárias. Problemas de convergência, especificamente coisas como "se eu reduzir minha tolerância a erros local, minha solução numérica calculada se aproxima da verdadeira solução das equações que estou resolvendo" são novamente problemas que requerem análise real. O desenvolvimento da teoria para questões de convergência exigiu que eu (contra os desejos de meus consultores) fizesse dois semestres de análise real. (Valeu a pena com alguns manuscritos.)

No entanto, eu sei que existem pessoas por aí que sobrevivem muito bem em métodos numéricos e HPC sem ter aulas de matemática pura. Realmente depende do nicho que você deseja ocupar.

Se você deseja desenvolver novos métodos, as aulas teóricas são úteis. As aulas de teoria também são úteis para a alfabetização matemática geral; ler documentos de matemática se torna muito, muito mais fácil.

Se você deseja aplicar métodos numéricos específicos a problemas, as classes de métodos numéricos são mais úteis. Acredito que essa perspectiva é de onde vem o eeismail e é uma situação mais comum para os engenheiros. (Aviso: nos conhecemos e nos graduamos no mesmo departamento.)

Quanto ao HPC, a impressão que tive é que a experiência é a melhor professora. Fiz um curso de programação paralela e foi um pouco útil, mas a principal mensagem da turma era tentar as coisas e ver se elas funcionavam. Se for importante para a sua pesquisa de tese, você terá experiência em HPC. Se não for, você não o fará e provavelmente não terá importância até que você queira trocar de marcha e resolver problemas de HPC. Minha tese não foi especialmente intensa em termos de HPC, pelo menos em termos do que eu programa, por isso não precisei adquirir esse conjunto de habilidades.

Para finalizar, você provavelmente deve se concentrar em obter informações sobre questões relacionadas ao seu problema de tese, ter em mente o que acha que deseja fazer no futuro e decidir qual histórico geral e amplo você precisa para se comunicar com outros pesquisadores na área. comunidade em que você gostaria de participar. Seu doutorado será uma das últimas oportunidades para você ter aulas, e se você acha que deseja aprender teoria matemática (ou qualquer outro assunto, na verdade), aprendê-la por conta própria é consideravelmente mais difícil sem estabelecer algum tipo de instrução básica. proficiência primeiro.

Geoff Oxberry
fonte
Perspectiva interessante - e o exemplo é uma reconvenção útil ao meu ponto. (Devo salientar que estou prestes a dar algumas palestras sobre otimização, onde deixo explicitamente provas de convergência, porque o foco está nos métodos numéricos e realmente não há tempo suficiente para "provar" as coisas se Eu tenho que apresentar uma análise real como parte da barganha.)
aeismail
2
Eu recomendo fazer cursos de matemática suficientes para poder entender teoremas e (quando necessário, com esforço) provas que aparecem em periódicos como SISC, J. Scientific Computing, CMAME, etc. Isso provavelmente significa um curso em análise real, um curso no PDE abstrato teoria, um curso de análise numérica geral e um curso de discretizações para equações diferenciais parciais. Na minha experiência pessoal, o auto-estudo, vasculhando as bibliotecas de código-fonte aberto para entender por que as escolhas foram feitas e, o mais importante, tornar-se desenvolvedor de uma biblioteca desse tipo (PETSc) foram inestimáveis ​​para o aprendizado da HPC.
precisa
Jed: Infelizmente, isso não é possível no contexto de muitos estudantes de pós-graduação. Eu sei que não teria sido capaz de fazer todos esses cursos, além de todos os cursos de ciências físicas que eu precisava para o meu campo direto de pesquisa. Então, como alguém equilibra isso - principalmente no contexto de ter um orientador que pode não querer que um aluno se inscreva em (ou participe de) de muitos cursos?
precisa saber é
@aeismail: eu vi isso como um investimento na carreira, e ainda há lacunas que preciso preencher. Se é importante, você encontra tempo para fazê-lo. (Como eu disse, fiz isso contra a vontade dos meus consultores e acabei com uma abordagem que começa a resolver o tipo de problemas que eles disseram que queriam resolver nos últimos 10 anos.) Dito isso, é definitivamente difícil encontrar o e é difícil encontrar consultores que apóiem ​​quando há tanta pressão para publicar. Também é difícil se os consultores não estiverem na ciência da computação (ou tiverem idéias diferentes sobre o que é).
Geoff Oxberry
12

HPC é uma mistura de matemática, computação, ciência da computação e aplicativos. Você precisa entender todos eles para ter realmente sucesso a longo prazo. No entanto, você não precisa necessariamente atingir o mesmo nível de proficiência em todos eles.

No argumento de computação versus matemática, para um engenheiro, eu argumentaria que as questões de implementação numérica são mais importantes a princípio. Se você esperar até aprender a teoria matemática e começar a implementação, poderá passar um longo tempo trabalhando em coisas que, embora sem dúvida úteis, podem não afetar diretamente sua pesquisa de tese.

Então, eu me inclinaria a entender os aspectos computacionais primeiro e depois voltar e preencher os buracos na teoria matemática. Os problemas de hardware também podem ser aprendidos - mas muito de como isso afeta o software também depende da plataforma; portanto, novamente, pode não ser o primeiro item da sua agenda.

Outros podem, naturalmente, discordar de mim; como você afirmou, isso é mais uma peça de opinião do que uma questão de fato.

aeismail
fonte
9

Faça o máximo de cursos possível em ambos. Eu fiz e não me arrependo.

Supondo que você esteja interessado em uma carreira de pesquisa, pode ter sucesso com qualquer combinação dos dois. Encontre colaboradores cujo conhecimento complementa o seu. Conheço uma quantidade significativa de matemática no que se refere à precisão e estabilidade dos métodos numéricos, mas muito menos sobre o HPC. Eu tenho colaboradores que conhecem muito bem o HPC, portanto, trabalhando juntos, podemos obter métodos numéricos inovadores em grandes máquinas. Eu faço as contas e eles fazem o cálculo, na maior parte.

Dito isto, acho que a matemática

  • é mais fundamental
  • é mais desafiador para aprender
  • permanece relevante por um período mais longo

considerando que os tópicos de HPC

  • mude mais rapidamente
  • pode ser retirado mais facilmente por conta própria
  • geralmente são menos úteis e mais problemáticas / aplicativos / específicas da máquina

Essa é uma generalização excessiva e certamente atrairá comentários discordantes. Mas acho que há verdade nisso.

David Ketcheson
fonte
Muito obrigado por todas as suas respostas. Considerando tudo, entre os 3 pilares da CSE (Matemática Numérica, HPC e Aplicações à Ciência / Engenharia). Estou interessado em todos eles, mas evitei a matemática porque não consegui acompanhar bem as provas e os papéis. Concentrando-me agora em Análise Real, Álgebra Linear e Métodos Numéricos, acho que me prepararei para tudo. Meu orientador disse que o nível de cálculo puro que se entende é diretamente proporcional ao nível de apreciação de qualquer campo aplicado. Como (re) lendo Cálculo depois de anos de Engg, estou convencido do aforismo.
Inquérito
6

Eu concordo com o e-mail e com o Oxberry. Decidi escrever uma resposta porque você parece estar enfrentando as mesmas perguntas que eu estava tentando encontrar uma resposta no ano passado. Também me formei em engenharia mecânica (e odiava, especialmente mecânica sólida), passei muito tempo trabalhando com métodos numéricos em CFD ou otimização. Agora estou fazendo meu mestrado em Matemática Aplicada e Ciências da Computação. Do meu ponto de vista, primeiro você precisa decidir o que deseja fazer no futuro. Se você deseja entrar em modelagem ou desenvolvimento de métodos numéricos, definitivamente deve ir para a matemática. Passei dois anos trabalhando com os métodos de volume finito e elementos finitos sem conhecer a base profunda e agora que estou tendo aulas de matemática aplicada, tudo faz muito mais sentido para mim. Percebo como os métodos funcionam exatamente e não estou mais andando cegamente apenas experimentando tudo. Isso economiza muito tempo e esforço. Mas se você decidir desenvolver o software e tópicos relacionados, poderá se concentrar na parte do HPC. Na minha experiência, existem muitos pacotes otimizados e prontos para uso em muitos aplicativos numéricos. Portanto, não será a melhor ideia gastar muito tempo desenvolvendo meu próprio software, então decidi trabalhar mais na parte de matemática.

bamdadhosseini
fonte
1

Não acredito em uma dicotomia teoria / aplicação, mas também é importante abordar campos de uma maneira que não esteja completamente fora de contexto. Creio que entendo a teoria que fornece uma intuição geral sobre o problema que é muito valioso, pois impede que você tenha que se concentrar em concreto após concreto (ou seja, uma implementação em particular versus outra) e permite que você veja o cenário geral. Esse entendimento, no entanto, não surge do vácuo, e você não pode COMEÇAR nesse nível. Não é assim que o cérebro funciona. Você não pode chegar ao conceito de floresta sem nunca ter visto uma árvore!

Isso não quer dizer que a teoria também tenha um papel subserviente nessa questão. Quer dizer que o entendimento teórico fornece uma economia mental significativa ao considerar uma classe de problemas, mas ela não pode existir sem os concretos que a impulsionam (pelo menos nas teorias computacionais).

Então, para responder à sua pergunta: se tudo o que você está interessado é na implementação, esse é o resultado, mas não em melhorar / alterar essa implementação, a teoria não será tão importante. Se, no entanto, você deseja produzir o seu próprio, está em desvantagem competitiva com aqueles que entendem melhor a teoria. A menos, é claro, que você produza o seu próprio ao longo dos anos, que seja melhor :)

Reid.Atcheson
fonte