RMA Considerations for MPI-3.1 (or MPI-3 Errata)

Slides:



Advertisements
Similar presentations
Proposal (More) Flexible RMA Synchronization for MPI-3 Hubert Ritzdorf NEC–IT Research Division
Advertisements

Read Modify Write for MPI Howard Pritchard (Cray) Galen Shipman (ORNL)
MPI3 RMA William Gropp Rajeev Thakur. 2 MPI-3 RMA Presented an overview of some of the issues and constraints at last meeting Homework - read Bonachea's.
File Consistency in a Parallel Environment Kenin Coloma
Lecture 12 Reduce Miss Penalty and Hit Time
Multi-core systems System Architecture COMP25212 Daniel Goodman Advanced Processor Technologies Group.
Performance of Cache Memory
Virtual Memory Introduction to Operating Systems: Module 9.
MPI Progress-Independent Communicators. Pavan Balaji, Argonne National Laboratory Shared Object Semantics in MPI P0 (Thread 0)P0 (Thread 1)P1 MPI_Irecv(…,
Slides 8d-1 Programming with Shared Memory Specifying parallelism Performance issues ITCS4145/5145, Parallel Programming B. Wilkinson Fall 2010.
Memory Management (II)
CS 333 Introduction to Operating Systems Class 18 - File System Performance Jonathan Walpole Computer Science Portland State University.
CS 61C L03 C Arrays (1) A Carle, Summer 2005 © UCB inst.eecs.berkeley.edu/~cs61c/su05 CS61C : Machine Structures Lecture #3: C Pointers & Arrays
Bulk Synchronous Parallel (BSP) Model Illustration of a BSP superstep.
计算机系 信息处理实验室 Lecture 14 Cache Manager
Memory Consistency Models Some material borrowed from Sarita Adve’s (UIUC) tutorial on memory consistency models.
Data Objects (revisited) Recall that values are stored in data objects, and that each data object holds one value of a particular type. Data objects may.
15-740/ Oct. 17, 2012 Stefan Muller.  Problem: Software is buggy!  More specific problem: Want to make sure software doesn’t have bad property.
RFC: Breaking Free from the Collective Requirement for HDF5 Metadata Operations.
Overloading Binary Operators Two ways to overload –As a member function of a class –As a friend function As member functions –General syntax Data Structures.
Copyright © 2005 Elsevier Chapter 8 :: Subroutines and Control Abstraction Programming Language Pragmatics Michael L. Scott.
Copyright © 2002, Systems and Computer Engineering, Carleton University a-JavaReview.ppt * Object-Oriented Software Development Unit.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
MPI-3 Hybrid Working Group Status. MPI interoperability with Shared Memory Motivation: sharing data between processes on a node without using threads.
Ch 10 Shared memory via message passing Problems –Explicit user action needed –Address spaces are distinct –Small Granularity of Transfer Distributed Shared.
Pointers: Basics. 2 What is a pointer? First of all, it is a variable, just like other variables you studied  So it has type, storage etc. Difference:
Blackfin Array Handling Part 1 Making an array of Zeros void MakeZeroASM(int foo[ ], int N);
1 CS.217 Operating System By Ajarn..Sutapart Sappajak,METC,MSIT Chapter 2 Computer-System Structures Slide 1 Chapter 2 Computer-System Structures.
CS333 Intro to Operating Systems Jonathan Walpole.
Chapter 10: Classes and Data Abstraction. Objectives In this chapter, you will: Learn about classes Learn about private, protected, and public members.
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.
Secure Operating Systems Lesson F: Capability Based Systems.
11.1 Silberschatz, Galvin and Gagne ©2005 Operating System Principles 11.5 Free-Space Management Bit vector (n blocks) … 012n-1 bit[i] =  1  block[i]
MPI Communicator Assertions Jim Dinan Point-to-Point WG March 2015 MPI Forum Meeting.
Issues #1 and #3 Fault Tolerance Working Group December 2015 MPI Forum.
Chapter 10: Classes and Data Abstraction. Classes Object-oriented design (OOD): a problem solving methodology Objects: components of a solution Class:
Introduction to C Programming CE Lecture 6 Functions, Parameters and Arguments.
Binding & Dynamic Linking Presented by: Raunak Sulekh(1013) Pooja Kapoor(1008)
Group Members Hamza Zahid (131391) Fahad Nadeem khan Abdual Hannan AIR UNIVERSITY MULTAN CAMPUS.
CMSC 611: Advanced Computer Architecture
Jonathan Walpole Computer Science Portland State University
Software Coherence Management on Non-Coherent-Cache Multicores
Data Prefetching Smruti R. Sarangi.
Chapter 8: Main Memory.
Distributed Shared Memory
Minh, Trautmann, Chung, McDonald, Bronson, Casper, Kozyrakis, Olukotun
OpenStorage API part II
Multiprocessor Cache Coherency
Chapter 9 :: Subroutines and Control Abstraction
Chap. 8 :: Subroutines and Control Abstraction
Chap. 8 :: Subroutines and Control Abstraction
Computer-System Architecture
Module 2: Computer-System Structures
Control unit extension for data hazards
Morgan Kaufmann Publishers Memory Hierarchy: Cache Basics
Data Prefetching Smruti R. Sarangi.
Chapter 2: Operating-System Structures
Introduction to Operating Systems
Function “Inputs and Outputs”
Module 2: Computer-System Structures
Translation Buffers (TLB’s)
Data Structures and Algorithms Introduction to Pointers
Lecture 3: Main Memory.
Module 2: Computer-System Structures
Translation Buffers (TLBs)
Chapter 2: Operating-System Structures
Module 2: Computer-System Structures
Synonyms v.p. x, process A v.p # index Map to same physical page
Review What are the advantages/disadvantages of pages versus segments?
Presentation transcript:

RMA Considerations for MPI-3.1 (or MPI-3 Errata)

Minor wording correction In our semantics and correctness section, for the SEPARATE memory model, we state that a PUT/ACCUMULATE must not access a target window once a local update or PUT/GET to an overlapping window has started. Pg. 455, lines 32-39 Recommendation: we change this to "... to the same or an overlapping window has started", since it obviously applies to the same window as well, and not just overlapping windows.

Minor wording correction (contd.) The standard currently states, "A put or accumulate must not access a target window once a load/store update or a put ... ". The term "load/store update" has caused a major confusion even to the RMA working group, for example on the slide that we put together for compatibility between load, store, put, get, accumulate, etc. Recommendation: It should really say "load/store accesses" -- that is, simultaneous loads and PUTs are not allowed in the SEPARATE model.

MPI_MODE_NOLOAD We currently have an assertion for MPI_MODE_NOSTORE Recommendation: Add MPI_MODE_NOLOAD Optimization for the SEPARATE memory model Logically, when the epoch starts, the public window is copied into the private window; when the epoch ends, the private window is copied into the public window (will be the actual implementation for software managed caches) MPI_MODE_NOSTORE allows the MPI implementation to ignore the copy at the end of the epoch MPI_MODE_NOLOAD + MPI_MODE_NOSTORE will allow the MPI implementation to ignore the copy at the start of the epoch Alternatives: we actually only need an MPI_MODE_NOLOADSTORE, but MPI_MODE_NOLOAD is cleaner and symmetric

Info argument for req_mem_model Currently, the user does not request for a specific memory model – the MPI implementation has to decide this on its own If the hardware does not provide cache-coherence, the implementation is expected to return MPI_WIN_SEPARATE If the hardware does provide cache-coherence, the memory model provided is not straight-forward: MPI_WIN_UNIFIED will make load/store inter-leaving with PUT/GET more straightforward for non-overlapping memory regions MPI_WIN_SEPARATE will allow the MPI implementation to maintain a separate public window region (e.g., it can be allocated in symmetric address space or shared memory space) MPI_WIN_SEPARATE might be sufficient for the application if it doesn’t plan to do load/store operations Recommendation: add an info argument req_mem_model to window creation and define UNIFIED > SEPARATE (provided value can already be queried as an attribute)

MPI_WIN_SYNC clarification The current definition of MPI_WIN_SYNC states that it synchronizes the public and private memories of a window This leads us to believe that this is not required for the UNIFIED memory model Consider this example: P0 P1 MPI_Win_lockall MPI_Win_lockall MPI_Put(P0, X, 1); MPI_Win_flush(); MPI_Barrier MPI_Barrier Y = X; P0 cannot do a load operation from “X”, unless all MPI operations (MPI_Barrier in this example) do a memory barrier Recommendation: Clarify WIN_SYNC to say that it is still required in the UNIFIED memory model as well, for overlapping memory accesses

Type-safe MPI Windows The disp_unit is a weird semantic which is really meant to demonstrate what datatype the application will be using Causing confusion with the “same_size” and “same_disp_unit” hints which make little sense on heterogeneous systems Provides MPI with no type-checking capability when the same memory location is accessed as “int” or “float” when they are of the same size Recommendation: provide type-safe MPI window creation routines MPI_Win_create_type, MPI_Win_allocate_type, MPI_Win_allocate_shared_type MPI operations restricted to the window base type or datatypes created out of this type (base type can be derived as well) Still backward compatible with the current model, if MPI_BYTE is used

Load vs. Store distinction in the SEPARATE model The MPI standard does not distinguish load and store operations with respect to window semantics In the SEPARATE model, when the epoch is closed, the private memory is copied into the public memory When the user passes the MPI_MODE_NOSTORE assertion, the MPI implementation is not required to do the copy, but might still copy MPI-3 states that if you start doing load/store operations on a window, you cannot do PUT/GET operations within the same epoch This is valid in general, but too restrictive when the MPI implementation is not actually doing the copy Recommendation: allow the application to use more relaxed semantics when it is not doing STORE operations Possible solution: if we update the window creation prototypes for type-safe windows, we can consider adding a new parameter to define this