2018 Workshop on Fortran Modernization for Scientific Application (ForMoSA)
from
Wednesday, 6 June 2018 (09:00)
to
Friday, 8 June 2018 (18:00)
Monday, 4 June 2018
Tuesday, 5 June 2018
Wednesday, 6 June 2018
09:00
Welcome
-
Alfio Lazzaro
(University of Zurich)
Welcome
Alfio Lazzaro
(University of Zurich)
09:00 - 09:10
Room: Y11 F 06
Welcome to the Workshop by the Local Organizers
09:10
Lecture
-
Arjen Markus
(Deltares)
Lecture
Arjen Markus
(Deltares)
09:10 - 10:30
Room: Y11 F 06
New Fortran 2003/2008 features (including Object-Oriented) and outlook to the new standard 2018. Best practices for Fortran.
10:30
Coffee-break (offered)
Coffee-break (offered)
10:30 - 11:00
Room: Y11 F 06
11:00
Hands-on
-
Arjen Markus
(Deltares)
Hands-on
Arjen Markus
(Deltares)
11:00 - 12:30
Room: Y11 F 06
12:30
Lunch (on your own)
Lunch (on your own)
12:30 - 13:30
Room: Y11 F 06
13:30
Lecture
-
Arjen Markus
(Deltares)
Lecture
Arjen Markus
(Deltares)
13:30 - 15:00
Room: Y11 F 06
15:00
Coffee-break (offered)
Coffee-break (offered)
15:00 - 15:30
Room: Y11 F 06
15:30
Hands-on
-
Arjen Markus
(Deltares)
Hands-on
Arjen Markus
(Deltares)
15:30 - 16:50
Room: Y11 F 06
16:50
Summary of day 1
Summary of day 1
16:50 - 17:00
Room: Y11 F 06
Thursday, 7 June 2018
09:00
Lecture: Mixed Language Programming
-
Hans Pabst
(Intel Semiconductor AG)
Mikko Byckling
(Intel Finland)
Lecture: Mixed Language Programming
Hans Pabst
(Intel Semiconductor AG)
Mikko Byckling
(Intel Finland)
09:00 - 10:15
Room: Y11 F 06
This lecture motivates the idea behind software interfaces, and reminds the audience on how static type checks are performed in C++, C, and FORTRAN (compile time). The basic terminology such as explicit/implicit interfaces, pass-by-reference or by-pointer as well as passing arguments by-value are settled. Practical code snippets illustrate how to interoperate between C, C++, modern FORTRAN (ISO_C_BINDING), and how basic compatibility with legacy codes (FORTRAN 77) is achieved. The focus will be on ISO_C_BINDING methodology, but practical hints are given on limitations as well as performance impact. Tools to automate language interoperability (to generate interfaces) are briefly mentioned, and low-level recipes for NM and LD/D are given (extract symbol names, wrap and intercept function calls). The lecture intends to build a solid base as well as practical collection for the following hands-on.
10:15
Hands-on: Mixed Language Programming
-
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
Hands-on: Mixed Language Programming
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
10:15 - 10:30
Room: Y11 F 06
10:30
Coffee-break (offered)
Coffee-break (offered)
10:30 - 10:45
Room: Y11 F 06
10:45
Hands-on: Mixed Language Programming (continued)
-
Hans Pabst
(Intel Semiconductor AG)
Mikko Byckling
(Intel Finland)
Hands-on: Mixed Language Programming (continued)
Hans Pabst
(Intel Semiconductor AG)
Mikko Byckling
(Intel Finland)
10:45 - 11:30
Room: Y11 F 06
11:30
Lecture: Introduction to levels of parallelism in a modern HPC system
-
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
Lecture: Introduction to levels of parallelism in a modern HPC system
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
11:30 - 12:30
Room: Y11 F 06
This lecture presents notable Fortran features such as array slices and array expressions (incl. caveats with temporaries), elemental functions, and extends the principles to explicit SIMD vectorization based on the OpenMP standard. This part concludes on how to target modern vector extension using compiler flags beyond an umbrella optimization setting. OpenMP constructs targeting thread-level parallelism may be covered by an own lecture; however a collection of common code patterns is presented that can help to improve multicore scalability (synchronization, thread-local storage). The lecture concludes with an Application Performance Snapshot using Intel VTune Amplifier, a tool that helps to not only speculate about performance, but rather analyze a given code at an algorithmic as well as target-specific level.
12:30
Lunch (on your own)
Lunch (on your own)
12:30 - 13:30
Room: Y11 F 06
13:30
Lecture: SIMD programming in Fortran
-
Hans Pabst
(Intel Semiconductor AG)
Mikko Byckling
(Intel Finland)
Lecture: SIMD programming in Fortran
Hans Pabst
(Intel Semiconductor AG)
Mikko Byckling
(Intel Finland)
13:30 - 14:30
Room: Y11 F 06
14:30
Coffee-break (offered)
Coffee-break (offered)
14:30 - 14:45
Room: Y11 F 06
14:45
Lecture: Multithreaded programming with OpenMP in Fortran
-
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
Lecture: Multithreaded programming with OpenMP in Fortran
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
14:45 - 15:45
Room: Y11 F 06
15:45
Hands-on: SIMD and multithreaded programming
-
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
Hands-on: SIMD and multithreaded programming
Mikko Byckling
(Intel Finland)
Hans Pabst
(Intel Semiconductor AG)
15:45 - 16:45
Room: Y11 F 06
People will generally play with the constructs introduced in the lecture, and either (A) conclude with an issue analysis for a given code (using Intel VTune Amplifier or Intel Vector Advisor), or (b) enter into a competition on code performance that may resolve scalability issues and/or improving the performance quality of the compiled code.
16:45
Summary of day 2
Summary of day 2
16:45 - 16:55
Room: Y11 F 06
17:00
Apero (offered)
Apero (offered)
17:00 - 19:00
Room: Y13-M-Foyer Aquarium
Friday, 8 June 2018
09:00
Lecture: Useful tools and techniques for Fortran projects
-
Bálint Aradi
(Bremen Center for Computational Materials Science, University of Bremen)
Lecture: Useful tools and techniques for Fortran projects
Bálint Aradi
(Bremen Center for Computational Materials Science, University of Bremen)
09:00 - 10:30
Room: Y11 F 06
- Fortran meta-programming using preprocessor - Unit testing - Test coverage test - Source code documentation
10:30
Coffee-break (offered)
Coffee-break (offered)
10:30 - 11:00
Room: Y11 F 06
11:00
Hands-on: Fortran meta-programming with Fypp
-
Bálint Aradi
(Bremen Center for Computational Materials Science, University of Bremen)
Hands-on: Fortran meta-programming with Fypp
Bálint Aradi
(Bremen Center for Computational Materials Science, University of Bremen)
11:00 - 12:30
Room: Y11 F 06
12:30
Lunch (on your own)
Lunch (on your own)
12:30 - 13:30
Room: Y11 F 06
13:30
Hands-on: Unit testing, test coverage, source code documentation
-
Bálint Aradi
(Bremen Center for Computational Materials Science, University of Bremen)
Hands-on: Unit testing, test coverage, source code documentation
Bálint Aradi
(Bremen Center for Computational Materials Science, University of Bremen)
13:30 - 14:50
Room: Y11 F 06
14:50
Summary of day 3 and wrap-up of the workshop
Summary of day 3 and wrap-up of the workshop
14:50 - 15:00
Room: Y11 F 06