• PRACE Training Centres (PTCs)

  • PRACE operates ten PRACE Training Centres (PTCs) and they have established a state-of-the-art curriculum for training in HPC and scientific computing. PTCs carry out and coordinate training and education activities that enable both European academic researchers and European industry to utilise the computational infrastructure available through PRACE and provide top-class education and training opportunities for computational scientists in Europe.
    With approximately 100 training events each year, the ten PRACE Training Centres (PTCs) are based at:

    PTC training events are advertised on the following pages. Registration is free and open to all (pending availability):
    https://events.prace-ri.eu/category/2/

    The following figure depicts the location of the PTC centers throughout Europe.
    PATC, PTC location

    PATC events this month:

    August 2019
    Mon Tue Wed Thu Fri Sat Sun
     
    Python has gained tremendous popularity in scientific computing owing to the extensibility of the language, the rich ecosystem and being a convenient languages for scientists to develop and prototype codes productively. While using Python may offer many ways to achieve the same result, finding the most efficient means to do so for better performance and scalability can be a challenge. This course is focused on some of the ways to optimise and parallel scientific Python codes, encompassing subjects such as performance analysis, efficient use of scientific libraries (e.g. NumPy), extending Python to use more efficient languages (e.g. Cython) to carry out multi-processing using threads and the Message Passing Interface (MPI) on HPC systems.

    The 4-day course will cover the following topics:


    Efficient use of NumPy
    Performance Analysis
    Using Cython and optimisations
    Interfacing with external libraries
    Multi-processing using threads
    Parallel computing using mpi4py
    Extra optimisation exercises (common numerical algorithms) on HPC system


    Prerequisites


    Each participant is expected to have a basic knowledge of Python, including:

    syntax
    basic data structures (lists, arrays, tuples, dictionaries)
    control structures (if-else statements, for/while loops)
    functions and modules


    Every participant is also expected to bring his/her own laptop to the course to carry out the hands-on exercises.
    Some prior experience/knowledge of NumPy and the C programming language will be useful but not strictly required.


    Participation in the course is free of charge. Tea, coffee and light snacks will be provided during breaks. Lunch is NOT provided; there is a restaurant on-site as well as other eateries nearby.


     
    events.prace-ri.eu/event/898/
    Jul 29 10:30 to Aug 1 18:30
    2
     
    3
     
    4
     
    5
     
    6
     
    If you were given a serial problem, conceptually, how would you go about splitting it up into many different parts that could run concurrently on the latest parallel computers?

    The good news is that you don't need to reinvent the wheel. Instead, there are many different approaches (called parallel patterns) that have been developed by the community and can be used in a variety of situations. These patterns apply equally well regardless of whether your problem is computational or data-driven.

    Understanding and being able to apply these patterns also helps in getting to grips with existing parallel codes and optimising poorly performing computation and data codes. Whilst the lectures take a top down approach, focusing on the patterns themselves, the practical exercises give the opportunity to explore the concepts by implementing pattern-based solutions to problems using common HPC technologies.

    The parallel patterns (known as a pattern language) that we cover are split into two categories.

    The closest to the problem area (and most abstract) are parallel algorithm strategy patterns and include:


    Task Parallelism
    Recursive Splitting
    Geometric Decomposition
    Pipeline
    Discrete Event
    Actors


    The other category of patterns is closer to the implementation and drives how the programmer should structure their code and data. These are implementation strategy patterns, and include:


    Master/Worker
    Loop Parallelism
    Fork/Join
    Shared Data and Queues
    Active Messaging


    Patterns are described on an abstract level and we will also discuss enhancements that can be made to improve performance/scalability but at the cost of code complexity. Practical implementations of these patterns are explored in depth in the hands-on exercises.

    Programming exercises use C and Fortran, with MPI and OpenMP.

    Trainer


    Nick Brown

    Nick is involved with the MSc in High Performance Computing, is the course organiser for the Parallel Design Patterns module and also supervises student dissertation projects.

    Course Pre-requisites


    Ability to program in C, C++ or Fortran.
    Familiarity with using MPI
    Some familiarity with OpenMP is beneficial but not essential


    Pre-course setup

    All course delegates will need to bring a wireless enabled laptop computer with them on the course. If you have an EduRoam account please ensure this is set up beforehand.

    Practical exercises will be done using a guest account on ARCHER. You will need to set up your laptop before the course with the required software. Setup information is available at www.archer.ac.uk/traini.....e.php for Windows, Mac and Linux.

    Learning outcomes

    On completion of this course students should be able to:


    Recognise different strategies for structuring the parallelism of a specific problem in hand
    Understand the trade-offs between different approaches to, and specialisations of, parallelisation
    Identify the most appropriate ways to structure code and data with respect to the parallel strategy adopted


    Course Materials

    www.archer.ac.uk/traini.....rham/

     

     

     

     
    events.prace-ri.eu/event/888/
    Aug 7 10:00 to Aug 9 18:30
    If you were given a serial problem, conceptually, how would you go about splitting it up into many different parts that could run concurrently on the latest parallel computers?

    The good news is that you don't need to reinvent the wheel. Instead, there are many different approaches (called parallel patterns) that have been developed by the community and can be used in a variety of situations. These patterns apply equally well regardless of whether your problem is computational or data-driven.

    Understanding and being able to apply these patterns also helps in getting to grips with existing parallel codes and optimising poorly performing computation and data codes. Whilst the lectures take a top down approach, focusing on the patterns themselves, the practical exercises give the opportunity to explore the concepts by implementing pattern-based solutions to problems using common HPC technologies.

    The parallel patterns (known as a pattern language) that we cover are split into two categories.

    The closest to the problem area (and most abstract) are parallel algorithm strategy patterns and include:


    Task Parallelism
    Recursive Splitting
    Geometric Decomposition
    Pipeline
    Discrete Event
    Actors


    The other category of patterns is closer to the implementation and drives how the programmer should structure their code and data. These are implementation strategy patterns, and include:


    Master/Worker
    Loop Parallelism
    Fork/Join
    Shared Data and Queues
    Active Messaging


    Patterns are described on an abstract level and we will also discuss enhancements that can be made to improve performance/scalability but at the cost of code complexity. Practical implementations of these patterns are explored in depth in the hands-on exercises.

    Programming exercises use C and Fortran, with MPI and OpenMP.

    Trainer


    Nick Brown

    Nick is involved with the MSc in High Performance Computing, is the course organiser for the Parallel Design Patterns module and also supervises student dissertation projects.

    Course Pre-requisites


    Ability to program in C, C++ or Fortran.
    Familiarity with using MPI
    Some familiarity with OpenMP is beneficial but not essential


    Pre-course setup

    All course delegates will need to bring a wireless enabled laptop computer with them on the course. If you have an EduRoam account please ensure this is set up beforehand.

    Practical exercises will be done using a guest account on ARCHER. You will need to set up your laptop before the course with the required software. Setup information is available at www.archer.ac.uk/traini.....e.php for Windows, Mac and Linux.

    Learning outcomes

    On completion of this course students should be able to:


    Recognise different strategies for structuring the parallelism of a specific problem in hand
    Understand the trade-offs between different approaches to, and specialisations of, parallelisation
    Identify the most appropriate ways to structure code and data with respect to the parallel strategy adopted


    Course Materials

    www.archer.ac.uk/traini.....rham/

     

     

     

     
    events.prace-ri.eu/event/888/
    Aug 7 10:00 to Aug 9 18:30
    If you were given a serial problem, conceptually, how would you go about splitting it up into many different parts that could run concurrently on the latest parallel computers?

    The good news is that you don't need to reinvent the wheel. Instead, there are many different approaches (called parallel patterns) that have been developed by the community and can be used in a variety of situations. These patterns apply equally well regardless of whether your problem is computational or data-driven.

    Understanding and being able to apply these patterns also helps in getting to grips with existing parallel codes and optimising poorly performing computation and data codes. Whilst the lectures take a top down approach, focusing on the patterns themselves, the practical exercises give the opportunity to explore the concepts by implementing pattern-based solutions to problems using common HPC technologies.

    The parallel patterns (known as a pattern language) that we cover are split into two categories.

    The closest to the problem area (and most abstract) are parallel algorithm strategy patterns and include:


    Task Parallelism
    Recursive Splitting
    Geometric Decomposition
    Pipeline
    Discrete Event
    Actors


    The other category of patterns is closer to the implementation and drives how the programmer should structure their code and data. These are implementation strategy patterns, and include:


    Master/Worker
    Loop Parallelism
    Fork/Join
    Shared Data and Queues
    Active Messaging


    Patterns are described on an abstract level and we will also discuss enhancements that can be made to improve performance/scalability but at the cost of code complexity. Practical implementations of these patterns are explored in depth in the hands-on exercises.

    Programming exercises use C and Fortran, with MPI and OpenMP.

    Trainer


    Nick Brown

    Nick is involved with the MSc in High Performance Computing, is the course organiser for the Parallel Design Patterns module and also supervises student dissertation projects.

    Course Pre-requisites


    Ability to program in C, C++ or Fortran.
    Familiarity with using MPI
    Some familiarity with OpenMP is beneficial but not essential


    Pre-course setup

    All course delegates will need to bring a wireless enabled laptop computer with them on the course. If you have an EduRoam account please ensure this is set up beforehand.

    Practical exercises will be done using a guest account on ARCHER. You will need to set up your laptop before the course with the required software. Setup information is available at www.archer.ac.uk/traini.....e.php for Windows, Mac and Linux.

    Learning outcomes

    On completion of this course students should be able to:


    Recognise different strategies for structuring the parallelism of a specific problem in hand
    Understand the trade-offs between different approaches to, and specialisations of, parallelisation
    Identify the most appropriate ways to structure code and data with respect to the parallel strategy adopted


    Course Materials

    www.archer.ac.uk/traini.....rham/

     

     

     

     
    events.prace-ri.eu/event/888/
    Aug 7 10:00 to Aug 9 18:30
    10
     
    11
     
    12
     
    13
     
    14
     
    15
     
    16
     
    17
     
    18
     
    19
     
    20
     
    21
     
    22
     
    23
     
    24
     
    25
     
    26
     
    With the recent revisions to the C++ language and standard library, the ways it is now being used are quite different. Used well, these features enable the programmer to write elegant, reusable and portable code that runs efficiently on a variety of architectures.

    However it is still a very large and complex tool. This course will cover a minimal set of features to allow an experienced non-C++ programmer to get to grips with language. These include: overloading, templates, containers, iterators, lambdas and standard algorithms. We will also briefly cover several important libraries for numerical computing.

    The course is meant to appeal to programmers with experience in another language (e.g. C, Fortran, Java, Python), it is not an introduction to programming.

    Course materials available soon

    Timetable

    Details to follow

    Tuesday

    9:00 - 10:00  Welcome and setup

    10:00 - 17:00 Day 1

    Wednesday

    9:00 - 16:00 Day 2
    events.prace-ri.eu/event/886/
    Aug 27 10:00 to Aug 28 18:30
    With the recent revisions to the C++ language and standard library, the ways it is now being used are quite different. Used well, these features enable the programmer to write elegant, reusable and portable code that runs efficiently on a variety of architectures.

    However it is still a very large and complex tool. This course will cover a minimal set of features to allow an experienced non-C++ programmer to get to grips with language. These include: overloading, templates, containers, iterators, lambdas and standard algorithms. We will also briefly cover several important libraries for numerical computing.

    The course is meant to appeal to programmers with experience in another language (e.g. C, Fortran, Java, Python), it is not an introduction to programming.

    Course materials available soon

    Timetable

    Details to follow

    Tuesday

    9:00 - 10:00  Welcome and setup

    10:00 - 17:00 Day 1

    Wednesday

    9:00 - 16:00 Day 2
    events.prace-ri.eu/event/886/
    Aug 27 10:00 to Aug 28 18:30
    29
     
    30
     
    31
     
     

     


    PTC events this month:

    August 2019
    Mon Tue Wed Thu Fri Sat Sun
     
    1
     
    2
     
    3
     
    4
     
    5
     
    6
     
    7
     
    8
     
    9
     
    10
     
    11
     
    12
     
    13
     
    14
     
    15
     
    16
     
    17
     
    18
     
    19
     
    20
     
    21
     
    22
     
    23
     
    24
     
    25
     
    26
     
    27
     
    28
     
    29
     
    30
     
    31