*)N.B. if there are students who do not speak Portuguese the language is English.
Recognize the importance and the application domains of advanced computing.
Know the main hardware and software components of a supercomputer.
Acquire knowledge and practice of parallel computing, including the use of directives/libraries for parallel computing and some specific algorithms for this kind of computing.
Gain experience in using advanced computing resources.
Develop analysis and synthesis abilities;
Usage of internet as communication means and source of information;
Capacity for autonomous learning;
Adaptability to new situations;
Introduction to advanced computing systems: HPC vs. HTC.
Hardware architectures: clusters, MPP, hybrid architectures.
System software used in HPC: filesystems, libraries, resource management and job allocation. Trends in supercomputing.
Parallel computing and its importance. Main application domains. Paradigms of parallel computing: shared memory and distributed memory. Measuring the efficiency of parallel algorithms: speedup and Amdhal's law.
OpenMP programming: fork and join model. Parallel zone. Parallel loops, collective operations and barriers. Private and shared variables. Data race problems.
MPI. Parallelization techniques: data decomposition and domain decomposition. Model master-slave for data distribution and collection. MPI communication types. Collective operations for data and computation. Communicators and communication topologies. Creation of derived data types.
Applications to linear algebra problems and to the numerical solution of the Poisson equation.
Programming experience with high level language (Fortran or C)
Generic skills to reach
. Competence in analysis and synthesis; . Knowledge of a foreign language; . Computer Skills for the scope of the study; . Competence to solve problems; . Critical thinking; . Competence in autonomous learning; . Research skills; . Competence in organization and planning; . Competence in oral and written communication; . Competence in information management; . Adaptability to new situations; . Creativity; (by decreasing order of importance)
Teaching hours per semester
total of teaching hours
Bibliography of reference
Using MPI, 2nd Edition
William Gropp, Ewing Lusk and Anthony Skjellum, MIT Press
William Gropp, Ewing Lusk and Rajeev Thakur, MIT Press
Barbara Chapman, Gabriele Jost and Ruud van der Pas, MIT Press
Parallel Programming with MPI, P. Pacheco, Morgan Kaufmann Publishers, 1997.
Numerical Linear Algebra on High-Performance Computers
Jack J. Dongarra, Iain S. Duff , Danny C. Sorensen, Hank A. van der Vorst
The Sourcebook of Parallel Computing
Jack Dongarra , Geoffrey Fox , Ken Kennedy , Linda Torczon , William Gropp , Ian Foster (Editor), Andy White (Editor)
Classes are essentially hands-on practice sessions of parallel computing.
Teaching involves slide presentations of theoretical material, programming examples, and programming exercises . Internet access is used for obtaining relevant material.
The programming exercises are made using a command line terminal in Windows/Linux/MacOS, GNU compilers and the mpich implementation of MPI. Access to a remote computer cluster is given for the problem assignments for evaluation.
Acesso a computadores e a um sistema de computação avançada