集中精力学习数学或计算是否更可取?


11

在研究Krylov子空间方法的同时,我可以选择探索HPC背后的数学或计算理论(硬件,OS,编译器等)领先一步。目前,我知道,这两个足以只是通过获得。例如,我知道如何推导CG方程和迭代方法的基础,但是对于细节和诸如Preconditioners和Convergence之类的更复杂的东西我一无所知。同样,我知道有限元方法的基础(弱形式,非弱形式,诸如Codomain和Galerkin之类的东西),但不知道其深度。在计算方面,我知道如何以所有可能的语言进行串行编码,并且可以很好地使用OpenMP和MPI。我不太了解硬件和缓存。

我的问题是:一个人应该专注于什么:数学或计算?它们在HPC中密不可分吗?是否建议一个人了解一个而不是另一个?

编辑:我目前主修机械工程(我很遗憾),并且有大量的工程和计算课程(流体,传热等)。我今年将加入HPC研究生院,在开始研究生学习之前,我想加强一些方面(数学/比较/混合)。我同样喜欢数学和数学(因此“尽享更多乐趣”是多余的)。

Answers:


10

我喜欢aeismail的回答,但我将提供另一种观点。

在优化中,如果不了解实际分析就不可能真正学习该领域。甚至在解决数值问题之前,您还需要了解序列收敛的概念,因为您将在类中证明算法收敛。您将不仅需要从表面上理解连续性和可微性等概念。因此,真正的分析是非线性编程课程的前提。

本文涉及求解常微分方程的方法。收敛问题,特别是诸如“如果我降低局部误差容限,那么我计算出的数值解就会接近我正在求解的方程的真实解”之类的问题,又是需要进行实际分析的问题。为了发展关于收敛问题的理论,我(违背我的顾问的意愿)要求我接受两个学期的真实分析。(它得到了一些手稿。)

但是,我知道有些人可以很好地在数值方法和HPC中生存,而无需参加纯数学课程。这实际上取决于您要占据的利基市场。

如果您想开发新方法,那么理论课将很有帮助。理论课也有助于一般的数学素养;阅读数学论文变得非常容易。

如果要对问题应用特定的数值方法,则数值方法类会更有帮助。我相信,这就是aeismail的来历,这对于工程师来说是很常见的情况。(免责声明:我们彼此认识,并且毕业于同一部门。)

至于HPC,我得到的印象是经验是最好的老师。我参加了并行编程课程,虽然它有点用处,但该类的主要信息是尝试尝试并查看它们是否起作用。如果这对您的论文研究很重要,那么您将获得HPC的经验。如果不是这样,您将不会,并且在您想要换档并解决HPC问题之前可能不会有什么关系。至少就我的编程而言,我的论文并不是特别重于HPC,因此我不需要掌握这套技能。

最后,您可能应该集中精力获取与论文问题相关的背景知识,牢记您将来想做的事情,并确定与该领域其他研究人员进行交流时需要具备的广泛的一般背景知识。您想加入的社区。博士学位将是您参加课程的最后机会之一,并且,如果您认为自己想学习数学理论(或者真的是任何学科),那么不建立某种基础知识就很难自己学习。熟练第一。


有趣的观点—这个例子对我的观点是一个有用的反驳。(我应该指出,我将在优化方面进行一些讲座,在这里我明确地省略了收敛性的证明,因为重点是数值方法,并且如果没有条件的话,实际上没有足够的时间来“证明”事物。我必须将实际分析作为讨价还价的一部分。)
aeismail 2012年

2
我建议选修足够的数学课程,以便能够理解定理和(必要时,需要努力地)在SISC,J。Scientific Computing,CMAME等期刊上出现的证明。这可能意味着一门真正的分析课程,一门抽象的PDE课程理论,一般数值分析课程和偏微分方程离散化课程。以我的个人经验,进行自学,深入研究开源库以了解为什么做出选择,最重要的是,成为这样一个库(PETSc)的开发者对于学习HPC至关重要。
杰德·布朗

杰德:可悲的是,在许多研究生的背景下这是不可能的。我知道我不可能修完所有这些课程,再加上我直接研究领域所需的所有物理科学课程。那么,如何在一个不希望学生参加(或参加)很多课程的导师的情况下(特别是在有一名导师的情况下)取得平衡呢?
aeismail 2012年

@aeismail:我认为这是对职业的投资,但仍然需要填补空白。如果重要的话,您会发现时间。(就像我说的那样,我是按照我的顾问的意愿这样做的,最终得到了一种方法,该方法开始解决了他们过去十年来想要解决的问题类型。)也就是说,绝对很难找到时间,当发布压力很大时,很难找到支持的顾问。如果顾问不在计算科学领域(或者他们对概念的理解与您不同,那么也很难)。
Geoff Oxberry 2012年

12

HPC融合了数学,计算,计算机科学和应用程序。您需要能够理解所有这些因素,才能长期成功。但是,您不一定需要在所有这些方面都达到相同的水平。

在计算与数学的争论中,对于工程师而言,我认为数字实现问题首先更为重要。如果您等到学习数学理论然后开始实施,您可能会花费大量时间来研究虽然无疑有用但不会直接影响您论文研究的事物。

因此,我倾向于先了解计算方面,然后再回过头来填补数学理论中的漏洞。也可以学习硬件问题,但是很多影响软件的方式也将取决于平台,因此,它又可能不是您议程上的头等大事。

其他人当然可能不同意我的看法。如您所说,这更多的是观点而非事实问题。


9

两者都选修尽可能多的课程。我做到了,我不后悔。

假设您对研究职业感兴趣,那么将两者结合起来就可以成功。寻找知识互补的合作者。我知道很多数学,因为它与数值方法的准确性和稳定性有关,而对HPC的了解则少得多。我有一些非常了解HPC的合作者,因此我们可以通过合作获得在大型计算机上运行的创新数值方法。我做数学,大部分时间都在做计算。

也就是说,我认为数学

  • 更根本
  • 学习更具挑战性
  • 在更长的时间内保持相关性

HPC主题

  • 变化更快
  • 可以自己轻松拾起
  • 通常不太有用,而更多的问题/应用程序/机器特定

这太笼统了,肯定会引起不同意见。但我认为这是事实。


非常感谢您的所有回答。考虑CSE的三大支柱(数值数学,HPC和科学/工程应用)。我对所有这些都感兴趣,但是对数学不满意,因为我不能很好地遵循证明和论文。现在,通过专注于实数分析,线性代数和数值方法,我想我会为所有事情做好准备。我的顾问说,人们所理解的纯微积分水平与任何应用领域的欣赏水平都成正比。恩格(Engg)多年后,当我(重新)阅读微积分时,我深信这种格言。
Inquest 2012年

6

我同意aeismail和Oxberry。我决定写一个答案,因为您似乎面临着与去年试图找到答案相同的问题。我还主修机械工程(并讨厌它,特别是固体力学),我花了很多时间在CFD或优化中使用数值方法。现在,我正在攻读应用数学和计算科学专业的硕士学位。从我的角度来看,您首先需要确定将来要做什么。如果您想进行数值方法的建模或开发,那么您绝对应该转向数学。我花了两年的时间来研究有限体积和有限元方法,却不了解其深层基础,现在我正在上应用数学课程,这对我来说意义更大。我意识到这些方法是如何工作的,我不再盲目地尝试一切。这样可以节省大量时间和精力。但是,如果您决定要开发软件和相关主题,那么您可能希望专注于HPC部分。以我的经验,有很多软件包已经过优化,可以用于许多数值应用程序。因此,花大量时间开发自己的软件对我来说不是最好的主意,因此我决定在数学部分上投入更多精力。


1

我不相信理论/应用二分法,但是以不完全脱离上下文的方式来处理字段也很重要。我认为理解理论为您提供了有关该问题的一般直觉,这非常有价值,因为它使您不必一头再一头地专注于具体问题(例如,一个特定的实现对另一个实现),并让您纵观全局。但是,这种理解并不是凭空产生的,并且您不能从这个水平开始。这不是大脑的工作方式。没有见过树,就无法达到森林的概念!

这也不是说理论在这个问题上也起着从属的作用。可以说,在考虑一类问题时,理论理解为人们提供了重要的思想经济学,但没有驱动它的具体条件(至少在计算理论中),它就不可能存在。

因此,请回答您的问题:如果您只对实现感兴趣,那就是结果,而不是改进/更改此实现,那么理论就不会那么重要。但是,如果您希望自己生产,那么与对理论有更好了解的人相比,您处于竞争劣势。当然,除非您多年来生产出自己的产品,否则它会更好:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.