Everyone loves Fortran. 1. Deprecate mpif.h Fortran refresher Two Fortran interfaces for each MPI function Available in three different bindings Integer.

Slides:



Advertisements
Similar presentations
Let’s Look at Some Functions Boolean Functions – functions that return ‘true’ or ‘false’ Other Functions – some with arguments, some with none.
Advertisements

Chapter 7 Introduction to Procedures. So far, all programs written in such way that all subtasks are integrated in one single large program. There is.
Programming Languages and Paradigms
CSI 3120, Implementing subprograms, page 1 Implementing subprograms The environment in block-structured languages The structure of the activation stack.
Subprogram Control - Data sharing Mechanisms to exchange data Arguments - data objects sent to a subprogram to be processed. Obtained through  parameters.
An Open-Source, Object-Oriented General Cartographic Transformation Program (GCTP) Michael S. Williams, Michael P. Finn*, and Robert A. Buehler** United.
Computational Methods of Scientific Programming Lecturers Thomas A Herring, Room A, Chris Hill, Room ,
Chapter 5: Elementary Data Types Properties of types and objects –Data objects, variables and constants –Data types –Declarations –Type checking –Assignment.
Introduction to Fortran Fortran Evolution Drawbacks of FORTRAN 77 Fortran 90 New features Advantages of Additions.
Encapsulation by Subprograms and Type Definitions
CS Winter 2011 Introduction to the C programming language.
Chapter 3 Program translation1 Chapt. 3 Language Translation Syntax and Semantics Translation phases Formal translation models.
CS-341 Dick Steflik Introduction. C++ General purpose programming language A superset of C (except for minor details) provides new flexible ways for defining.
Chapter 10 Modules and programming with subroutines.
Programming in Scala Chapter 1. Scala: both object-oriented and functional Scala blends –object-oriented and –functional programming in a –statically.
Pointers Applications
Chapter 9 Introduction to Procedures Dr. Ali Can Takinacı İstanbul Technical University Faculty of Naval Architecture and Ocean Engineering İstanbul -
Chapter 12 Pointers and linked structures. 2 Introduction  The data structures that expand or contract as required during the program execution is called.
Signed Numbers CS208. Signed Numbers Until now we've been concentrating on unsigned numbers. In real life we also need to be able represent signed numbers.
Language Issues Misunderstimated? Sublimable? Hopefuller? "I know how hard it is for you to put food on your family.” "I know the human being and fish.
Fortran Background – History and Motivation Shirley Moore CPS5401 Fall September 3,
Functions. Program complexity the more complicated our programs get, the more difficult they are to develop and debug. It is easier to write short algorithms.
Introduction to FORTRAN
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
XP New Perspectives on Microsoft Office Access 2003 Tutorial 12 1 Microsoft Office Access 2003 Tutorial 12 – Managing and Securing a Database.
Programming. What is a Program ? Sets of instructions that get the computer to do something Instructions are translated, eventually, to machine language.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Classes: A Deeper Look Part.
FORTRAN FORmula TRANslator -Anand Trivedi. HISTORY  Designed and written from scratch in by an IBM team lead by John W. Backus as the first.
Functions. Type of Subprograms Fortran 90/95 allows for two types of subprograms: –Functions, and –Subroutines. In general, there are two forms of subprograms:
Operator Overloading Version 1.0. Objectives At the end of this lesson, students should be able to: Write programs that correctly overload operators Describe.
1 CS Programming Languages Class 15 October 17, 2000.
More about Class 靜宜大學資工系 蔡奇偉副教授 ©2011. 大綱 Instance Class Members Class members can be associated with an instance of the class or with the class as a.
Programming Fundamentals. Today’s Lecture Why do we need Object Oriented Language C++ and C Basics of a typical C++ Environment Basic Program Construction.
Module and Data Sharing. Programming in the Large Software, in general, is large having multiple units Multiple units designed and developed independently.
Alternative ProcessorsHPC User Forum Panel1 HPC User Forum Alternative Processor Panel Results 2008.
XLF 9.1 Ian J. Bush Computational Science and Engineering Department CCLRC Daresbury Laboratory Warrington WA4 4AD
CSC3315 (Spring 2008)1 CSC 3315 Subprograms Hamid Harroud School of Science and Engineering, Akhawayn University
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
Ch. 5 Ch. 51 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (more notes) Dr. Carter Tiernan.
Module 3: Steering&Arrays #1 2000/01Scientific Computing in OOCourse code 3C59 Module 3: Algorithm steering elements If, elseif, else Switch and enumerated.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
Fortran 95 for the.NET Framework David Bailey
CPSC 252 The Big Three Page 1 The “Big Three” Every class that has data members pointing to dynamically allocated memory must implement these three methods:
Kirk Scott Computer Science The University of Alaska Anchorage 1.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
ICOM 4035 – Data Structures Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Lecture 10 – September 20, 2001.
07/12/ Data Representation Two’s Complement & Binary Arithmetic.
Object-Oriented Programming Part 3 Bank Account Embezzling Hood College JETT Workshop Dept. of Computer Science February Objectives of this presentation:
Chapter 3 Collections. Objectives  Define the concepts and terminology related to collections  Explore the basic structures of the Java Collections.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
Ch. 5 Ch. 51 jcmt Summer 2003Programming Languages CSE3302 Programming Languages (more notes) Summer 2003 Dr. Carter Tiernan.
Sending large message counts (The MPI_Count issue)
Polymorphism, Virtual Methods and Interfaces Version 1.1.
1 Becoming More Effective with C++ … Day Two Stanley B. Lippman
Modern C++ in practice.
1 CS Programming Languages Class 22 November 14, 2000.
Programming Fundamentals Enumerations and Functions.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
PYTHON FOR HIGH PERFORMANCE COMPUTING. OUTLINE  Compiling for performance  Native ways for performance  Generator  Examples.
Copyright © Jim Fawcett Spring 2017
SQL – Python and Databases
Names and Attributes Names are a key programming language feature
APPENDIX a WRITING SUBROUTINES IN C
Environment Assessment
The Forth Language CSC 507 – Roy Ford November 22, 2005.
Pointers and Pointer-Based Strings
Data Types.
Microsoft Office Access 2003
Pointers and Pointer-Based Strings
Outline Announcements Differences between FORTRAN and C
Presentation transcript:

Everyone loves Fortran

1. Deprecate mpif.h

Fortran refresher Two Fortran interfaces for each MPI function Available in three different bindings Integer MPI handles Integer MPI handles Derived type MPI handles Derived type MPI handles mpif.h mpi module mpi module mpi_f08 module mpi_f08 module

The goal Deprecate mpif.h Leave mpi module alone (not deprecated) Integer MPI handles Integer MPI handles Derived type MPI handles Derived type MPI handles mpif.h mpi module mpi module mpi_f08 module mpi_f08 module

Why bother? Still going to have the integer MPI handle interface, so why bother deprecating mpif.h? Integer MPI handles Integer MPI handles mpif.h mpi module mpi module

Why bother? 1.Signal to the user community that the integer MPI handle interface is old Integer MPI handles Integer MPI handles mpif.h mpi module mpi module

Why bother? 2.Most (all?) MPI implementations’ mpif.h do not contain interfaces (prototypes). The mpi module must contain interfaces. Integer MPI handles Integer MPI handles mpif.h mpi module mpi module

Consequences mpif.h is frozen – No MPI-3.1/beyond functions will be added to mpif.h

Consequences HOWEVER – Most (all?) MPI implementations’ mpif.h do not contain interfaces (prototypes) – So most users will (continue to) be able to use MPI-3.1/beyond subroutines in mpif.h subroutines, anyway

Consequences Technically, mpif.h will be frozen Practically: – Deprecated, not removed – No legacy codes will break – Extending legacy/mpif.h codes to use MPI- 3.1/beyond functions will likely still work  Unless they use new MPI-3.1+ constants! These will not be in mpif.h

Consequences We expect most users will ignore the fact that mpif.h is deprecated Codes that do convert to the mpi module: – 2 line code change – Get compile-time type checking Paves the way for removing the integer handle interfaces in ?MPI-10? – …and MPI implementations will continue to have it for even longer than that

Public service announcement STOP USING mpif.h! All modern Fortran compilers have strong “use mpi” Open MPI support – Modern = Gfortran >= v4.9 – Modern = any other Fortran compiler From OMPI SC’14 BOF slides

Public service announcement Change two lines of code subroutine foo implicit none include ‘mpif.h’ integer :: a … subroutine foo use mpi implicit none integer :: a … From OMPI SC’14 BOF slides

Public service announcement Stop the madness mpif.h From OMPI SC’14 BOF slides

2. Deprecate MPI_SIZEOF

Fortran refresher MPI_SIZEOF added in MPI-2 – Circa 1996 – No other way in Fortran (90) to get the size, in bytes, of an element – MPI_SIZEOF returns size of a single element (even if you pass in an array)

Fortran refresher MPI_SIZEOF – Number of bytes of a single element F08 storage_size() intrinsic – Number of bits of a single element F08 c_sizeof() intrinsic – Same result of sizeof() in C

The goal Deprecate MPI_SIZEOF in MPI-4 – Circa 2016

Why bother? MPI_SIZEOF no longer necessary – F08 has c_sizeof() and storage_size() intrinsics MPI should not subvert native language constructs – Particularly for MPI functions explicitly added to make up for a (previous) language deficiency MPI_SIZEOF is somewhat annoying to implement

Consequences Plenty of time for any Fortran compiler who has not already implemented these to actually implement them

Consequences There are codes using MPI_SIZEOF today

Consequences These codes will require a minor code change

Consequences MPI implementations will carry MPI_SIZEOF forever