This course, partly a PRACE training event, is targeted at scientists who wish to extend their knowledge of Fortran to cover advanced features of the language.
Topics covered include:
- Best Practices
- global objects and interfaces
- abstract interfaces and the IMPORT statement
- object based programming
- Object-Oriented Programming
- type extension, polymorphism and inheritance
- binding of procedures to types and objects
- generic type-bound procedures
- abstract types and deferred bindings
- Fortran 2003 I/O extensions, especially user-defined derived type I/O
- OO Design Patterns: application of object-oriented programming
- creation and destruction of objects
- polymorphic objects and function arguments
- interacting objects
- dependency inversion: submodules and plugins
- IEEE features and floating point exceptions (omitted in the 2020 iteration)
- Interoperability with C
- mixed language programming patterns
- PGAS concepts and coarray basics
- dynamic entities
- advanced synchronization
- parallel programming patterns
- recent enhancements: collectives, events, teams, atomic subroutines
- performance aspects of coarray programming
To consolidate the lecture material, each day's lectures are complemented by hands-on sessions.
Dr. R. Bader, Dr. G. Brietzke, N. Patel (all LRZ)
from the virtual workshop "Advanced Fortran Topics", from Sep 22 - 26, 2020. Please contact the course tutors (Bader_at_lrz_dot_de or Brietzke_at_lrz_dot_de) if questions about any of the materials provided below arise.
- Slides for the first part (object oriented programming)
- Slides for the second part (interoperability with C)
- Slides for the third part (parallel programming with coarrays)
Please also see the next section for code downloads.
- example codes illustrating some of the slide material (ZIP archive).
- Exercise sheet (note: this was updated with an added teams exercise! Please also download the updated solutions archive below!)
- Exercise skeleton code (ZIP archive).
- Exercise solutions (ZIP archive). We strongly recommend looking at this after you've worked the solutions out for yourself)
Please note that the Makefiles contain definitions which may be only valid when running on LRZ HPC systems.
Copyright and Licensing
The copyright for this work is owned by Leibniz Supercomputing Centre.
This work is licensed under the Creative Commons Attribution Non-Commercial 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/ When attributing this work, please use the following text block:
- Advanced Fortran Topics, Leibniz Supercomputing Centre, 2020. Available under a Creative Commons Attribution Non-Commercial 3.0 Unported License.