Backward Compatibility WG 3/9/2010 update. Current Efforts API modifications – How to handle changes in API’s MPI_Count – How to handle this specific.

Slides:



Advertisements
Similar presentations
MPI 2.2 William Gropp. 2 Scope of MPI 2.2 Small changes to the standard. A small change is defined as one that does not break existing correct MPI 2.0.
Advertisements

Building Bug-Free O-O Software: An Introduction to Design By Contract A presentation about Design By Contract and the Eiffel software development tool.
MPI Message Passing Interface
Backward Compatibility WG “Where all the cool kids hang out”
What is HTML5…?. ”…removes the need for plugins” ”…can handle multimedia directly” ”…enables rich, interactive clients” ”…enables advanced visual designs”
Module 9: Virtual Memory
Presented by Sam Supervised by Prof. Michael Lyu.
CIS101 Introduction to Computing Week 12. Agenda Your questions Solutions to practice text Final HTML/JavaScript Project Copy and paste assignment JavaScript:
Instructor: Umar KalimNUST Institute of Information Technology Operating Systems Virtual Memory.
Portability Issues. The MPI standard was defined in May of This standardization effort was a response to the many incompatible versions of parallel.
NJIT Use Case Model Operation Contracts Prepared By: Sumit Sharma.
© 2007 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.1 Computer Networks and Internets with Internet Applications, 4e By Douglas.
1 Tuesday, October 10, 2006 To err is human, and to blame it on a computer is even more so. -Robert Orben.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 2: Operating-System Structures Modified from the text book.
Consensus Hunt Game Click here to continue Click here to continue.
11 Chapter 4 LOOPS AND FILES. 22 THE INCREMENT AND DECREMENT OPERATORS To increment a variable means to increase its value by one. To decrement a variable.
The Pseudocode Programming Process Chapter 9. Summary of Steps in Building Classes and Routines.
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2008 Pearson Education, Inc., Upper.
Module Code CT1H01NI: Study Skills For Communication Technology Lecture for Week Autumn.
Server Sockets: A server socket listens on a given port Many different clients may be connecting to that port Ideally, you would like a separate file descriptor.
Comparing AlgorithmsCSCI 1900 – Discrete Structures CSCI 1900 Discrete Structures Complexity Reading: Kolman, Sections 4.6, 5.2, and 5.3.
Arden Objects Proposal Arden SIG Meeting Jan. 14, 2003 San Antonio, Texas Presented by Roger Corman.
Specialized Sending and Receiving David Monismith CS599 Based upon notes from Chapter 3 of the MPI 3.0 Standard
Parallel Computing A task is broken down into tasks, performed by separate workers or processes Processes interact by exchanging information What do we.
SE: CHAPTER 7 Writing The Program
CS 206 Introduction to Computer Science II 09 / 10 / 2009 Instructor: Michael Eckmann.
1 The Message-Passing Model l A process is (traditionally) a program counter and address space. l Processes may have multiple threads (program counters.
Procedure Basics Computer Organization I 1 October 2009 © McQuain, Feng & Ribbens Procedure Support From previous study of high-level languages,
® IBM Software Group © 2007 IBM Corporation Best Practices for Session Management
Programming Process Programming in Java is an exercise in using pre-defined classes and writing new classes to fill in the gaps A procedure for determining.
Chapter 10 Defining Classes. The Internal Structure of Classes and Objects Object – collection of data and operations, in which the data can be accessed.
Covenant College November 27, Laura Broussard, Ph.D. Professor COS 131: Computing for Engineers Chapter 5: Functions.
Fall 2002CS 150: Intro. to Computing1 Streams and File I/O (That is, Input/Output) OR How you read data from files and write data to files.
MicroC/OS-II S O T R.  MicroC/OS-II (commonly termed as µC/OS- II or uC/OS-II), is the acronym for Micro-Controller Operating Systems Version 2.  It.
Chapter 3 Collections. Objectives  Define the concepts and terminology related to collections  Explore the basic structures of the Java Collections.
MPI Point to Point Communication CDP 1. Message Passing Definitions Application buffer Holds the data for send or receive Handled by the user System buffer.
SWE 513: Software Engineering
Sending large message counts (The MPI_Count issue)
C++ for Java Programmers Chapter 2. Fundamental Daty Types Timothy Budd.
Persistent Collective WG December 9, Basics Mirror regular nonblocking collective operations For each nonblocking MPI collective (including neighborhood.
SIP PUBLISH Method Jonathan Rosenberg dynamicsoft.
MPI Communicator Assertions Jim Dinan Point-to-Point WG March 2015 MPI Forum Meeting.
Basic Concepts and Definitions
1 2/2/05CS250 Introduction to Computer Science II Pointers.
 Variables are nothing but reserved memory locations to store values. This means that when you create a variable you reserve some space in memory. 
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch ISBN © 2012 Pearson Education, Inc., Upper Saddle River,
SIP Events: Changes and Open Issues IETF 50 / SIP Working Group Adam Roach
Advisory Council Shepherds: David Farmer & Chris Grundemann Global Policy for post exhaustion IPv4 allocation mechanisms by the IANA.
Announcements Assignment 2 Out Today Quiz today - so I need to shut up at 4:25 1.
OPERATORS IN C CHAPTER 3. Expressions can be built up from literals, variables and operators. The operators define how the variables and literals in the.
NetCDF Data Model Details Russ Rew, UCAR Unidata NetCDF 2009 Workshop
More Sophisticated Behavior
Classifications of Software Requirements
APPENDIX a WRITING SUBROUTINES IN C
Containers and Lists CIS 40 – Introduction to Programming in Python
Java Beans Sagun Dhakhwa.
Chapter 8 – Software Testing
SYSTEM ANALYSIS AND DESIGN
Object Oriented Programming
OpenStorage API part II
Module 9: Virtual Memory
Some Basics for Problem Analysis and Solutions
Some Basics for Problem Analysis
The Object-Oriented Thought Process Chapter 05
MPI-Message Passing Interface
Recommended Draft Policy ARIN : Post-IPv4-Free-Pool-Depletion Transfer Policy Staff Introduction.
Dynamic Data Structures and Generics
A QUICK START TO OPL IBM ILOG OPL V6.3 > Starting Kit >
Web-based Imaging Management System Working Group - WIMS
Module 9: Virtual Memory
Presentation transcript:

Backward Compatibility WG 3/9/2010 update

Current Efforts API modifications – How to handle changes in API’s MPI_Count – How to handle this specific issue Advice to ticket authors – General advice on API and functionality interaction with pre-existing API’s and code

Current Efforts Attempt #1 – “HDF style” – HDF versioning approach resisted by the forum PMPI interface concern Attempt #2 - Simple naming convention – Define changed: A new API is introduced which is intended to supersede an existing API (the previous version is removed, deprecated or discouraged) Includes argument or functionality changes – Define basename: the basename of an API is the name of the API with any trailing integers removed echo “API name” | sed –e ‘s|\([A-Za-z_]*\)[0-9]*|\1|g – If an API is changed, the new API will use the previous basename with an integer postfix which represents the version of the standard where the new version is first introduced. – For MPI-3 the post pended integer will be 3

Draft text As the MPI standard evolves, there are times where it is desirable to change the parameter list for a particular function in the standard. To preserve backward compatibility with existing applications, a new name is chosen for the new version of the API. This has occurred in the past when, for example, MPI_COMM_CREATE_KEYVAL was created to supersede MPI_KEYVAL_CREATE. In an effort to prepare for future changes of this nature, MPI will use an integer tag appended to existing function names whenever it is necessary to create a different but unique name for an existing function. The tag reflects the MPI Standard version in which the API was first introduced. For this version of the standard, the integer 3 is appended to any functions which require a new name. For example, this version of the standard will introduce MPI_Get_count3. Feedback: All but 1 of non- abstainers believed we should use descriptive names instead of version related names.

Naming Convention, cont. User: Do I need MPI_Send or MPI_Send3? Answer#1: Look up in the version of the standard you are using and see what the most recent name is for this API User: Aghhh Answer #2: All API’s should have the latest document appended to them Implementors, testors, PMPI Users: Aghhh

Naming Convention, cont. Compromise? – An implementation may include versions of all API’s that match the most recent version of the standard, but are not required. – MPI_Send3 is not standardized and its use is non- portable and non-compliant – You can still use it if your favorite MPI includes it. – Win win? Lose lose? Feedback: unanimously apposed to including the compromise

Draft Text For API's which have not changed, an implementation may chose to include a version of the API that includes the "3" designation, but doing so is not required by the standard and code written to use this API is not portable across MPI implementations. Providing these unofficial interfaces, however, may be convenient to developers who want to use the most recent version of all API's without having to determine the version of the standard in which an API was most recently changed. Feedback: based on feedback to use descriptive names, this text becomes unnecessary

Miscellaneous Clarifying unspecified functionality does not change version number “Large” changes will use a new API to make the functionality difference clear. Versioning number only appended to changed API’s, not new API’s

Draft Text If a version of the standard clarifies the behavior of an API which was previously undefined, the API version will not be incremented. Any non- trivial modification in the specification of an API will be handled by introducing a completely new API. New API's which are introduced by the MPI Standard will not have an appended version designation. Only API's which have been modified since their initial introduction are required to use an appended version designation.

MPI_Count Consensus (? Trusting Jeff S.’s report as I wasn’t here) on MPI_Count: – Change API’s only for MPIO functions – Related querying functions must be changed as well. – New functions to use MPI_Count – Must be at least 32-bit (signed) – Integer assignable (like MPI_Aint)

Draft Text The MPI-2.2 standard uses an int in C and an INTEGER in Fortran for MPI function arguments which communicate a number of data type elements between the caller and the MPI library. Examples include MPI_Send, MPI_Get_Count, MPI_Pack, MPI_Type_contiguous and MPI_File_write. The use of a signed 32-bit integer value limits the range of counts to values less than or equal to 2,147,483,648. As computing systems have grown in size, there are occasionally situations which require sending larger counts than allowed by a signed 32-bit integer. To accommodate such use, all new API's introduced in the MPI-3 standard that communicate the concept of a "count" will accept the type MPI_Count. The implementation of MPI_Count is determined by the MPI implementation with the restriction that it must be minimally capable of storing values from 0 to 2,147,483,648. Like MPI_Aint, MPI_Count must be capable of being assigned unsigned integer values. The MPI implementation should document the maximum integer value which can be assigned to MPI_Count for that implementation. Feedback: change 2 nd to last sentence to reference “integer base type” Feedback: MPI_Get_Count -> MPI_Get_count

Draft Text In order to change the API for all calls which could possibly make use of MPI_Count, name differentiation is necessary to allow for compatibility with existing MPI application code. This is particularly true when the API takes a pointer to memory which is intended to hold a count such as MPI_Get_count. Introducing name variations of existing functions is deemed costly in terms of the total number of API's that must be maintained, tested and documented. Therefore, existing MPI functions are being updated only when a clear need is evident. The MPI-3 standard changes the API's of MPI IO related functions which use a count argument. In addition, this requires that routines used to access values with MPI_Status also be changed. These API changes are being handled as described in the section "Handling of API changes". The following new API's are being introduced which us MPI_Count:

API’s changed MPIO API’s The following additional API’s: MPI_Status_set_elements MPI_Get_count MPI_Get_elements

Advice to ticket authors In progress What should this cover? Recommendations vs. watchdog group