Желательно ли сосредоточиться на изучении математики или вычислений?

11

Одновременно с моим исследованием методов подпространства Крылова у меня есть возможность исследовать математику за HPC на шаг впереди или теорию вычислений (аппаратные средства, ОС, компиляторы и т. Д.). В настоящее время я знаю и то, и другое, чтобы просто обойтись. Например, я знаю, как вывести уравнения для компьютерной графики и основы итерационных методов, но я не в курсе деталей и более сложных вещей, таких как Preconditioners и Convergence. Точно так же я знаю основы метода конечных элементов (слабая форма, неслабая форма, такие вещи, как Codomain, Galerkin и прочее), но не буду знать всю глубину этого. В области вычислений я знаю, как последовательно кодировать на всех возможных языках, и могу достаточно хорошо использовать OpenMP и MPI. Я не очень хорошо разбираюсь в железе и кешировании.

Мой вопрос: на чем следует сосредоточиться: математике или вычислениям? Они неразделимы в HPC? Рекомендуется ли одному изучать одно, а не другое?

РЕДАКТИРОВАТЬ: Я в настоящее время специализируюсь на машиностроении (о чем я сожалею) и у меня есть тонны курсов в области машиностроения и вычислительной техники (жидкости, теплообмен и т. Д.). В этом году я буду поступать в аспирантуру HPC и хочу усилить некоторые аспекты (Math / Comp / Hybrid), прежде чем начать обучение в аспирантуре. Я одинаково люблю математику и комп (так что «Делай то, что тебе нравится больше» излишне).

расследование
источник

Ответы:

10

Мне нравится ответ Aeismail, но я собираюсь предоставить альтернативную точку зрения.

При оптимизации невозможно по-настоящему изучить поле, не разбираясь в реальном анализе. Еще до того, как вы приступите к решению численных задач, вам необходимо понять понятия сходимости последовательностей, потому что вы собираетесь доказать в классах, что алгоритмы сходятся. Вам нужно понимать такие понятия, как преемственность и дифференцируемость, более чем на поверхностном уровне. Следовательно, реальный анализ является обязательным условием для курсов по нелинейному программированию.

Моя диссертация относится к методам решения обыкновенных дифференциальных уравнений. Проблемы сходимости, а именно такие вещи, как «если я уменьшу свою локальную устойчивость к ошибкам, то мое вычисленное числовое решение приближается к истинному решению уравнений, которые я решаю», снова являются проблемами, которые требуют реального анализа. Чтобы развить теорию проблем конвергенции, я (вопреки желанию моих консультантов) потребовал провести два семестра реального анализа. (Это окупилось парой рукописей.)

Тем не менее, я знаю, что есть люди, которые неплохо выживают в численных методах и HPC, не посещая чистые уроки математики. Это действительно зависит от той ниши, которую вы хотите занять.

Если вы хотите разработать новые методы, то теоретические занятия полезны. Теоретические занятия также полезны для общей математической грамотности; чтение математических работ становится намного, намного легче.

Если вы хотите применить конкретные численные методы к задачам, классы численных методов более полезны. Я полагаю, что именно с этой точки зрения приходит aeismail, и это более распространенная ситуация для инженеров. (Отказ от ответственности: мы знакомы и закончили тот же факультет.)

Что касается HPC, у меня сложилось впечатление, что опыт - лучший учитель. Я прошел курс параллельного программирования, и это было немного полезно, но главное послание класса состояло в том, чтобы попробовать что-то и посмотреть, сработали ли они. Если это важно для вашей диссертации, вы получите опыт работы в HPC. Если это не так, вы не будете, и это, вероятно, не будет иметь значения, пока вы не захотите переключить передачи и решить проблемы HPC. Мой тезис не был особенно высокопроизводительным, хотя бы с точки зрения того, что я программирую, поэтому мне не нужно было приобретать этот набор навыков.

Чтобы подвести итоги, вам, вероятно, следует сосредоточиться на изучении вопросов, связанных с вашей диссертационной задачей, помнить о том, что, по вашему мнению, вы хотите сделать в будущем, и решить, какие общие, общие сведения вам нужны для общения с другими исследователями в этой области. сообщество, к которому вы хотите присоединиться Ваша докторская степень станет одной из последних возможностей для вас посещать занятия, и если вы думаете, что действительно хотите изучать математическую теорию (или любой предмет, действительно), изучать ее самостоятельно намного сложнее, не устанавливая какой-то базовый мастерство в первую очередь.

Джефф Оксберри
источник
Интересная перспектива - и пример - полезный встречный иск к моей точке зрения. (Следует отметить, что я собираюсь дать несколько лекций по оптимизации, где я явно опускаю доказательства сходимости, потому что основное внимание уделяется численным методам, и на самом деле не хватает времени, чтобы «доказать» вещи, если Я должен представить реальный анализ как часть сделки.)
aeismail
2
Я рекомендую пройти достаточное количество курсов по математике, чтобы понимать теоремы и (при необходимости, с усилиями) доказательства, появляющиеся в журналах, таких как SISC, J. Scientific Computing, CMAME и т. Д. Это, вероятно, означает курс по реальному анализу, курс по абстрактному PDE теория, курс по общему численному анализу и курс по дискретизации для уравнений с частными производными. По моему личному опыту, самообучение, копаться в библиотеках с открытым исходным кодом, чтобы понять, почему был сделан выбор, и, самое главное, стать разработчиком такой библиотеки (PETSc), были неоценимы для изучения HPC.
Джед Браун
Джед: К сожалению, это невозможно в контексте многих аспирантов. Я знаю, что не смог бы пройти все эти курсы, а также все курсы по физическим наукам, которые были необходимы для моей непосредственной области исследований. Так как же это уравновешивать, особенно в контексте наличия консультанта, который может не захотеть, чтобы учащийся был зачислен (или сидит) на большом количестве курсов?
Aeismail
@aeismail: я рассматривал это как инвестиции в карьеру, и мне все еще нужно заполнить пробелы. Если это важно, вы найдете время, чтобы сделать это. (Как я уже сказал, я сделал это вопреки желанию моих консультантов, и в итоге получил подход, который начинает решать проблемы, которые, по их словам, они хотели решить в течение последних 10 лет.) Тем не менее, определенно трудно найти время, и трудно найти консультантов, которые бы поддержали вас, когда издавалось так много давления. Также трудно, если советники не занимаются вычислительной наукой (или у них разные представления о том, что это такое, чем вы).
Джефф Оксберри
12

HPC - это смесь математики, вычислений, информатики и приложений. Вы должны быть в состоянии понять их все, чтобы быть по-настоящему успешным в долгосрочной перспективе. Тем не менее, вам не обязательно достигать одинакового уровня мастерства во всех из них.

В аргументе «вычисление против математики» для инженера я бы сказал, что вопросы численной реализации на первый взгляд важнее. Если вы подождете, пока не изучите математическую теорию, а затем начнете реализацию, вы можете потратить много времени на работу над вещами, которые, без сомнения, полезны, могут напрямую не повлиять на исследование вашей диссертации.

Итак, я сначала склонялся к пониманию вычислительных аспектов, а затем возвращался назад и заполнял пробелы в математической теории. Проблемы с оборудованием также могут быть изучены, но многое из того, как это влияет на программное обеспечение, также будет зависеть от платформы, поэтому, опять же, это может быть не первым пунктом вашей повестки дня.

Другие могут, конечно, не согласиться со мной; как вы заявили, это скорее вопрос мнения, чем фактический вопрос.

aeismail
источник
9

Пройдите столько курсов, сколько сможете в обоих. Я сделал, и я не жалею об этом.

Предполагая, что вы заинтересованы в исследовательской карьере, вы можете добиться успеха с любым сочетанием этих двух факторов. Найдите сотрудников, чьи знания дополняют ваши. Я знаю значительное количество математики, поскольку она касается точности и стабильности численных методов, но гораздо меньше о HPC. У меня есть сотрудники, которые очень хорошо знают HPC, поэтому работая вместе, мы можем использовать инновационные численные методы, работающие на больших машинах. Я делаю математику, а они делают вычисления, по большей части.

Тем не менее, я думаю, что математика

  • является более фундаментальным
  • сложнее учиться
  • остается актуальным в течение более длительного периода времени

тогда как темы HPC

  • измениться быстрее
  • легче подобрать самостоятельно
  • менее полезны и более специфичны для проблем / приложений / машин

Это чрезмерное обобщение и, безусловно, привлечет не согласные комментарии. Но я думаю, что в этом есть доля правды.

Дэвид Кетчесон
источник
Большое спасибо за все ваши ответы. Учитывая все, среди 3 столпов CSE (числовая математика, HPC и приложения в науке / технике). Я интересуюсь всем этим, но уклоняюсь от математики, потому что не могу хорошо следить за доказательствами и документами. Сосредоточившись сейчас на реальном анализе, линейной алгебре и численных методах, я думаю, что я готовлюсь ко всему. Мой советник сказал, что уровень чистого исчисления, который каждый понимает, прямо пропорционален уровню признательности для любой прикладной области. Поскольку я (пере) читаю Исчисление после нескольких лет Энгга, я убежден в афоризме.
Дознание
6

Я согласен с aeismail и Oxberry. Я решил написать ответ, потому что вы, похоже, сталкиваетесь с теми же вопросами, на которые я пытался найти ответ в прошлом году. Я также специализировался в машиностроении (и ненавидел его, особенно механику твердого тела), я провел много времени, работая с численными методами в CFD или оптимизации. Сейчас я учусь в магистратуре по прикладной математике и вычислительным наукам. С моей точки зрения, вам сначала нужно определиться с тем, что вы хотите сделать в будущем. Если вы хотите заняться моделированием или разработкой численных методов, то вам определенно стоит заняться математикой. Я провел два года, работая с методами конечного объема и конечного элемента, не зная глубоких основ, и теперь, когда я посещаю занятия по прикладной математике, все это имеет для меня гораздо больше смысла. Я понимаю, как именно работают методы, и я больше не хожу вслепую, просто экспериментируя со всем. Это экономит много времени и усилий. Но если вы решите заняться разработкой программного обеспечения и связанными с ним темами, вы можете сосредоточиться на части HPC. По моему опыту, существует множество пакетов, которые оптимизированы и готовы к использованию для множества числовых приложений. Так что для меня не будет лучшей идеей тратить много времени на разработку собственного программного обеспечения, поэтому я решил больше работать над математической частью.

bamdadhosseini
источник
1

Я не верю в дихотомию теории / приложения, но также важно подходить к полям так, чтобы это не было полностью вне контекста. Понимание теории, я думаю, дает вам общую интуицию по проблеме, которая очень ценна, так как избавляет вас от необходимости фокусироваться на конкретном за конкретным (то есть на одной конкретной реализации в сравнении с другой) и позволяет взглянуть на общую картину. Это понимание, однако, не возникает из вакуума, и вы не можете начать на этом уровне ... это не так, как работает мозг. Вы не можете прийти к понятию леса, даже не увидев дерево!

Нельзя сказать, что теория играет подчиненную роль в этом вопросе. Следует сказать, что теоретическое понимание дает человеку значительную умственную экономию при рассмотрении класса задач, но оно не может существовать без конкретизирующих его бетонов (по крайней мере, в вычислительных теориях).

Итак, чтобы ответить на ваш вопрос: если все, что вас интересует, это реализация, то есть результат, но не улучшение или изменение этой реализации, теория не будет так важна. Однако, если вы хотите производить свои собственные, то вы находитесь в невыгодном положении по сравнению с теми, кто лучше понимает теорию. Если, конечно, вы не производите свои собственные с годами, что оказывается лучше :)

Reid.Atcheson
источник