Чи бажано сконцентруватися на вивченні математики чи обчислень?


11

Одночасно з моїми дослідженнями методів підпространства Крилова, я маю можливість дослідити математику за HPC на крок попереду або теорію обчислень (апаратне забезпечення, ОС, компілятори тощо). Наразі я знаю обох, щоб просто обійтись. Наприклад, я знаю, як отримати рівняння для CG та основи ітеративних методів, але я незрозумілий про деталі та складніші речі, такі як попередні кондиціонери та конвергенція. Так само я знаю основи методу Кінцевих Елементів (Слабка форма, Неслабка форма, такі речі, як Кодомейн і Галеркін) та ін., Але не знаю глибини цього. На передній частині обчислювальної техніки я знаю, як кодувати серійно всіма можливими мовами і можу достатньо добре використовувати OpenMP та MPI. Я не так добре розумію апаратне забезпечення та кешування.

Моє запитання: на чому слід зосередитись: математика чи обчислення? Вони нероздільні з HPC? Чи рекомендується одному дізнатися про одне, а не про інше?

EDIT: Я зараз займаюся машинобудуванням (про що шкодую) і маю багато курсів з техніки та обчислень (рідин, теплопередачі тощо). Я буду вступати до аспірантури для HPC цього року і хочу посилити певний аспект (Math / Comp / Hybrid), перш ніж розпочати моє навчання. Мені подобається математика та компенсація однаково (тому "Робіть те, що вам більше подобається" зайве).

Відповіді:


10

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

В оптимізації неможливо реально вивчити поле без розуміння реального аналізу. Ще до того, як вирішувати числові питання, вам потрібно зрозуміти поняття конвергенції послідовностей, оскільки ви збираєтесь довести на класах, що алгоритми сходяться. Вам доведеться розуміти такі поняття, як спадкоємність та диференційованість на більш ніж поверхневому рівні. Отже, реальний аналіз є необхідною умовою для курсів нелінійного програмування.

Моя дипломна робота стосується методів розв’язання звичайних диференціальних рівнянь. Питання конвергенції, зокрема такі, як "якщо я знижую локальну толерантність до помилок, то моє розраховане числове рішення наближається до справжнього рішення рівнянь, які я розв'язую" - це знову питання, які потребують реального аналізу. Для розробки теорії з питань конвергенції я вимагав (проти побажання моїх радників) пройти два семестри реального аналізу. (Це окупилося парою рукописів.)

Однак я знаю, що там є люди, які досить добре виживають в числових методах та HPC, не беручи чистих уроків математики. Це дійсно залежить від тієї ніші, яку ви хочете зайняти.

Якщо ви хочете розробити нові методи, тоді корисні заняття з теорії. Теоретичні заняття також корисні для загальної математичної грамотності; читати документи з математики стає набагато, набагато простіше.

Якщо ви хочете застосувати конкретні числові методи до проблем, класні чисельні методи корисніші. Я вважаю, що ця перспектива - це те, звідки походить аейсмаїл, і це інтенсивніше ситуація. (Відмова: Ми знаємо одне одного і закінчили ту саму кафедру.)

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

Щоб завершити роботу, вам, ймовірно, слід зосередитись на вивченні питань, пов'язаних з вашою проблемою дисертації, пам’ятайте, що ви думаєте, що хочете зробити в майбутньому, і вирішіть, який широкий загальний досвід потрібно спілкуватися з іншими дослідниками в спільноти, до якої ви хочете приєднатися. Ваш доктор наук стане однією з останніх можливостей для вас на заняттях, і якщо ви думаєте, що хочете вивчити теорію математики (або будь-який предмет, насправді), вивчити її самостійно набагато складніше, не встановлюючи якусь основну першочергове знання.


Цікава перспектива - і приклад - корисна зустрічна вимога. (Я повинен зазначити, що я збираюся прочитати кілька лекцій щодо оптимізації, де я відмовляюсь від явних доказів конвергенції, тому що акцентовано увагу на числових методах, і насправді не вистачає часу, щоб "довести" речі, якщо Я маю запровадити реальний аналіз як частину угоди.)
aeismail

2
Я рекомендую пройти достатню кількість курсів з математики, щоб можна було зрозуміти теореми та (при необхідності із зусиллям) докази, що з’являються у таких журналах, як SISC, J. Scientific Computing, CMAME тощо. Це, ймовірно, означає курс реального аналізу, курс абстрактного PDE теорія, курс загального чисельного аналізу та курс дискрецій для часткових диференціальних рівнянь. На моєму особистому досвіді самодослідження, копання у бібліотеках з відкритим кодом, щоб зрозуміти, чому був зроблений вибір, а головне, стати розробником такої бібліотеки (PETSc) були неоціненними для вивчення HPC.
Джед Браун

Джед: На жаль, це неможливо в умовах багатьох аспірантів. Я знаю, що я б не зміг пройти всі ці курси, а також усі курси фізичних наук, які мені потрібні для мого прямого дослідження. Отже, як можна збалансувати це, особливо в умовах наявності радника, який, можливо, не бажає, щоб студент був записаний (або сидів на) безлічі курсів?
aeismail

@aeismail: Я розглядав це як інвестицію в кар’єру, і все ще є прогалини, які мені потрібно заповнити. Якщо це важливо, ви знаходите час для цього. (Як я вже казав, я зробив це проти побажань своїх радників, і закінчився підходом, який починає вирішувати типи проблем, які вони сказали, що хотіли вирішити протягом останніх 10 років.) Тоді, безумовно, важко знайти час, і важко знайти радників, які б підтримували, коли надто великий тиск на публікацію. Також важко, якщо радники не в галузі обчислювальної техніки (або вони мають різні уявлення про те, що це таке, ніж ви).
Джефф Оксберрі

12

HPC - це суміш математики, обчислень, інформатики та програм. Потрібно вміти розуміти всі вони, щоб вони були справді успішними в довгостроковій перспективі. Однак вам не обов’язково потрібно досягти однакового рівня володіння всіма ними.

У аргументі обчислення та математики, для інженера, я стверджую, що спочатку важливіші проблеми з числовою реалізацією є більш важливими. Якщо ви зачекаєте, поки ви засвоїли математичну теорію, а потім приступите до її впровадження, ви можете витратити довгий час, працюючи над речами, які, хоча, без сумніву, є корисними, не можуть безпосередньо вплинути на ваше дисертаційне дослідження.

Отже, спершу я схиляюся до розуміння обчислювальних аспектів, а потім повертаюся назад і заповнюю дірки в математичній теорії. Про проблеми з обладнанням можна також дізнатися - але багато про те, як це впливає на програмне забезпечення, також буде залежати від платформи, тож, знову ж таки, це може бути не першим пунктом вашого порядку денного.

Інші, звичайно, можуть не погодитися зі мною; як ви сказали, це скоріше думка, ніж фактичне запитання.


9

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

Якщо припустити, що вас цікавить дослідницька кар’єра, ви можете досягти успіху в будь-якому поєднанні цих двох. Знайдіть співробітників, знання яких доповнюють ваші. Я знаю значну кількість математики, оскільки вона стосується точності та стійкості числових методів, але набагато менше про HPC. У мене є співробітники, які дуже добре знають HPC, тому, працюючи разом, ми можемо отримати інноваційні чисельні методи, що працюють на великих машинах. Я займаюся математикою, і вони роблять обчислення, здебільшого.

Це сказав, я думаю, що математика

  • є більш фундаментальним
  • навчитися складніше
  • залишається актуальним протягом більш тривалого періоду часу

тоді як теми HPC

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

Це надмірна генералізація і, безумовно, приверне заперечні коментарі. Але я думаю, що в цьому є правда.


Дуже дякую за всі ваші відповіді. Враховуючи все, серед 3 стовпів CSE (Numerical Math, HPC та Applications to Science / Engineering). Мене цікавлять усі вони, але ухилялися від математики, оскільки я не міг добре слідкувати за доказами та документами. Зосередившись на реальному аналізі, лінійній алгебрі та числових методах, я думаю, що я підготуюсь до всього. Мій радник сказав, що рівень чистого обчислення, який ми розуміємо, прямо пропорційний рівню оцінки для будь-якої прикладної галузі. Коли я (повторно) читаю Калькуляцію після років Енгґ, я переконаний у афоризмі.
Запит

6

Я погоджуюся як з Aeismail, так і Oxberry. Я вирішив написати відповідь, тому що, здається, ви стикаєтеся з тими ж питаннями, на які я намагався знайти відповідь минулого року. Я також брав участь у машинобудуванні (і ненавидів це, особливо тверда механіка), багато часу проводив, працюючи з чисельними методами в CFD або оптимізації. Зараз я займаюся магістрами з прикладної математики та обчислювальних наук. З моєї точки зору, спершу потрібно визначитися, чим ти хочеш займатися в майбутньому. Якщо ви хочете зайнятися моделюванням або розвитком чисельних методів, то вам неодмінно слід йти до математики. Я провів два роки, працюючи з методами Finite Volume та Finite Element, не знаючи глибокої основи, і тепер, коли я беру заняття з прикладної математики, все це має для мене набагато більше сенсу. Я усвідомлюю, як саме працюють методи, і я більше не сліпо хожу, просто експериментую з усім. Це економить багато часу і сил. Але якщо ви вирішили хочете розробити програмне забезпечення та пов'язані з цим теми, то, можливо, вам захочеться зосередитись на частині HPC. На мій досвід, існує багато пакетів, які оптимізовані та готові використовувати для багатьох програм із чисельністю. Тож це не буде найкращою ідеєю для мене витрачати багато часу на розробку власного програмного забезпечення, тому я вирішив більше працювати над математичною частиною.


1

Я не вірю в дихотомію теорії / застосування, але також важливо підходити до полів таким чином, який не є повністю поза контекстом. Розуміння теорії, я думаю, надає вам загальну інтуїцію щодо проблеми, яка є дуже цінною, тому що вона заважає вам зосередитися на конкретному після бетону (тобто на одному конкретному здійсненні проти іншого), і дозволяє вам переглянути велику картину. Однак це розуміння не виникає з вакууму, і ви не можете ПОЧАТИ на цьому рівні. Це не так, як працює мозок. Ви не можете дійти до концепції лісу, не побачивши ніколи дерево!

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

Отже, щоб відповісти на ваше запитання: Якщо все, що вас цікавить, це реалізація, це результат, але не вдосконалення / зміна цієї реалізації, теорія не буде такою важливою. Якщо ви хочете створити свою власну, тоді ви перебуваєте у конкурентній ситуації з тими, хто краще розуміє цю теорію. Якщо, звичайно, ви робите своє протягом багатьох років, що стане кращим :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.