ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 7 October 16, 2002 Nayda G. Santiago.

Slides:



Advertisements
Similar presentations
Threads, SMP, and Microkernels
Advertisements

Parallel Processing with OpenMP
Introductions to Parallel Programming Using OpenMP
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Potential Languages of the Future Chapel,
Class CS 775/875, Spring 2011 Amit H. Kumar, OCCS Old Dominion University.
Master/Slave Architecture Pattern Source: Pattern-Oriented Software Architecture, Vol. 1, Buschmann, et al.
1 Lawrence Livermore National Laboratory By Chunhua (Leo) Liao, Stephen Guzik, Dan Quinlan A node-level programming model framework for exascale computing*
GridRPC Sources / Credits: IRISA/IFSIC IRISA/INRIA Thierry Priol et. al papers.
Chapter 4 Threads, SMP, and Microkernels Patricia Roy Manatee Community College, Venice, FL ©2008, Prentice Hall Operating Systems: Internals and Design.
Revisiting a slide from the syllabus: CS 525 will cover Parallel and distributed computing architectures – Shared memory processors – Distributed memory.
Reference: Message Passing Fundamentals.
Introduction CS 524 – High-Performance Computing.
1 Tuesday, November 07, 2006 “If anything can go wrong, it will.” -Murphy’s Law.
DISTRIBUTED AND HIGH-PERFORMANCE COMPUTING CHAPTER 7: SHARED MEMORY PARALLEL PROGRAMMING.
Tuesday, September 12, 2006 Nothing is impossible for people who don't have to do it themselves. - Weiler.
Computer Architecture II 1 Computer architecture II Programming: POSIX Threads OpenMP.
Parallel Computing Multiprocessor Systems on Chip: Adv. Computer Arch. for Embedded Systems By Jason Agron.
3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another.
Parallel Programming Models and Paradigms
3.5 Interprocess Communication
 Parallel Computer Architecture Taylor Hearn, Fabrice Bokanya, Beenish Zafar, Mathew Simon, Tong Chen.
Mapping Techniques for Load Balancing
CS 470/570:Introduction to Parallel and Distributed Computing.
Hossein Bastan Isfahan University of Technology 1/23.
Parallel Architectures
Introduction to Parallel Processing 3.1 Basic concepts 3.2 Types and levels of parallelism 3.3 Classification of parallel architecture 3.4 Basic parallel.
SEC(R) 2008 Intel® Concurrent Collections for C++ - a model for parallel programming Nikolay Kurtov Software and Services.
Computer Architecture Parallel Processing
Course Outline DayContents Day 1 Introduction Motivation, definitions, properties of embedded systems, outline of the current course How to specify embedded.
October 26, 2006 Parallel Image Processing Programming and Architecture IST PhD Lunch Seminar Wouter Caarls Quantitative Imaging Group.
Lecture 29 Fall 2006 Lecture 29: Parallel Programming Overview.
CC02 – Parallel Programming Using OpenMP 1 of 25 PhUSE 2011 Aniruddha Deshmukh Cytel Inc.
Lecture 4: Parallel Programming Models. Parallel Programming Models Parallel Programming Models: Data parallelism / Task parallelism Explicit parallelism.
LIGO-G Z 8 June 2001L.S.Finn/LDAS Camp1 How to think about parallel programming.
HPC Technology Track: Foundations of Computational Science Lecture 2 Dr. Greg Wettstein, Ph.D. Research Support Group Leader Division of Information Technology.
Parallel Programming Models Jihad El-Sana These slides are based on the book: Introduction to Parallel Computing, Blaise Barney, Lawrence Livermore National.
1b.1 Types of Parallel Computers Two principal approaches: Shared memory multiprocessor Distributed memory multicomputer ITCS 4/5145 Parallel Programming,
Parallel Computing Through MPI Technologies Author: Nyameko Lisa Supervisors: Prof. Elena Zemlyanaya, Prof Alexandr P. Sapozhnikov and Tatiana F. Sapozhnikov.
AN EXTENDED OPENMP TARGETING ON THE HYBRID ARCHITECTURE OF SMP-CLUSTER Author : Y. Zhao 、 C. Hu 、 S. Wang 、 S. Zhang Source : Proceedings of the 2nd IASTED.
Support for Debugging Automatically Parallelized Programs Robert Hood Gabriele Jost CSC/MRJ Technology Solutions NASA.
Parallelization: Area Under a Curve. AUC: An important task in science Neuroscience – Endocrine levels in the body over time Economics – Discounting:
Introduction, background, jargon Jakub Yaghob. Literature T.G.Mattson, B.A.Sanders, B.L.Massingill: Patterns for Parallel Programming, Addison- Wesley,
OpenMP – Introduction* *UHEM yaz çalıştayı notlarından derlenmiştir. (uhem.itu.edu.tr)
1 Parallel Programming Aaron Bloomfield CS 415 Fall 2005.
Spring 2003CSE P5481 Issues in Multiprocessors Which programming model for interprocessor communication shared memory regular loads & stores message passing.
Introduction to OpenMP Eric Aubanel Advanced Computational Research Laboratory Faculty of Computer Science, UNB Fredericton, New Brunswick.
Chapter 4 Message-Passing Programming. The Message-Passing Model.
Message-Passing Computing Chapter 2. Programming Multicomputer Design special parallel programming language –Occam Extend existing language to handle.
CS- 492 : Distributed system & Parallel Processing Lecture 7: Sun: 15/5/1435 Foundations of designing parallel algorithms and shared memory models Lecturer/
CS-303 Introduction to Programming
Threaded Programming Lecture 2: Introduction to OpenMP.
13-1 Chapter 13 Concurrency Topics Introduction Introduction to Subprogram-Level Concurrency Semaphores Monitors Message Passing Java Threads C# Threads.
ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 8 October 23, 2002 Nayda G. Santiago.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
A Pattern Language for Parallel Programming Beverly Sanders University of Florida.
3/12/2013Computer Engg, IIT(BHU)1 OpenMP-1. OpenMP is a portable, multiprocessing API for shared memory computers OpenMP is not a “language” Instead,
Parallel Computing Presented by Justin Reschke
MPI-Message Passing Interface. What is MPI?  MPI is a specification for the developers and users of message passing libraries. By itself, it is NOT a.
Group Members Hamza Zahid (131391) Fahad Nadeem khan Abdual Hannan AIR UNIVERSITY MULTAN CAMPUS.
Parallel Programming pt.1
Introduction to Parallel Processing
PARALLEL COMPUTING Submitted By : P. Nagalakshmi
Models and Languages for Parallel Computation
Computer Engg, IIT(BHU)
Team 1 Aakanksha Gupta, Solomon Walker, Guanghong Wang
Many-core Software Development Platforms
Chapter 4: Threads.
MPI-Message Passing Interface
Shared-Memory Paradigm & OpenMP
Programming Parallel Computers
Presentation transcript:

ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 7 October 16, 2002 Nayda G. Santiago

Overview Message Passing and Shared Memory Reference Designing and Building Parallel Programs, by Ian Foster (textbook), Chapters 1, 2, and 8. Maui HPC Center site

Parallel Programming Paradigms Message Passing - the user makes calls to libraries to explicitly share information between processors. Data Parallel - data partitioning determines parallelism. Single Instruction Multiple Data (SIMD) approach. Shared Memory - multiple processes sharing common memory space.

Parallel Programming Paradigms Threads - a single process having multiple (concurrent) execution paths. Combined Models - composed of two or more of the above. Note: these models are machine/architecture independent, any of the models can be implemented on any hardware given appropriate operating system support. An effective implementation is one which closely matches its target hardware and provides the user ease in programming.

Message Passing Message Passing Model Set of processes using only local memory Processes communicate by sending and receiving messages Data transfer requires cooperative operations to be performed by each process (a send operation must have a matching receive) Programming with message passing is done by linking with and making calls to libraries which manage the data exchange between processors. Message passing libraries are available for most modern programming languages.

Shared Memory Shared Memory Model Processes access the same memory space. Start as single thread and creates additional threads to start a parallel region. Data transfer Read/write from/to memory Programming with shared memory is done by compiler directives and linking with and making calls to libraries which manage threads. Shared memory libraries are available for Fortran and C/C++.

Implementation of Message Passing: MPI A standard portable message-passing library definition developed in 1993 by a group of parallel computer vendors, software writers, and application scientists. Available for Fortran, C/C++, Java programs. Available on a wide variety of parallel machines. Target platform is a distributed memory system.

Implementation of Message Passing: MPI All inter-task communication is by message passing. All parallelism is explicit: the programmer is responsible for parallelism the program and implementing the MPI constructs. Programming model is SPMD (Single Program Multiple Data)

Implementation of Shared Memory: OpenMP OpenMP is a specification for a set of compiler directives, library routines, and environment variables that can be used to specify shared memory parallelism. Jointly defined by a group of major computer hardware, software, and application vendors. OpenMP is designed for Fortran, C and C++. Target platform is a shared memory system.

Implementation of Shared Memory: OpenMP Fork-join parallelism Master thread spawns a team of threads as needed. Mostly used to parallelize loops. Threads communicate by sharing variables. Threads are created with pragmas or compiler directives

Evaluating Paradigms Performance - can paradigm express details which will lead to an efficient execution Mapping Independence - does expression abstract away implementation Modularity - Simultaneous code development Determinism - Does result depend on asynchronous behavior, debugging

Programmer Requirements The programmer must consider architecture and software available in designing algorithm A different high level algorithm may be necessary depending on underlying hardware support

Steps to create a parallel program If you start with a serial program Debug serial code completely Identify parts of the program that can execute concurrently Requires thorough understanding of algorithm Exploit inherent parallelism May require restructuring of Program Algorithm May require new algorithm

Steps to create a parallel program Decompose the program Functional Parallelism Data Parallelism Combination of both Code development Code may be determined/influenced by machine architecture Choose programming paradigm Determine communication pattern Add code to accomplish tasks and communications

Steps to create a parallel program Compile Test Debug Optimization Measure performance Locate problem areas Improve problem areas

Communication Message passing Communication is explicitly programmed Programmer must understand and code communication Data parallel Compilers and run-time system do all communications behind the scenes. Programmer does not need to understand communication. (Not necessarily best performance)