数学や計算の勉強に集中することが望ましいですか?


11

クリロフ部分空間法に関する私の研究と並行して、HPCの背後にある数学を一歩前進させるか、計算の理論(ハードウェア、OS、コンパイラなど)を探索するオプションがあります。現在、私は両方ともちょうど得るために十分に知っています。たとえば、CGの方程式と反復法の基本をどのように導出するかは知っていますが、詳細や、PreconditionersやConvergenceなどのより複雑なものについてはわかりません。同様に、有限要素法の基本(弱形式、非弱形式、コドメインやガラーキンなど)は知っていますが、その深さはわかりません。計算の面では、可能なすべての言語でシリアルにコーディングする方法を知っており、OpenMPとMPIを十分に使用できます。私はハードウェアとキャッシングをそれほどよく理解していません。

私の質問は次のとおりです。何に集中すべきか:数学または計算?それらはHPCで分離不可能ですか?一方について学習することを推奨しますが、他方については学習しませんか?

編集:私は現在機械工学を専攻しており(後悔しています)、工学と計算(流体、熱伝達など)のコースをたくさん持っています。私は今年HPCの大学院に入学する予定で、卒業研究を始める前に何らかの側面(Math / Comp / Hybrid)を強化したいと考えています。私は数学とコンプが同じように好きです(だから「もっと楽しむことをする」は冗長です)。

回答:


10

私はaeismailの答えが好きですが、別の視点を提供するつもりです。

最適化では、実際の分析を理解せずにフィールドを実際に学習することは不可能です。数値の問題に取り組む前であっても、アルゴリズムが収束することをクラスで証明するため、シーケンスの収束の概念を理解する必要があります。連続性や微分可能性などの概念を表面的なレベル以上に理解する必要があります。したがって、実際の分析は、非線形プログラミングのコースの前提条件です。

私の論文は、常微分方程式を解く方法に関するものです。収束の問題、特に「ローカルの誤差許容値を下げると、計算された数値解法が、解く方程式の真の解法に近づく」などの問題は、実際の分析を必要とする問題です。収束問題の理論を開発するために、私は(アドバイザーの希望に反して)2学期の実際の分析を行う必要がありました。(数本の原稿で報われました。)

しかし、純粋な数学の授業を受けなくても、数値計算法やHPCで非常にうまく生き残る人々がいることは知っています。それは本当にあなたが占有したいニッチに依存します。

新しいメソッドを開発する場合は、理論クラスが役立ちます。理論クラスは、一般的な数学的リテラシーにも役立ちます。数学の論文を読むのがずっと簡単になります。

特定の数値法を問題に適用したい場合は、数値法クラスがより役立ちます。この視点はaeismailの出所であり、エンジニアにとってより一般的な状況だと思います。(免責事項:私たちはお互いを知っており、同じ部門を卒業しました。)

HPCに関しては、経験が最高の教師であるという印象を受けました。私は並列プログラミングコースを受講しましたが、少し役立ちましたが、クラスの主なメッセージは、物事を試して、それらが機能するかどうかを確認することでした。論文の研究にとって重要な場合は、HPCの経験が得られます。そうでなければ、あなたは気にしません。そして、ギアを切り替えてHPCの問題に取り組むまで、それはおそらく重要ではないでしょう。私の論文は、少なくとも私がプログラムするものに関しては、特にHPCに重点を置いているわけではないので、そのスキルを習得する必要はありません。

最後に、論文の問題に関連する問題のバックグラウンドを取得することに集中し、将来何をしたいのかを念頭に置き、他の研究者とコミュニケーションするために必要な幅広い一般的なバックグラウンドを決定する必要があります参加したいコミュニティ。あなたの博士号は、あなたがクラスを受講する最後の機会の1つになります。数学理論(または実際に任意の科目)を学びたいと思う場合、何らかの基礎を確立せずに自分でそれを学ぶことはかなり困難です最初に習熟。


興味深い視点-そして、この例は私の主張に対する有益な反論です。(私は、収束の証明を明示的に除外する最適化に関するいくつかの講義を行おうとしていることを指摘する必要があります。なぜなら、焦点は数値的手法にあり、実際に物事を「証明」するのに十分な時間がないからです掘り出し物の一部として実際の分析を導入する必要があります。)
aeismail

2
SISC、J。Scientific Computing、CMAMEなどの雑誌に掲載されている定理と(必要に応じて)証明を理解できるように、十分な数の数学コースを受講することをお勧めします。理論、一般的な数値解析のコース、偏微分方程式の離散化のコース。私の個人的な経験では、自己学習、選択が行われた理由を理解するためにオープンソースライブラリを掘り下げ、そして最も重要なことに、そのようなライブラリ(PETSc)の開発者になることはHPCを学ぶために非常に貴重でした。
ジェドブラウン

Jed:悲しいことに、これは多くの大学院生の文脈では不可能です。これらすべてのコースに加えて、私の直接の研究分野に必要なすべての物理科学コースを受講することはできなかったでしょう。それでは、特に学生が多くのコースに登録する(または座る)ことを望まない可能性のあるアドバイザーがいるという状況において、それをどのようにバランスさせるのでしょうか?
aeismail

@aeismail:私はそれをキャリアへの投資と見なしましたが、まだ埋める必要があるギャップがあります。それが重要な場合、あなたはそれをする時間を見つけます。(私が言ったように、私はアドバイザーの希望に反して、過去10年間解決したいと言ったタイプの問題を解決し始めるアプローチになりました。)それは、それを見つけるのは間違いなく難しいです時間がかかり、公開するプレッシャーが非常に大きい場合に協力的なアドバイザーを見つけるのは困難です。また、アドバイザーが計算科学に属していない場合(または、アドバイザーがあなたとは違うものについて異なる考えを持っている場合)も困難です。
ジェフオックスベリー

12

HPCは、数学、計算、コンピューターサイエンス、およびアプリケーションの融合です。長期的に真に成功するには、それらすべてを理解できる必要があります。ただし、必ずしもすべてのレベルで同じレベルの習熟度を達成する必要はありません。

計算対数学の議論では、エンジニアにとって、最初は数値実装の問題がより重要であると主張します。数学的理論を学んでから実装を開始するまで待つと、間違いなく有用ではあるが、論文研究に直接影響を与えない可能性のある作業に長い時間を費やす可能性があります。

ですから、最初は計算の側面を理解し、次に戻って数学理論の穴を埋めることに傾倒したいと思います。ハードウェアの問題も学習できますが、それがソフトウェアに与える影響の多くはプラットフォームにも依存するため、やはり最初の項目ではない可能性があります。

他の人はもちろん私に反対するかもしれません。あなたが述べたように、これは事実上の質問というよりも意見の断片です。


9

両方でできるだけ多くのコースを受講してください。私はそれを後悔していません。

あなたが研究キャリアに興味を持っていると仮定すると、あなたは2つの任意の組み合わせで成功することができます。あなたの知識を補完する協力者を見つけましょう。数値計算法の精度と安定性に関連する数学のかなりの量を知っていますが、HPCについてはそれほど重要ではありません。HPCを非常によく知っている協力者がいるので、協力して大きな機械で革新的な数値計算法を実行できます。私はほとんどの場合、数学と計算を行います。

そうは言っても、数学は

  • より基本的です
  • 学ぶのがもっと難しい
  • 長期間にわたって関連性を維持

一方、HPCのトピック

  • より急速に変化する
  • 自分で簡単に拾うことができます
  • 一般的には有用性が低く、問題/アプリケーション/マシン固有です

これは過剰な一般化であり、意見の一致しないコメントを確実に引き付けるでしょう。しかし、私はそれに真実があると思います。


回答ありがとうございます。CSE(数値数学、HPC、および科学/工学への応用)の3つの柱の中で、すべてを考慮します。私はそれらのすべてに興味がありますが、証拠や論文をうまく追うことができなかったので、数学を避けました。現在、実分析、線形代数、数値法に焦点を当てることで、あらゆることに備えることができると思います。私のアドバイザーは、理解している純粋な微積分のレベルは、適用された分野の評価のレベルに正比例すると述べました。Enggの数年後に微積分学を(再)読んでいるので、私は格言を確信しています。
調査

6

私はaeismailとOxberryの両方に同意します。あなたが私が昨年の答えを見つけようとしていたのと同じ質問に直面しているようだから、私は答えを書くことにしました。私は機械工学も専攻し(そして特に固体力学が嫌いでした)、CFDの数値的手法や最適化に多くの時間を費やしました。現在、応用数学と計算科学の修士号を取得しています。私の観点から、あなたは最初にあなたが将来何をしたいかを決定する必要があります。モデリングや数値的手法の開発に取り掛かりたい場合は、間違いなく数学に向かうべきです。深い基礎を知らずに、有限体積法と有限要素法を使って2年を費やしましたが、応用数学のクラスを取っているので、すべてがより理にかなっています。メソッドが正確にどのように機能するかを理解し、すべてを試しているだけで盲目的に歩いていることはなくなりました。それは多くの時間と労力を節約します。しかし、ソフトウェアと関連トピックの開発に取り掛かることを決めた場合は、HPCの部分に集中したいかもしれません。私の経験では、最適化され、多くの数値アプリケーションにすぐに使用できる多くのパッケージがあります。したがって、自分のソフトウェアを開発するのに多くの時間を費やすことは私にとって最良のアイデアではないので、数学の部分でもっと取り組むことにしました。


1

私は理論と応用の二分法を信じていませんが、文脈から完全に外れることのない方法で分野にアプローチすることも重要です。理論を理解することで、具体的な具体例(特定の実装と別の実装)に集中する必要がなくなり、全体像を見ることができるため、非常に価値のある問題に関する一般的な直感が得られます。しかし、この理解は真空から生じるものではなく、このレベルで始めることはできません..それは脳の働き方ではありません。木を見たことがなければ、森の概念に到達することはできません!

それは、この問題で理論が重要な役割を果たすと言っているわけでもありません。ある種の問題を考えるとき、理論的理解は重要な精神的経済を提供すると言いますが、それを駆動するコンクリートなしでは存在できません(少なくとも計算理論では)。

したがって、あなたの質問に答えるために:もしあなたが興味があるのが実装であり、それが結果であるが、この実装の改善/変更ではないなら、理論はそれほど重要ではないでしょう。ただし、独自に作成したい場合は、理論をよりよく理解している人と競争上不利になります。もちろん、あなたが長年にわたって自分自身を作成し​​ない限り、それはより良いものです:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.