course aims in Estonian
Anda ülevaade teadusarvutuste kontseptsioonist ja põhilistest meetoditest.
course aims in English
Teach core concepts and methods of scientific computing.
learning outcomes in the course in Est.
Kursuse läbinud üliõpilane:
- tunneb ära keerukad probleemid;
- vastavalt probleemile oskab valida sobiva numbrilise meetodi;
- vastavalt probleemile oskab valida sobiva programmeerimiskeele;
- vastavalt probleemile oskab valida sobiva riistvara;
- oskab kirjutada ja arendada paralleelarvutuste programmi;
- dokumenteerida arvutusi ja saadud tulemusi.
learning outcomes in the course in Eng.
After completing this course the student:
- recognizes complex problems;
- chooses suitable numerical method;
- chooses suitable programming language;
- chooses suitable computer architecture;
- writes and debugs simple parallel code;
- documents the simulation and results in a reproducible way.
brief description of the course in Estonian
Kursuses antakse ülevaade suure tootlikkusega arvutiklastrites (HPC) kasutatavast riistavarast, programmeerimiskeeltest, numbrilistest arvutusmeetoditest ja tutvustada neile reprodutseeritavuse mõistet.
Vaadatakse järgmisi teemasid:
- programmeerimise kirjaoskus, reprodutseeritav uurimus
- HPC ja teadusarvutuste põhilised aspektid (riistvara, Amdahl’i seadus)
- ülevaade numbrilistest meetoditest: FEM, CFD, osakestel baseeruvad meetodid, iteratiivsed meetodid lineaarsete võrrandisüsteemide jaoks
- paralleelarvutus: OpenMP, MPI, optimeerimine
- võidujooks andmetele, vastastikune blokeering ja muud paralleelarvutuste juures varitsevad lõksud ning nende ülesleidmise meetodid
Ülesandeid, projekte ja kodutöid tehakse paarides, võimalusel moodustatakse paariderinevate erialade üliõpilastest.
brief description of the course in English
The course „Scientific Computing“ will present an overview of HPC hardware, programming languages and numerical methods for different problems, and introduce the student to reproducibility.
List of topics:
- literate programming, reproducible research
- general aspects of HPC and Scientific Computing (hardware, Amdahl's law)
- overview of numerical methods: FEM, CFD, particle based methods, iterative methods for systems of linear equations
- parallel programming: OpenMP, MPI, optimization
- data races, deadlocks and other parallel-programming pitfalls and finding these
Exercises, project and homeworks will be solved in groups of two, preferably the groups are composed of students of different curricula.
type of assessment in Estonian
-
type of assessment in English
-
independent study in Estonian
-
independent study in English
-
study literature
Reprocible research: http://ropensci.github.io/reproducibility-guide/
Bathe: Finite Element Procedures ISBN-13: 978-0979004957
Alberty, Carstensen, Funken: Remarks around 50 lines of Matlab: short finite element implementation, Numer. Algorithms, volume 20, 1999 https://www.math.hu-berlin.de/~cc/cc_homepage/download/1999-AJ_CC_FS-50_Lines_of_Matlab.pdf
Grossmann, Roos, Stynes: Numerical Treatment of Partial Differential Equations ISBN 978-3-540-71584-9
Eymard, Galloyet, Herbin: Finite Volume Methods https://www.cmi.univ-mrs.fr/~herbin/PUBLI/bookevol.pdf
Leveque: Finite Volume Methods For Hyperbolic Problems https://archive.org/details/FiniteVolumeMethodsForHyperbolicProblemsRandallJ.Leveque
Saad: Iterative methods for sparse linear systems http://www-users.cs.umn.edu/~saad/books.html
Parlante: Essential C: http://cslibrary.stanford.edu/101/EssentialC.pdf
Burch: C for Python Programmers: http://www.toves.org/books/cpy/
Jorgensen: Introduction to Programming using Fortran 95/2003/2008 http://www.egr.unlv.edu/~ed/fortranv3.pdf
MPI standard: http://mpi-forum.org/docs/
OpenMP: http://www.openmp.org/specifications/
OpenCL: https://www.khronos.org/registry/OpenCL/
Valgrind manual: http://valgrind.org/docs/manual/manual.html
Eijkhout: Introduction to High-Performance Scientific Computing Lulu 2015 ISBN 978-1-25799-254-6
study forms and load
daytime study: weekly hours
4.0
session-based study work load (in a semester):
type (CBL/PBL)
not specified