This course introduces to techniques of parallel and distributed computing, and to hardware and software architectures for high-performance scientific and technical computing. Some space will be given to iterative distributed methods for simulation of numerical problems, and to methods for assessment of very large geometric models and meshes. The programming launguage used is Julia, novel dynamic language for scientific computing. Specific learning goals are:
- Solve compute-intensive problems faster;
- Solve larger problems in the same amount of time;
- Solve same size problems with higher accuracy in the same amount of time.
Brief introduction to Julia language. Introduction to parallel architectures, Parallel and distributed programming with Julia. Primitives of communication on synchronization. Languages based on directives. Performance metrics. Matrix operations and dense linear systems. Sparse linear systems. Collaborative development of projects.
"Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments."
Access will be granted to computational resources, including a DGX-1 superserver.
#. Lecture slides #. McCool, Reinders, and Robison, Structured Parallel Programming: Patterns for Efficient Computation, Morgan Kaufmann, 2012 #. Avik Sengupta, Julia High Performance: Optimizations, distributed computing, multithreading, and GPU programming with Julia 1.0 and beyond, 2nd Edition, Pakt>, 2019 #. Ivo Balbaert and Adrian Salceanu, Julia 1.0 Programming, Complete Reference Guide
# | date | arguments | category |
---|---|---|---|
1 | Tue 01 | Introduction to MarkDown and Git | Programming |
2 | Wed 02 | Basic Julia | Programming |
3 | Mon 07 | Basic Julia & project infos | Language & Project |
4 | Tue 08 | Basic Math Recall | Math |
5 | Wed 09 | Basic Julia & project infos | Language & Project |
6 | Mon 14 | Intro to Parallel Computation | Theory |
7 | Tue 15 | Analysis of course project | Project |
8 | Wed 16 | Course project scan | Project |
9 | Mon 21 | Parallel patterns & Arrangement pipeline | Theory & Project |
10 | Tue 22 | Data patterns & Symmetry + bound.compat. | Theory & Project |
11 | Wed 23 | Coroutines + debug code | Theory & Project |
12 | Mon 28 | Julia Timing and profiling | Julia Programming |
13 | Tue 29 | Julia types and single dispatching | Julia Programming |
14 | Wed 30 | Fast function calls & macros | Julia Programming & Project |