Apakah lebih baik berkonsentrasi pada belajar matematika atau perhitungan?

11

Bersamaan dengan penelitian saya pada Metode Ruang Krylov, saya memiliki pilihan untuk mengeksplorasi matematika di belakang HPC selangkah lebih maju atau teori komputasi (perangkat keras, OS, kompiler dll.). Saat ini, saya tahu baik cukup untuk hanya mendapatkan oleh. Sebagai contoh, saya tahu bagaimana menurunkan persamaan untuk CG dan dasar-dasar metode iteratif tapi saya tidak mengerti tentang detail dan hal-hal yang lebih rumit seperti Prekondisi dan Konvergensi. Demikian pula, saya tahu dasar-dasar Metode Elemen Hingga (Bentuk Lemah, Bentuk tidak lemah, hal-hal seperti Codomain dan Galerkin dan hal-hal lain) tetapi tidak akan tahu kedalamannya. Di depan komputasi, saya tahu bagaimana cara membuat kode serial dalam semua bahasa yang mungkin dan dapat menggunakan OpenMP dan MPI dengan cukup baik. Saya tidak mengerti hardware dan melakukan caching dengan baik.

Pertanyaan saya adalah: Apa yang harus dikonsentrasikan pada: Matematika atau Komputasi? Apakah mereka tidak dapat dipisahkan dalam HPC? Apakah disarankan agar yang satu belajar tentang yang satu dan bukan yang lainnya?

EDIT: Saya saat ini mengambil jurusan Teknik Mesin (yang saya sesali) dan memiliki banyak kursus di bidang teknik dan komputasi (cairan, perpindahan panas dan sebagainya). Saya akan bergabung dengan sekolah pascasarjana untuk HPC tahun ini dan saya ingin memperkuat beberapa aspek (Matematika / Komp / Hibrid) sebelum saya memulai studi pascasarjana. Saya suka matematika dan comp sama (jadi "Lakukan apa yang Anda sukai lebih" berlebihan).

Pemeriksaan resmi
sumber

Jawaban:

10

Saya suka jawaban aeismail, tapi saya akan memberikan perspektif alternatif.

Dalam optimasi, tidak mungkin untuk benar-benar mempelajari bidang tanpa memahami analisis nyata. Bahkan sebelum Anda menangani masalah numerik, Anda perlu memahami gagasan konvergensi urutan, karena Anda akan membuktikan di kelas bahwa algoritma bertemu. Anda harus memahami konsep seperti kesinambungan dan diferensiasi pada lebih dari tingkat yang dangkal. Akibatnya, analisis nyata adalah prasyarat untuk kursus dalam pemrograman nonlinier.

Tesis saya berkaitan dengan metode untuk menyelesaikan persamaan diferensial biasa. Masalah konvergensi, khususnya hal-hal seperti "jika saya mengurangi toleransi kesalahan lokal saya, maka solusi numerik saya yang dihitung mendekati solusi sebenarnya dari persamaan yang saya pecahkan" adalah lagi masalah yang membutuhkan analisis nyata. Untuk mengembangkan teori untuk masalah konvergensi diperlukan saya (bertentangan dengan keinginan penasihat saya) untuk mengambil dua semester analisis nyata. (Ini terbayar dengan beberapa manuskrip.)

Namun, saya tahu ada orang di luar sana yang bertahan cukup baik dalam metode numerik dan HPC tanpa mengambil kelas matematika murni. Itu benar-benar tergantung pada niche yang ingin Anda tempati.

Jika Anda ingin mengembangkan metode baru, maka kelas teori sangat membantu. Kelas teori juga membantu untuk literasi matematika umum; membaca makalah matematika menjadi jauh lebih mudah.

Jika Anda ingin menerapkan metode numerik tertentu untuk masalah, kelas metode numerik lebih bermanfaat. Saya percaya perspektif ini adalah dari mana aeismail berasal, dan ini adalah situasi yang lebih umum bagi para insinyur. (Penafian: Kami saling kenal, dan lulus dari departemen yang sama.)

Sedangkan untuk HPC, kesan yang saya dapatkan adalah bahwa pengalaman adalah guru terbaik. Saya mengambil kursus pemrograman paralel, dan itu sedikit berguna, tetapi pesan utama dari kelas adalah untuk mencoba berbagai hal dan melihat apakah mereka berhasil. Jika ini penting untuk penelitian tesis Anda, Anda akan mendapatkan pengalaman di HPC. Jika tidak, Anda tidak akan melakukannya, dan mungkin tidak masalah sampai Anda ingin mengganti persneling dan mengatasi masalah HPC. Tesis saya belum terlalu berat untuk HPC, setidaknya dalam hal apa yang saya program, jadi saya tidak perlu mengambil set keterampilan itu.

Untuk menyelesaikannya, Anda mungkin harus berkonsentrasi untuk mendapatkan latar belakang dalam masalah yang berhubungan dengan masalah tesis Anda, ingat apa yang Anda pikir ingin Anda lakukan di masa depan, dan putuskan latar belakang umum dan luas apa yang perlu Anda komunikasikan dengan peneliti lain di komunitas yang ingin Anda ikuti. PhD Anda akan menjadi salah satu peluang terakhir bagi Anda untuk mengambil kelas, dan jika Anda pikir Anda ingin mempelajari teori matematika (atau mata pelajaran apa pun, sungguh), mempelajarinya sendiri jauh lebih sulit tanpa membangun semacam dasar kemahiran pertama.

Geoff Oxberry
sumber
Perspektif yang menarik — dan contohnya adalah pernyataan balasan yang berguna untuk poin saya. (Saya harus menunjukkan bahwa saya akan memberikan beberapa kuliah tentang optimasi di mana saya secara eksplisit meninggalkan bukti konvergensi, karena fokusnya adalah pada metode numerik, dan benar-benar tidak ada cukup waktu untuk "membuktikan" hal-hal jika Saya harus memperkenalkan analisis nyata sebagai bagian dari tawar-menawar.)
aeismail
2
Saya sarankan mengambil kursus matematika yang cukup untuk dapat memahami teorema dan (bila perlu, dengan usaha) bukti muncul di jurnal seperti SISC, J. Scientific Computing, CMAME, dll. Ini mungkin berarti kursus dalam analisis nyata, kursus dalam PDE abstrak teori, kursus analisis numerik umum, dan kursus diskritisasi untuk persamaan diferensial parsial. Dalam pengalaman pribadi saya, belajar mandiri, menggali di perpustakaan sumber terbuka untuk memahami mengapa pilihan dibuat, dan yang paling penting, menjadi pengembang perpustakaan seperti itu (PETSc) sangat berharga untuk mempelajari HPC.
Jed Brown
Jed: Sayangnya, ini tidak mungkin dalam konteks banyak mahasiswa pascasarjana. Saya tahu saya tidak akan bisa mengambil semua mata kuliah tersebut, ditambah semua mata kuliah ilmu fisika yang saya butuhkan untuk bidang penelitian langsung saya. Jadi bagaimana orang menyeimbangkan hal itu — khususnya dalam konteks memiliki penasihat yang mungkin tidak ingin seorang siswa mendaftar di (atau duduk di) banyak kursus?
aeismail
@aeismail: Saya melihatnya sebagai investasi dalam karier, dan masih ada celah yang harus saya isi. Jika ini penting, Anda punya waktu untuk melakukannya. (Seperti yang saya katakan, saya melakukannya atas keinginan penasihat saya, dan berakhir dengan pendekatan yang mulai memecahkan jenis masalah yang mereka katakan ingin mereka selesaikan selama 10 tahun terakhir.) Yang mengatakan, itu pasti sulit untuk menemukan waktu, dan sulit untuk menemukan penasihat yang mendukung ketika ada begitu banyak tekanan untuk dipublikasikan. Sulit juga jika penasihat tidak dalam ilmu komputasi (atau mereka memiliki ide yang berbeda tentang apa itu daripada Anda).
Geoff Oxberry
12

HPC adalah perpaduan matematika, komputasi, ilmu komputer, dan aplikasi. Anda harus bisa memahami semuanya agar benar-benar sukses dalam jangka panjang. Namun, Anda tidak perlu mencapai tingkat kemahiran yang sama dalam semua itu.

Dalam argumen perhitungan versus matematika, untuk seorang insinyur, saya berpendapat masalah implementasi numerik lebih penting pada awalnya. Jika Anda menunggu sampai Anda mempelajari teori matematika dan kemudian mulai implementasi, Anda mungkin menghabiskan waktu lama untuk mengerjakan hal-hal yang, walaupun pasti bermanfaat, mungkin tidak secara langsung memengaruhi penelitian tesis Anda.

Jadi, saya akan cenderung memahami aspek komputasi pada awalnya, dan kemudian kembali dan mengisi lubang dalam teori matematika. Masalah perangkat keras juga dapat dipelajari - tetapi banyak hal yang mempengaruhi perangkat lunak juga akan tergantung pada platform, jadi sekali lagi, ini mungkin bukan item pertama dalam agenda Anda.

Orang lain tentu saja tidak setuju dengan saya; seperti yang Anda nyatakan, ini lebih merupakan opini daripada pertanyaan faktual.

aeismail
sumber
9

Ikuti kursus sebanyak mungkin di keduanya. Saya melakukannya, dan saya tidak menyesalinya.

Dengan asumsi Anda tertarik pada karier penelitian, Anda bisa sukses dengan campuran keduanya. Temukan kolaborator yang ilmunya melengkapi pengetahuan Anda. Saya tahu sejumlah besar matematika karena berkaitan dengan akurasi dan stabilitas metode numerik, tetapi lebih sedikit tentang HPC. Saya memiliki kolaborator yang mengenal HPC dengan sangat baik, jadi bekerja bersama kita bisa mendapatkan metode numerik inovatif yang berjalan pada mesin besar. Saya melakukan matematika dan mereka melakukan perhitungan, sebagian besar.

Yang mengatakan, saya pikir matematika itu

  • lebih mendasar
  • lebih sulit untuk dipelajari
  • tetap relevan untuk periode waktu yang lebih lama

sedangkan topik HPC

  • berubah lebih cepat
  • dapat diambil lebih mudah sendiri
  • umumnya kurang bermanfaat dan lebih banyak masalah / aplikasi / mesin spesifik

Ini adalah generalisasi berlebihan dan pasti akan menarik komentar yang tidak setuju. Tapi saya pikir ada kebenarannya.

David Ketcheson
sumber
Terima kasih banyak atas semua jawaban Anda. Mempertimbangkan segalanya, di antara 3 pilar CSE (Numerical Math, HPC dan Applications to Science / Engineering). Saya tertarik pada mereka semua tetapi menjauh dari Matematika karena saya tidak bisa mengikuti bukti dan kertas dengan baik. Dengan memfokuskan pada Analisis Nyata, Aljabar Linier dan Metode Numerik sekarang, saya pikir saya akan mempersiapkan diri untuk semuanya. Penasihat saya mengatakan tingkat kalkulus murni yang dipahami berbanding lurus dengan tingkat penghargaan untuk bidang apa pun yang diterapkan. Karena saya (kembali) membaca Kalkulus setelah bertahun-tahun di Engg, saya yakin akan pepatah itu.
Pemeriksaan
6

Saya setuju dengan aeismail dan Oxberry. Saya memutuskan untuk menulis jawaban karena Anda tampaknya menghadapi pertanyaan yang sama dengan yang saya coba temukan jawabannya tahun lalu. Saya juga mengambil jurusan teknik mesin (dan membencinya, khususnya mekanik padat), saya menghabiskan banyak waktu bekerja dengan metode numerik dalam CFD atau optimasi. Sekarang saya sedang melakukan master dalam Matematika Terapan dan Ilmu Komputasi. Dari sudut pandang saya, Anda pertama-tama harus memutuskan apa yang ingin Anda lakukan di masa depan. Jika Anda ingin masuk ke pemodelan atau pengembangan metode numerik maka Anda harus pergi ke matematika. Saya menghabiskan dua tahun bekerja dengan metode Volume Hingga dan Elemen Hingga tanpa mengetahui dasar yang dalam dan sekarang saya mengambil kelas dalam matematika terapan, semuanya lebih masuk akal bagi saya. Saya menyadari bagaimana metode bekerja dengan tepat dan saya tidak lagi berjalan membabi buta hanya dengan bereksperimen dengan segalanya. Ini menghemat banyak waktu dan tenaga. Tetapi jika Anda memutuskan ingin mengembangkan perangkat lunak dan topik terkait maka Anda mungkin ingin fokus pada bagian HPC. Dalam pengalaman saya, ada banyak paket di luar sana yang dioptimalkan dan siap digunakan untuk banyak aplikasi numerik. Jadi itu bukan ide terbaik bagi saya untuk menghabiskan banyak waktu mengembangkan perangkat lunak saya sendiri jadi saya memutuskan untuk bekerja lebih banyak pada bagian matematika.

bamdadhosseini
sumber
1

Saya tidak percaya pada dikotomi teori / aplikasi, tetapi juga penting untuk mendekati bidang dengan cara yang tidak sepenuhnya di luar konteks. Memahami teori saya pikir memberi Anda intuisi umum tentang masalah yang sangat berharga karena membuat Anda tidak harus fokus pada beton setelah beton (yaitu satu implementasi tertentu versus yang lain), dan memungkinkan Anda melihat gambaran besar. Namun pemahaman ini tidak muncul dari kekosongan, dan Anda tidak dapat MEMULAI pada tingkat ini .. itu bukan cara otak bekerja. Anda tidak dapat sampai pada konsep hutan tanpa pernah melihat pohon!

Itu tidak berarti bahwa teori juga mengambil peran yang tunduk pada pertanyaan ini. Dapat dikatakan bahwa pemahaman teoretis memberikan ekonomi mental yang signifikan ketika mempertimbangkan kelas masalah, tetapi tidak dapat eksis tanpa konkret yang mendorongnya (setidaknya dalam teori komputasi).

Jadi untuk menjawab pertanyaan Anda: Jika semua yang Anda minati adalah implementasinya, itulah hasilnya, tetapi tidak dalam meningkatkan / mengubah implementasi ini, teori tidak akan begitu penting. Namun jika Anda ingin menghasilkan sendiri, maka Anda berada pada posisi yang kurang menguntungkan dengan mereka yang memahami teori dengan lebih baik. Kecuali tentu saja Anda menghasilkan sendiri selama bertahun-tahun yang terjadi menjadi lebih baik :)

Reid.Atcheson
sumber