Navigation and service

Training course "Improving Software Performance - Parallel Programming" @ HLRS

18.Sep.2018 09:00
HLRS Stuttgart

Parallel programming is considered a key to improving software performance. For code development on parallel systems, application programmers need not only a thorough understanding of parallel computing system architectures and programming models like MPI or OpenMP, but also the ability to implement directives, libraries, and important parallelization concepts efficiently.

The module "Parallel Programming" will provide such knowledge and skills. In addition to covering the theoretical foundations of parallelization, the course will include concrete programming exercies that offer the opportunity to gain a deeper understanding and practical expertise. The module is ideal for programmers and developers with experience in C, C++, or Fortran.

Module Contents

  • What is HPC?
  • Performance
  • Vectorization
  • Parallelization: thinking in parallel
  • Parallelizability of software, calculations, and requirements
  • OpenMP
  • Parallel programming models: introduction to MPI (C++, Fortran)
  • Parallel programming models: advanced MPI (C++, Fortran)
  • Parallel programming models: parallel I/O
  • Parallel programming models: hybrid programming - MPI + X
  • Other parallel programming models
  • Parallelization: scaling
  • Parallelization: domain decomposition and load balancing
  • Parallelization: parallel design patterns
  • Parallelization: parallel aspects of programming languages
  • Heterogeneous computing systems and graphic cards
  • Parallel numerical libraries
  • Parallelization strategies: deciding on a programming model

Flexible Learning

The module is conducted in a blended learning format, meaning that it combines self-learning phases and classroom instruction. This approach offers flexiblility in the time required to work through the course content, so that continuing education can take place in parallel with job and family responsibilities.

Self-directed learning is complemented with regular online meetings in a virtual classroom, which take place on Monday evenings.

Time Commitment

Each module requires a time commitment of approximately 125 hours over the span of 12-14 weeks. Course time is divided as follows:

  • 8 hours per week per module, including a weekly online meeting (Monday evenings)
  • 2 classes at HLRS in Stuttgart

Training course "Advanced C++ with Focus on Software Engineering" @ HLRS

19.Nov.2018 08:30
22.Nov.2018 16:30
HLRS Stuttgart

This advanced C++ training is a course on object-oriented (OO) software design with the C++ programming language. The focus of the training are the essential OO and C++ software development principles, concepts, idioms, and best practices, which enable programmers to create professional, high-quality code. Additionally, the course gives insight into kernel development with C++. The course will not address special areas and applications of C++, such as for instance Template Meta Programming (TMP), or the quirks and curiosities of the C++ language. It rather teaches guidelines to develop mature, robust, maintainable, and efficient C++ code.

After this course, participants will:

  • have a detailed understanding of the essential OO design principles
  • have gained knowledge about fundamental C++ programming concepts and idioms
  • be able to properly design classes and class interfaces
  • know about the importance of exception safe programming
  • have gained insight into kernel development with C++
  • avoid the usual pitfalls in the context of inheritance
  • comprehend the advantages of non-intrusive design
  • understand the virtue of clean code

Training course "Software Development in Science" @ JSC

19.Nov.2018 09:00
20.Nov.2018 16:30
JSC, Jülich

Scientific research increasingly relies on software. Software engineering and development play a key role in the production of software. Thus, formal education and training in software development methodologies become more important, particularly in larger software projects. Software development in teams needs formalized processes to get a reliable outcome. The aim of this course is to give an introduction to established software development methodologies and best practices. The lessons learned in this workshop can be applied to large projects but will also help individual researchers to improve the quality of their software.

Topics covered are:

  • Overview of software development methodologies
  • Scrum and agile practices
  • Version control: hands-on training, working with Git and GitHub
  • Open source and community building
  • Licenses and copyright
  • Software testing and quality
  • Documentation

Training course "Introduction to the programming and usage of the supercomputing resources at Jülich" @ JSC

22.Nov.2018 13:00
23.Nov.2018 16:30
JSC, Jülich

Through the John von Neumann Institute for Computing, Research Centre Juelich provides two major high-performance computing resources to scientific user groups from throughout Germany and Europe. The aim of this course is to give new users of the supercomputing resources an introductory overview of the systems and their usage, and to help them in making efficient use of their allocated resources.

Training course "Advanced parallel programming with MPI and OpenMP" @ JSC

26.Nov.2018 09:00
28.Nov.2018 16:30
JSC, Jülich

The focus is on advanced programming with MPI and OpenMP. The course addresses participants who have already some experience with C/C++ or Fortran and MPI and OpenMP, the most popular programming models in high performance computing (HPC).

The course will teach newest methods in MPI-3.0/3.1 and OpenMP-4.5, which were developed for the efficient use of current HPC hardware. Topics with MPI are the group and communicator concept, process topologies, derived data types, the new MPI-3.0 Fortran language binding, one-sided communication and the new MPI-3.0 shared memory programming model within MPI. Topics with OpenMP are the OpenMP-4.0 extensions, as the vectorization directives, thread affinity and OpenMP places. (The GPU programming with OpenMP-4.0 directives is not part of this course.) The course also contains performance and best practice considerations, e.g., with hybrid MPI+OpenMP parallelisation. The course ends with a section presenting tools for parallel programming.

Hands-on sessions (in C and Fortran) will allow users to immediately test and understand the taught constructs of the Message Passing Interface (MPI) and the shared memory directives of OpenMP. This course provides scientific training in Computational Science, and in addition, the scientific exchange of the participants among themselves. It is organized by JSC in collaboration with HLRS. (Content Level: 20% for beginners, 50% intermediate, 30% advanced).

Training course "Machine Learning with R at LRZ" @ LRZ

27.Nov.2018 09:00
27.Nov.2018 18:00
LRZ Garching

The statistical programming language R offers a large amount of add-on packages that implement ideas and methods from the field of machine learning.

The mlr package (Machine Learning in R) provides a unified interface to many of these algorithms. It allows to utilize supervised methods like classification, regression and survival analyses along with their corresponding optimization and evaluation methods, as well unsupervised methods like clustering. This includes a consistent infrastructure for common data pre- and post-processing steps, feature selection, hyperparameter optimization, resampling and model comparison. As these tasks become computationally expensive, parallelization is desirable and, for high performance cluster systems, conveniently facilitated by the batchtools package.

In this full-day workshop, we will provide an introduction to the mlr package and demonstrate how it can be used to deploy highly parallelized machine learning tasks on LRZ high performance computing systems, using the batchtools package. Participants will be able to work on instructor-led excercises and hands-on examples.

Training course "Fortran for Scientific Computing" @ HLRS

03.Dec.2018 08:30
07.Dec.2018 15:30
HLRS Stuttgart

This course is dedicated for scientists and students to learn (sequential) programming with Fortran of scientific applications. The course teaches newest Fortran standards. Hands-on sessions will allow users to immediately test and understand the language constructs. This workshop provides scientific training in Computational Science, and in addition, the scientific exchange of the participants among themselves.

Training course "Introduction to C" @ JSC

03.Dec.2018 09:00
12.Dec.2018 16:30
JSC, Jülich

An introduction to the programming language C is given. This language is often used in non-numeric data processing and is also suitable for programming tasks close to the system.

This course will be given in German.

Training course "Parallel Programming with MPI, OpenMP, and Tools" @ ZIH, Dresden

04.Feb.2019 08:30
08.Feb.2019 12:30
ZIH Dresden

The focus is on programming models MPI and OpenMP. Hands-on sessions (in C and Fortran) will allow users to immediately test and understand the basic constructs of the Message Passing Interface (MPI) and the shared memory directives of OpenMP. The last part is dedicated to tools. This course provides scientific training in Computational Science, and in addition, the scientific exchange of the participants among themselves. It is organized by ZIH in collaboration with HLRS. (Content Level: 70% for beginners, 30% advanced)

Training course "Programming with Fortran" @ LRZ

06.Mar.2019 09:00
08.Mar.2019 18:00
LRZ Garching

This three day course is targeted at scientists with little or no knowledge of the Fortran programming language, but need it for participation in projects using a Fortran code base, for development of their own codes, and for getting acquainted with additional tools like debugger and syntax checker as well as handling of compilers and libraries. The language is for the most part treated at the level of the Fortran 95 standard; features from Fortran 2003 are limited to improvements on the elementary level. Advanced Fortran features like object-oriented programming or coarrays will be covered in a follow-on course in autumn.

To consolidate the lecture material, each day's approximately 4 hours of lecture are complemented by 3 hours of hands-on sessions.

Note: Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, basic programming, vi or emacs editors).

Training course "Introduction to ANSYS Fluid Dynamics (CFX, Fluent) on LRZ HPC Systems" @ LRZ

08.Apr.2019 09:00
12.Apr.2019 17:00
LRZ Garching

The focus of this 5-day course is targeted on researchers with good knowledge in the fundamentals of fluid mechanics and potentially with some first experience in Computational Fluid Dynamics (CFD). The course will focus on the introduction to the ANSYS Fluid Dynamics software packages, i.e. ANSYS CFX and ANSYS Fluent. Further, participants will be familiarized with the main steps of the typical CFD workflow, in particular with CFD preprocessing/ CFD setup creation, serial and parallel solver execution and CFD postprocessing in both CFD solver systems CFX and Fluent. Correctness of boundary conditions and CFD setup specifications, solver convergence control, solver monitoring, customization capabilities of the solvers and the post­pro­cessing as well as recommended CFD best practices are covered.

The course further focusses on the usage of the ANSYS CFD software in a typical Linux cluster environment for massively parallel computations. This includes a basic Linux primer, introduction to LRZ HPC systems and network environment, intro to the use of schedulers like Slurm and LoadLeveler, CFD remote visualization and aspects of successful CFD simulation strategies in such an HPC environment. Finally some aspects of workflow automation using Python as scripting language are targeted as well.

What participants will not learn in this course?

  • Advanced aspects of Linux and computer network infrastructure
  • Geometry creation (CAD, SpaceClaim, DM) and meshing
  • Advanced topics of CFD simulation, like e.g. acoustics, Eulerian and Lagrangian multiphase flows, combustion, radiation, FSI etc.
  • Advanced topics of CFD solver customization with User FORTRAN or User Defined Functions (UDF’s) written in C language.