HPC Operations
- Module 1: SLURM (Gilberto Diaz, Universidad Industrial de Santander, Colombia) - in Spanish -
- Module 2: CLUSTERs: Arquitectura y Evolución (Personal DCAP-GTIC-CNEA) - in Spanish -
- Module 3: Hand-on configuration experience
- Module 4: Networking for HPC (Albino Aveleda, Universidade Federal do Rio de Janeiro, Brasil) - in English (or Portuguese) -
Techniques and methodology for parallel programming
- Module 1: HPC Technology and GPU Technology (Markus Rampp & Klaus Reuter, Max Planck Computing and Data Facility, Germany) - in English -
- Module 2: Distributed memory programming using MPI (Sergio Nesmachnow, UdelaR, Uruguay) - in Spanish -
- Module 3: Programming with shared memory using OpenMP y CILK (A. Soba, CNEA, Argentina and D. González Márquez, DC-FCEN, Argentina) - in Spanish -
- Module 4: Programming with parallel objects (Esteban Meneses, National High Technology Center, Costa Rica) - in Spanish -
HPC Applications
- Module 1: Instability analysis using eigenvalues in large scale dynamical systems (Leo González, UPM, Spain) - in Spanish -
- Module 2: Visualization (Klaus Reuter & Markus Rampp, Max Planck Computing and Data Facility, Germany) - in English -
- Module 3: Salome Suite (Mario Storti, CIMEC, Argentina) - in Spanish -
- Module 4: Introduction to computational mechanics in multiphysics problems from Engineering (Mariano Vázquez, BSC, Spain) - in Spanish -
Student posters
HPC Operations - Module 1
SLURM Simple Linux Utility for Resource Management
Gilberto Diaz (Universidad Industrial de Santander)
Objectives
Slurm is an open source, fault-tolerant, and highly scalable cluster management and job scheduling system for large and small Linux clusters. The main objective of this module is to learn about the SLURM scheduler and manager: its functionality, installation, configuration, monitoring and maintenance.
Detailed Program
- Day 1
- Initial concepts
- Description
- Components
- Installation
- Initial configuration (hands-on session)
- Day 2
- Resource usage
- Processors
- Cores
- Memory
- GPUs
- Day 3
- Job management
- Submission
- Supervision
- Deletion
- Accounting
- Day 4
- Definition of restrictions and user profiles
Material for students:
Evaluation
Review of a prototype installed by the student. Short theoretical exam.
HPC Operations - Module 2
CLUSTERs: Arquitectura y Evolución.
Evolución - Virtualización - Modularización - Filesystem - Automatización
Personal DCAP-GTIC-CNEA
- Día 1:
- Evolución y Problemas
- Temas de Virtualización
- Día 2:
- Cluster, aplicación práctica de intalación con Rocks Cluster.
- Modularización de NAS y Logins
- Manejo de Versionado de software
- Día 3:
- File Systems
- Automount
- FS Distribuidos
- ZFS
- Lustre
- Gluster
- NFS por IB
- Políticas de asignación de recursos
- Problemáticas
- Modelo propuesto
- Administración de los recursos.
- File Systems
HPC Operations - Module 3
HPC Operations - Module 4
Networking for HPC
Albino Aveleda (Universidade Federal do Rio de Janeiro, Brasil)
Objectives
- Understand the current technologies of interconnection in an HPC environment, impact of technology in infrastructure performance.
- Understand the levels of administration and quantity the improvements that can be pursued.
Detailed Program
- Day 1
- Overview
- Logical Topology
- Day 2
- Ethernet network
- Day 3
- Infiniband
- Infiniband commands overview
- Day 4
- Intel Omni-Path
Bibliography
- Infiniband white papers (Mellanox)
- Mellanox OFED for LinuxUser Manual
Evaluation
Theoretical exam at the end of module.
Techniques and methodology for parallel programming - Module 1
HPC Technology and GPU Technology
Markus Rampp & Klaus Reuter (Max Planck Computing and Data Facility, Germany)
Objectives
- Learn about the HPC hardware and software technology and methodology in order to be able to efficiently develop, optimize and run scientific HPC simulation codes
Detailed Program:
- Day 1: HPC technology and basic programming concepts
- HPC technology: historical developments and recent trends
- HPC architectures: node, network, I/O
- Parallel programming concepts
- Day 2: Software tools for the development and profiling of HPC codes
- version control and team development: git, subversion, gitlab/github,
- validation tools: automatic testsuites, CI, …
- performance analysis: scalasca, PAPI, likwid, roofline, …
- practicals: experiment with git and scalasca
- Day 3: case study - how to design and implement a HPC code
- high-performance libraries: MPI, BLAS, LAPACK, FFTW, …
- design decisions and practical considerations
- data input and output
- Day 4: GPU programming
- GPU architecture
- Low-level GPU programming in CUDA
- Directive-based GPU programming in OpenACC
- practical: Fractal computation with CUDA or OpenACC
Material for students:
Bibliography:
- V. Eijkhout: Introduction to High Performance Scientific Computing
- G. Hager & G. Wellein: Introduction to High Performance Computing for Scientists and Engineers
- Grama, Gupta, Karypis, Kumar: Introduction to Parallel Computing
- C. J. Murray: The Supermen: The Story of Seymour Cray and the Technical Wizards Behind the Supercomputer (historical perspective)
- G. Dyson: Turing’s Cathedral: The Origins of the Digital Universe (historical perspective)
- J. Sanders & E. Kandrot: CUDA by Example: An Introduction to General-Purpose GPU Programming
- OpenACC: https://www.openacc.org/content/education
Evaluation:
Perform a basic performance analysis for a given HPC code and provide interpretation Optional/alternative: short interview about HPC fundamentals
Techniques and methodology for parallel programming - Module 2
Distributed memory programming using MPI
Sergio Nesmachnow (Universidad de la República, Uruguay)
Requisites: basic programming.
Objectives:
Detailed Program:
- Day 1
- High performance computing fundamentals
- Parallel computing and distributed computing
- Parallel architectures
- SIMD and SPMD models
- Clusters and multicore architectures
- Parallel computing techniques
- Parallel computing model
- Domain decomposition (data-parallel)
- Funcional decomposition (control-parallel)
- Models for communication between processes
- Metrics for performance evaluation
- Speedup and computational efficiency
- Amdahl’s law
- Scheduling and load balancing
- High performance computing fundamentals
- Day 2: Developing parallel/distributed applications using MPI
- Basic MPI functions
- Communication modes in MPI
- The API of MPI
- Blocking communications
- Non-blocking communications
- Collective operations
- Groups of processes
- Data types
- Topologies of processes
- Examples and exercises
- Day 3: Case studies and advanced features
- Linear system resolution
- Distributed data processing
- The standards MPI-2 and MPI-3
- Parallel inupt and output
- Remote memory access
- Dinamic process management
- Integration of MPI with programming languages and scripting languages: Java, MATLAB, Python, Perl
- Day 4: Evaluation
Material for students:
Bibliography:
- Ian Foster. Designing and Building Parallel Programs. Addison-Wesley,
- ISBN 0-201-57594-9.
- Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, Jack Dongarra. MPI: The Complete Reference. MIT Press. 1995. ISBN 0-262- 69215-5.
- William Gropp, Ewing L. Lusk, Anthony Skjellum. Using MPI: Portable Parallel Programming with the Message Passing Interface. The MIT Press, 1999 (2nd edition). ISBN 978-0262571326.
- William Gropp, Ewing L. Lusk, Rajeev Thakur. Using MPI-2: Advanced Features of the Message Passing Interface. The MIT Press. 1999 (1st edition) - ISBN 978-0262571333.
Evaluation:
The evaluation will consist in practical programming exercises and solving of concrete problems applying the techniques included in the course.
Techniques and methodology for parallel programming - Module 3
Programming with shared memory using OpenMP y CILK
Alejandro Soba, CNEA, Argentina and David. González Márquez, DC-FCEN, Argentina)
Objectives
Impartir los rudimentos necesarios como para comprender el paradigma de programación en máquinas de memoria compartida. Aprender a programar con las herramientas OPENMP y/o CILK en un lenguaje de alto nivel (C, FORTAN). Comprender la factibilidad de re-convertir un código determinado para obteniendo un rendimiento óptimo en máquinas de memoria compartida.
Detailed Program:
- Day 1: OPENMP, basic concepts.
- Introducción a la programación paralela en memoria distribuida.
- Compilación sobre plataformas LINUX.
- Compiladores FORTRAN y C.
- Especificación OpenMP, características principales del estándar OpenMP, ejemplos prácticos de compilación y ejecución de programas OpenMP.
- Directivas para la construcción de paralelismo.
- Biblioteca de Funciones en Tiempo de Ejecución y variables de entorno.
- Day 2: OPENMP, advanced applications.
- Synchronizations directives.
- Ordering directives.
- Loop-level paralellization using OpenMP.
- Detection and paralelizables loop analysis.
- Techniques for code modification.
- Efficiency analysis.
- Examples and study case.
- Day 3: Cilk++, basic concepts.
- Cilk++ sintax and concepts.
- Race conditions.
- cilk_for, Reducers, Holders, Functions.
- Recurrence.
- Day 4: Cilk++, advanced applications.
- Debugging
- Optimization
- Techniques to expose parallelism.
- Comparison with OpenMP.
- Scalability analysis.
- Support and development tools.
Material for students:
Bibliography:
- “Cilk Plus specification and runtime ABI freely available for download”, James Reinders. Retrieved on 2010-11-03.
- Pacheco, P., Introduction to Parallel Programming, M. Kaufmann, 2011.
- McCool, Michael; Reinders, James; Robison, Arch (2013). Structured Parallel Programming: Patterns for Efficient Computation. Elsevier.
Evaluation:
Implement a proposed parallel application (medium complexity). The implementation should combine and/or compare the use of OpenMP and Cilk++. The student has to analyze the scalability, create figures and discuss the results, including the amount of time used in the implementation with both techniques.
Techniques and methodology for parallel programming - Module 4
Programming with parallel objects
Esteban Meneses (National High Technology Center, Costa Rica)
Objectives
Introduce fundamental concepts underlying the parallel objects paradigm to encourage students to further explore the model.
Specific Goals:
- Get familiar with the key ideas of overdecomposition, asynchrony, migratability, and adaptivity
- Become knowledgeable about the state of the art techniques and their utility in adaptive RTS
- Develop skills to express problems as interacting overdecomposed objects, e.g. parallel objects in Charm++
- Understand and address the performance characteristics of Charm++ applications, using both simple manual instrumentation and the Projections performance visualization and analysis tool
- Identify features that Charm++ provides to improve parallel programming productivity, and determine which are applicable to particular applications and avoid scalability bottlenecks
Detailed Program:
-
Day 1: Parallel Objects Programming Fundamentals Introduction to basic concepts: overdecomposition, asynchrony, migratability and adaptivity. The parallel objects model and its advantages over traditional methods. Introduction to Charm++ programming language. Charm++ programming and execution model. Installation of Charm++ and associated libraries. Basic Charm++ code samples. Use and properties of chare arrays.
-
Day 2: Performance Analysis and Load Balancing Introduction to Projections, a performance analysis tool. Visualizing executions and analysis of experimental results. Performance bottleneck detection. Introduction to load balancing. Object migration and PUP methods. Load balancing strategies in Charm++. Use of different load balancing strategies for particular problems.
-
Day 3: Advanced Programming with Charm++ Advanced programming mechanisms in Charm++. Multidimensional array usage and chare groups. Introduction to checkpointing and its applications.
-
Day 4: High Level Programming with Charm++ Introduction to Structured Dagger (SDAG), a tool for high-level programming in Charm++. Survey of other high-level languages in the Charm++ ecosystem. Presentation of real applications using Charm++.
Material for students:
Bibliography:
- David Padua, Encyclopedia of Parallel Computing (Springer, 2011).
- Pavan Balaji, ed., Programming Models for Parallel Computing (MIT Press, 2015).
- Laxmikant V. Kalé, ed., and Abhinav Bhatele, ed., Parallel Science and Engineering Applications: The Charm++ Approach (CRC Press: 2013).
Evaluation:
Students will develop a non-trivial Charm++ application and analyze its scalability. The performance of such application will be visualized using Projections, a performance analysis tool. Modifications to the original code will be made to avoid performance bottlenecks.
HPC Applications - Module 1
Instability analysis using eigenvalues in large scale dynamical systems
Leo González (UPM, Spain)
Prerequisites
Students should be familiar with basic knowledge -undergraduate student level- in subjects such as Algebra, Calculus, Numerical Methods and Physics. It also recommended a minimum experience in scientific programming languages such as Fortran or C, or in others such as Matlab or Python. Two or more completed university courses in any science or engineering degree should be more than enough to complete the course.
Objectives
The main objective of the course is to show how a large variety of dynamical systems can be studied and transformed into large eigenvalue problems. The size of the matrices involved in these eigenvalue problems depend on the number of degrees of freedom of the discretized problem and due to its large dimension often require particular techniques to be solved by computers. A representative number of physical and engineering problems will be tackled by these methods.
Detailed Program:
- Day 1
- What means physical simulation?
- Complex and unstable physical phenomena.
- Definition of physical instability.
- Mathematical framework.
- Dynamic systems.
- Day 2
- Instability and eigenvalues.
- Basic examples of unstable systems.
- Orr-Sommerfeld equation
- Discretization of differential equations.
- Properties of linear ODE systems.
- Linearization of complex systems.
- Numerical calculation of eigenvalues and eigenvectors.
- Day 3
- Systems of linear equations, direct and iterative methods.
- Structural modes of an elastic beam.
- Helmholtz equation
- Applications for the calculation of acoustic resonances.
- Day 4
- Navier-Stokes equations.
- Instability of isolated vortices.
- Cavity instability.
- Instability of disturbed and turbulent systems.
Material for students:
Bibliography:
- Spectra and Pseudospectra: The Behavior of Nonnormal Matrices and Operators. Lloyd N. Trefethen & Mark Embree
- Spectral Methods in Matlab. Lloyd N. Trefethen, Spectral Methods in MATLAB, SIAM, Philadelphia, 2000
- Hydrodynamic stability 2nd edition. P. G. Drazin, W. H. Reid, Cambridge University Press, 2010
- Stability and Transition in Shear Flows Schmid, Peter J., Henningson, Dan S. Applied Mathematical Sciences, 2001
Evaluation:
The course evaluation will have two parts. First, small exercises will be carried out in friendly Matlab-like environments. Second, a project will be proposed to the student in order to use the codes developed in the course.
HPC Applications - Module 2
Visualization
Klaus Reuter & Markus Rampp (Max Planck Computing and Data Facility, Germany)
Objectives:
- Learn basic strategies and tools for managing, analyzing and visualizing data from HPC simulations.
Detailed Program
- Day 1: Introduction to scientific visualization
- Overview of methods and tools
- Data handling strategies
- Practical: handling data in hdf5 format
- Day 2: Tools for interactive visualization of scientific data (I)
- Introduction to VisIt
- Practical 1: visualization of grid-based data
- Practical 2: visualization of data from particle and molecular simulations
- Day 3: Tools for interactive visualization of scientific data (II)
- Introduction to Paraview
- Practical 1: visualization of grid-based data
- Practical 2: visualization of data from particle (and molecular) simulations
- Day 4: Python toolbox for scientific computing, data analysis and visualization
- Introduction to Python (language features, advantages and limitations compared to compiled languages)
- NumPy, SciPy and friends: Introduction to the Python ecosystem for scientific computing.
- Practical: finish the implementation of a simple simulation (TBA) using NumPy and Scipy, run the code, and plot the results using matplotlib
Material for students:
Bibliography
- https://wiki.python.org/moin/BeginnersGuide
- M. Gorelick & I. Ozsvald: High Performance Python
Evaluation
Produce a visualization for a given dataset (with VisIt and/or Paraview) and deliver a movie/snapshots Optional: short interview about visualization methodology
HPC Applications - Module 3
Salome Suite
Mario Storti (CIMEC, Santa Fe, Argentina)
Pre-requisites
Conocimientos básicos de Mecánica Computacional, Mecánica del Continuo, programación.
Objectives
Detailed Program:
- Day 1
- La plataforma Salomé. Generación de geometrías y mallas, visualización.
- Code Aster: Resolución de problemas estructurales. Ejemplos
- Day 2
- Code Saturne: Resolución de flujos laminares, turbulentos, compresibles. Métodos Lagrangianos con Partículas. Ejemplos.
- Sirthes: resolución de problemas térmicos con convección y radiación. Ejemplos.
- Day 3
- Interacción fluido estructura.
- Acoplamiento fluido-térmico.
- Day 4
- El formato HDF5. Herramientas de manipulación.
- Ejecutando los programas en un entorno de HPC.
Material for students:
Bibliography:
- Code Saturne 4.2.0 Theory Guide, http://code-saturne.org/cms/sites/default/files/docs/4.2/theory.pdf
- Code Saturne Tutorials http://code-saturne.org/cms/documentation/Tutorials
- Code Aster Training Material http://code-aster.org/V2/spip.php?rubrique68
- Syrthes home page http://researchers.edf.com/software/syrthes-44340.html
- Code Syrthes User Manual http://goo.gl/Bkhvu6
Evaluation:
Consiste en resolver problemas de mecánica de fluidos o estructuras usando los programas de la suite. Cada ejercicio tiene una duración típica de 1 hora y se realizarán 3 ejercicios.
HPC Applications - Module 4
Introduction to computational mechanics in multiphysics problems from Engineering
Mariano Vázquez (BSC, Spain)
Pre-requisites
Basic knowledge at the level of a first course on Mathematical Analysis, Algebra, Numerical Methods, Physics and Programming. 2nd or 3rd year students of Physics, Maths, Engineering or Computer Science should have all the necessary background to take this course.
Objectives
- To acquire a basic (yet deep) knowledge of computational mechanics, focusing on the programming aspects.
- To understand the underpinnings of a simulation code, especially for engineering multi-physics.
- To realize the importance of simulations in different application fields, understanding all the stages of a project.
Detailed Program:
- Day 1:
- Background and motivation.
- Computational mechanics’ concept.
- Computational, Physical and Mathematical background,
- Multi-physics problems.
- Why are simulations needed in engineering problems?
- What is a simulation code?
- Defining a project: stages and reach
- The Physical system and its Mathematical definition:
- Kinds and description
- Partial differential equations
- Discretizing: first steps
- Discretizing: first problems
- Background and motivation.
- Day 2:
- The Physical system and its Mathematical definition II
- Advection and a 1D problem
- Characteristics
- Source terms, diffusion, non-linearity
- Systems and multi-physics
- Hyperbolicity
- The Physical system and its Mathematical definition II
- Day 3
- Distretization I: Divide and conquer
- Upwind
- Laplacians
- Convective stabilization
- FD vs FEM vs FV: definitions and comparisons
- Order, temporal discretization
- Discretization II: Algorithms and codes
- General scheme of a simulation code
- Explicit vs. Implicit
- Preconditioners
- Solvers, multi-physics
- Distretization I: Divide and conquer
- Day 4:
- Examples’ gallery
- Biomechanics
- Solid mechanics
- Aerodynamics
Material for students:
Bibliography:
- Finite differences: Any basic book on PDE numerical solution.
- Finite volumes: Books on compressible flow and CFD (Anderson, Courant, Chapman, …)
- A mathematical introduction to Fluid Mechanics. J. Chorin and J. Marsden. Springer. 1993
- Finite volume methods for hyperbolic problems. R.J. Leveque. Cambridge. 2004
- The finite element method. O.C. Zienkiewicz and R. Taylor. Butterworth Heinemann. 2000
- The finite element method. T.J.R. Hughes. Dover. 2000
Evaluation:
The course will be approved through practical or theoretical exercises for fluid mechanics, solid mechanics, convection equations, etc. The student will chose what computational aspect to analyze: parallel performance, accuracy, physical meaning, convergence, I/O strategy, etc.