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.
-
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 | Thu 01 | Some tools: introduction to MarkDown and Git | Programming |