Skip to main content

This is not your parents’ Fortran: Object-Oriented, Parallel and Functional Programming in Modern Fortran

The Oak Ridge Leadership Computing Facility (OLCF) will host “This is not your parents’ Fortran: Object-Oriented, Parallel and Functional Programming in Modern Fortran” from Sandia National Laboratory’s, Damian Rouson. This event is a three-day workshop.

Participation is limited to those who already have access to the Oak Ridge National Laboratory (ORNL) campus.

Registration is required.

[tab: Overview]

Fortran 2003 explicitly supports object-oriented programming (OOP). OOP aims to increase a program’s maintainability in part by reducing cross-module data dependencies and to increase a program’s reusability in part by providing for extensible derived types. Emerging compiler support for Fortran 2003 inspires a more modern program design and implementation style. This course provides the requisite skills. Day 1 introduces OOP in Fortran 2003 and an OOP style inspired by the functional programming paradigm. Day 2 will introduce patterns of best practice Object-Oriented Design (OOD) and will also introduce parallel programming with Fortran coarrays. Day 3 will introduce two open-source, parallel numerical libraries that present modern Fortran interfaces: ForTrilinos and PSBLAS. The presented examples will utilize introductory-level numerical algorithms from linear algebra and differential equations inspired by multiphysics modeling that is coupled field problems common to many interdisciplinary, engineering, and physical science simulations.

Approximately half the course is lecture. The other half is evenly split between presenting code examples and hands-on student exercises. The presented examples and student exercises leverage Fortran 95, 2003, and 2008 features currently supported by the open-source GNU Fortran compiler.

This course will be given by Damian Rouson, Karla Morris and Salvatore Filippone from Sandia National Laboratories in the US.

[tab: Agenda]

Tuesday, Feb. 5, 2013

9:00‐9:15 Introductions
9:15‐9:30 Background & Motivation
9:30‐10:00 Chapter 1. Development Costs & Complexity, Example: Fireworks simulation
10:00‐10:45 Chapter 2. Object-Oriented Analysis, Design, & Programming
10:45-‐11:00 Break
11:00-‐12:00 Examples: (2.1) OO fireworks, (2.2) Inheritance, (2.3) Composition
12:00-‐1:00 Lunch Break
1:00-1:30 Chapter 3. Scientific OOP (SOOP): Functional programming via abstract data type calculus
1:30‐2:00 Functional OOP: (3.1) SOOP fireworks example
2:00‐4:00 Hands‐On Student Exercises: (i) OO Basketball (ii) Inheritance, (iii) Composition, (iv) Functional

Wednesday, Feb. 6, 2013

9:00‐9:30 Available for Q&A
9:30‐9:45 Chapter 4. Design Patterns Basics
9:45‐10:15 Chapter 8. Puppeteer Pattern, Example: Puppeteer Fireworks
10:15‐10:45 Chapter 6. The Abstract Calculus Pattern, Example: (iii) Abstract Calculus Fireworks
10:45‐11:00 Break
11:00‐11:30 Chapter 7. The Strategy Pattern, Example: (i) Strategic Fireworks
11:30‐12:00 Chapter 9. Factory Patterns, Example : (iv) Factory Fireworks
12:00‐1:00 Lunch Break
1:00‐2:00 Chapter 12. Fortran 2008 coarrays: A parallel PDE solver
2:00‐4:00 Hands‐On Student Exercises: Basketball (i) Abstract Calculus (ii) Strategy, (iii) Factory, (iv) Coarray

Thursday, Feb. 8, 2013

9:00‐9:30 Available for Q&A
9:30‐11:00 Chapers 11‐12. ForTrilinos: Design Patterns and Object‐Oriented Sparse Linear Solvers
11:00‐11:15 Break
11:15‐12:00 Hands‐On Student Exercise: Finite differences with ForTrilinos
12:00‐1:00 Lunch Break
1:00‐2:30 PSBLAS: Design Patterns and Object Oriented Sparse Matrix Computations
2:30‐2:45 Break
2:45‐3:45 Hands‐On Student Exercise: Matrix‐vector multiply with PSBLAS
3:45‐4:00 Feedback Form & Closing Discussion

Chapter numbers refer to Rouson, Xia & Xu (2011) Scientific Software Design: The Object‐Oriented Way, Cambridge University Press.

[tab: Registration]

Date

Feb 05 - 07 2013
Expired!

Location

JICS Auditorium, Building 5100
1 Bethel Valley Roak

Organizer

Robert Whitten
Phone
(865) 241-1196
Email
[email protected]
QR Code