Parallel and Distributed Computing (IN480)
Course Description, Goals and Objectives
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 of the department, including a DGX-1 superserver.
J. Dongarra, J. Kurzak, J. Demmel, M. Heroux, Linear Algebra Libraries for High- Performance Computing: Scientific Computing with Multicore and Accelerators, SuperComputing 2011 (SC11)
Schedule and materials
|1||Tue 25||Introduction to MarkDown and Git||Programming|
|2||Thu 27||Basic Julia||Language|
|3||Oct 2||Assignment of course projects||Projects|
|4||Oct 4||Assignment of course projects||Projects|
|5||Oct 9||Parallel architectures||Theory|
|6||Oct 11||Parallel terminology||Theory + Programming|