OpenMP Library Functions and Environmental Variables. Most of the library functions are used for querying or managing the threading environment
|
|
- Philippa Phillips
- 5 years ago
- Views:
Transcription
1 OpenMP Library Functions and Environmental Variables Most of the library functions are used for querying or managing the threading environment The environment variables are used for setting runtime parameters Runtime library takes precedence in conflict 1 OpenMP Components Directives Runtime Library Routines Environmental Variables 2 1
2 OpenMP Library Functions void omp_set_num_threads(int num_threads) sets the default number of threads to use for parallel regions (an alternative to the OMP_NUM_THREADS environment variable and the num_threads clause). int omp_get_num_threads(void) returns the number of threads currently executing the parallel region in which it is called. int omp_get_max_threads(void) returns the largest number of threads that could be used in subsequent parallel regions. int omp_get_thread_num(void) returns the thread number of the thread executing the function. 3 OpenMP Library Functions (II) int omp_get_num_procs(void) returns the number of physical processors available to the program/process. int omp_in_parallel(void) returns a non-zero value if called within a parallel region; otherwise it returns 0. void omp_set_dynamic(int dynamic_threads) enables or disables dynamic adjustment of threads (an alternative to the OMP_DYNAMIC environment variable). int omp_get_dynamic(void) returns a non-zero value if dynamic adjustment is enabled; otherwise it returns
3 OpenMP Library Functions (III) void omp_set_nested(int nested) enables or disables nested parallelism (an alternative to the OMP_NESTED environment variable). int omp_get_nested(void) returns a non-zero value if nested parallelism is enabled; otherwise it returns 0. void omp_init_lock(omp_lock_t *lock) initializes a lock. void omp_init_nest_lock(omp_lock_t *lock) initializes a nestable lock. void omp_destroy_lock(omp_lock_t *lock) ensures that a lock is uninitialized. 5 OpenMP Library Functions (IV) void omp_destroy_nest_lock(omp_lock_t *lock) ensures that a nestable lock is uninitialized. void omp_set_lock(omp_lock_t *lock) blocks the thread until the specified lock is available and then sets the lock; the lock must have been previously initialized. void omp_set_nest_lock(omp_lock_t *lock) blocks the thread until the specified nestable lock is available and then sets the nestable lock; the lock must have been previously initialized. void omp_unset_lock(omp_lock_t *lock) releases ownership of a lock. void omp_unset_nest_lock(omp_lock_t *lock) releases ownership of a nestable lock. 6 3
4 OpenMP Library Functions (V) int omp_test_lock(omp_lock_t *lock) attempts to set a lock but does not block execution of the thread. int omp_test_nest_lock(omp_lock_t *lock) attempts to set a nestable lock but does not block execution of the thread. double omp_get_wtime(void) returns the number of wall clock seconds since some (arbitrary) time in the past. double omp_get_wtick(void) returns the number of seconds between successive clock ticks. 7 OpenMP Components Directives Runtime Library Routines Environmental Variables 8 4
5 OpenMP Environment Variables OMP_SCHEDULE is used to set the default scheduling type and optional chunk size for and parallel for directives. OMP_NUM_THREADS is used to set the default number of threads to use during execution, unless it's overridden by calls to omp_set_num_threads() or by num_threads clause on a parallel directive. OMP_DYNAMIC can be set to TRUE or FALSE to enable or disable dynamic adjustment of threads, respectively. OMP_NESTED can be set to TRUE or FALSE to enable or disable nested parallelism, respectively. 9 When to use what? OMP_NUM_THREADS: How many to use in parallel region OMP_GET_NUM_THREADS, OMP_SET_NUM_THREADS Related: OMP_GET_THREAD_NUM, OMP_GET_MAX_THREADS, OMP_GET_NUM_PROCS OMP_DYNAMIC: Should runtime system choose number of threads? OMP_GET_NESTED, OMP_SET_DYNAMIC OMP_NESTED: Should nested parallel regions be supported? OMP_GET_NESTED, OMP_SET_NESTED OMP_SCHEDULE: Choose DO scheduling option Used by RUNTIME clause OMP_IN_PARALLEL: Is the program in a parallel region? 10 5
6 Introduction : OpenMP Hello, World! File name: hello.f program hello print *, Hello, world from thread:!$omp parallel print *, omp_get_thread_num()!$omp end parallel print*, Back to sequential: end 11 Discussion Before the class: Read the three Linux Magazine articles: OpenMP Multi-Processing, Part 1, 2, 3 by Forrest Hoffman Run the code examples on a SMP machine Prepare three presentations, one for each article In class: Present the articles 12 6
7 Programming Shared Memory Systems with OpenMP Part II Instructor Dr. Taufer Synchronization Synchronization: mechanisms by which a parallel program can coordinate the execution of multiple threads Implicit synchronizations Explicit synchronizations Main use of explicit synchronization to control the access to shared objects: Mutual exclusion Event synchronization 14 7
8 Mutual Exclusion This construct is used to control access to a shared variable by providing a thread exclusive access to a shared variable for the duration of the construct. critical directive atomic directive Explicit synchronizations > mutual exclusion 15 Critical Directive CRITICAL Only one thread at a time executes the enclosed block May specify a name that is common to multiple CRITICALs!$OMP PARALLEL PRIVATE(MYDATA)!$OMP CRITICAL(MYSECT) READ *, MYDATA!$OMP END CRITICAL(MYSECT)...!$OMP END PARALLEL 16 8
9 Example: Mandelbrot Program real*8 x, y integer I, j, m, n, maxiter integer depth(*,*) integer mandel_val, tot_iterats. maxiter = 2000 tot_iterats = 0 do i= 1, m do j = 1, n x = I / real (m) y = j / real(n) // evaluate the Mandelbrot equation We want to know the number of iterations executed by the generator!!! potential data race // depth will given to a graphics routine for drawing the image // depth is the actual number of iterations executed depth(j, i) = mandel_val (x, y, maxiter) tot_iterats = tot_iterats + depth(j,i) enddo enddo 17 Data Races All form of concurrent access to the same shared variable are called data races Data races must be coordinated to ensure correct results when at least one of the accesses to the variable is a write synchronization is required In Mandelbrot program:!$omp critical tot_iterats = tot_iterats + depth(j,i)!$omp end critical 18 9
10 Example: Mandelbrot Program (II) maxiter = 2000 tot_iterats = 0!$omp parallel do private(j, x, y) do i= 1, m do j = 1, n x = I / real (m) y = j / real(n) // evaluate the Mandelbrot equation // depth will given to a graphics routine for drawing the image // depth is the actual number of iterations executed depth(j, i) = mandel_val (x, y, maxiter)!$omp critical tot_iterats = tot_iterats + depth(j,i)!$omp end critical enddo enddo!$omp end parallel do 19 Mandelbrot Program with Critical Session critical sessions waiting to enter critical sessions 20 10
11 Example: Mandelbrot Program (III) maxiter = 2000 tot_iterats = 0!$omp parallel do private(j, x, y)!$omp+ reduction (+:tot_iterats) do i= 1, m do j = 1, n x = I / real (m) y = j / real(n) // evaluate the Mandelbrot equation // depth will given to a graphics routine for drawing the image // depth is the actual number of iterations executed depth(j, i) = mandel_val (x, y, maxiter) tot_iterats = tot_iterats + depth(j,i) enddo enddo!$omp end parallel do reduction(+:tot_iterats) tells the compiler that tot_iterats is the target of a reductions 21 Example: Data Race without Conflicts!$omp critical (MINLOCK) do i = 1, n a(i) = a(i) + b endo 22 11
12 Example: Data Race with Conflicts! Finding the largest element in a list of numbers cur_max = MINUS_INFINITY!omp parallel do do i = 1, n if (a(i).gt. cur_max) then cur_max= a(i)!!!! CONFLICT endif endo 23 Possible Execution Fragment Thread 0 read a(i) (value = 12) read cur_max (value = 10) if ( a(i) > cur_max ) (12>10) cur_max = a(i) (i.e. 12) Thread 1 read a(i) (value 11) read cur_max (value = 10) if ( a(i) > cur_max ) (11 > 10 ) cur_max = a(j) (i.e. 11) Is this correct? 24 12
13 Example: Acceptable Data Race foundit =.FALSE.!$omp parallel do do i = 1, n if (a(i).eq. item) then foundit =.TRUE. endif endo If at least one a(i) is equal to item, foundit becomes true 25 Named Critical Sessions If a thread is inside section updating an object, it prevents another thread from entering another critical section to update another object This can negatively affect the parallelism exploited in the program OpenMP allows named critical sections: a named critical section must synchronized with other critical sections of the same name but can execute concurrently with critical sections of different name Unnamed critical sections synchronized only with other unnamed critical sessions
14 cur_max = MINUS_INFINITY cur_min + PLUS_INFINITY!$omp parallel do do i = 1,n if (a(i).gt. cur_max) then!$omp critical (MAXLOCK) if (a(i).gt. cur_max) then cur_max = a(i) endif!$omp end critical (MAXLOCK) endif if (a(i).lt. cur_min) then!$omp critical (MINLOCK) if (a(i).lt. cur_min) then cur_min= a(i) endif!$omp end critical (MINLOCK) endif endo The two critical sections can run concurrently with two different threads The nested if guarantees the thread exclusive access to cur_max and cur_min 27 Atomic Directive ATOMIC Specifies an atomic update of a variable Can be used, if available (hardware support needed)!$omp PARALLEL SHARED(S)...!$OMP ATOMIC S = S !$OMP END PARALLEL Explicit synchronizations > mutual exclusion > atomic directive 28 14
15 Restrictions of Atomic Directives Atomic directive is similar to critical directive Express mutual exclusion Atomic directive is implemented using the hardware synchronization primitives Critical directives enclose a block of code Atomic directives can be applied only if the critical section consists of a single assignment statement that updates a scalar variable Guidelines: Use the atomic directives when updating either a single location or a few locations Use a critical directive when updating several locations Explicit synchronizations > mutual exclusion > atomic directive 29 Syntax of Atomic Directives!$omp atomic x = x operator expr!$omp atomic x = predefined_operator (x, expr) #pragma omp atomic x < binop >= expr #pragma omp atomic /* One of */ x++, ++x, x--, or --x Explicit synchronizations > mutual exclusion > atomic directive 30 15
Mango DSP Top manufacturer of multiprocessing video & imaging solutions.
1 of 11 3/3/2005 10:50 AM Linux Magazine February 2004 C++ Parallel Increase application performance without changing your source code. Mango DSP Top manufacturer of multiprocessing video & imaging solutions.
More informationby system default usually a thread per CPU or core using the environment variable OMP_NUM_THREADS from within the program by using function call
OpenMP Syntax The OpenMP Programming Model Number of threads are determined by system default usually a thread per CPU or core using the environment variable OMP_NUM_THREADS from within the program by
More informationData Handling in OpenMP
Data Handling in OpenMP Manipulate data by threads By private: a thread initializes and uses a variable alone Keep local copies, such as loop indices By firstprivate: a thread repeatedly reads a variable
More informationParallel and Distributed Programming. OpenMP
Parallel and Distributed Programming OpenMP OpenMP Portability of software SPMD model Detailed versions (bindings) for different programming languages Components: directives for compiler library functions
More informationProgramming Shared-memory Platforms with OpenMP. Xu Liu
Programming Shared-memory Platforms with OpenMP Xu Liu Introduction to OpenMP OpenMP directives concurrency directives parallel regions loops, sections, tasks Topics for Today synchronization directives
More informationCOMP4300/8300: The OpenMP Programming Model. Alistair Rendell. Specifications maintained by OpenMP Architecture Review Board (ARB)
COMP4300/8300: The OpenMP Programming Model Alistair Rendell See: www.openmp.org Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein, Chapter 6 & 7 High Performance
More informationCOMP4300/8300: The OpenMP Programming Model. Alistair Rendell
COMP4300/8300: The OpenMP Programming Model Alistair Rendell See: www.openmp.org Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein, Chapter 6 & 7 High Performance
More informationProgramming Shared Memory Systems with OpenMP Part I. Book
Programming Shared Memory Systems with OpenMP Part I Instructor Dr. Taufer Book Parallel Programming in OpenMP by Rohit Chandra, Leo Dagum, Dave Kohr, Dror Maydan, Jeff McDonald, Ramesh Menon 2 1 Machine
More informationShared Memory Parallelism - OpenMP
Shared Memory Parallelism - OpenMP Sathish Vadhiyar Credits/Sources: OpenMP C/C++ standard (openmp.org) OpenMP tutorial (http://www.llnl.gov/computing/tutorials/openmp/#introduction) OpenMP sc99 tutorial
More informationPC to HPC. Xiaoge Wang ICER Jan 27, 2016
PC to HPC Xiaoge Wang ICER Jan 27, 2016 About This Series Format: talk + discussion Focus: fundamentals of parallel compucng (i) parcconing: data parccon and task parccon; (ii) communicacon: data sharing
More informationIntroduction to. Slides prepared by : Farzana Rahman 1
Introduction to OpenMP Slides prepared by : Farzana Rahman 1 Definition of OpenMP Application Program Interface (API) for Shared Memory Parallel Programming Directive based approach with library support
More informationAdvanced C Programming Winter Term 2008/09. Guest Lecture by Markus Thiele
Advanced C Programming Winter Term 2008/09 Guest Lecture by Markus Thiele Lecture 14: Parallel Programming with OpenMP Motivation: Why parallelize? The free lunch is over. Herb
More informationOPENMP OPEN MULTI-PROCESSING
OPENMP OPEN MULTI-PROCESSING OpenMP OpenMP is a portable directive-based API that can be used with FORTRAN, C, and C++ for programming shared address space machines. OpenMP provides the programmer with
More informationShared Memory Parallelism using OpenMP
Indian Institute of Science Bangalore, India भ रत य व ज ञ न स स थ न ब गल र, भ रत SE 292: High Performance Computing [3:0][Aug:2014] Shared Memory Parallelism using OpenMP Yogesh Simmhan Adapted from: o
More informationOpenMP. OpenMP. Portable programming of shared memory systems. It is a quasi-standard. OpenMP-Forum API for Fortran and C/C++
OpenMP OpenMP Portable programming of shared memory systems. It is a quasi-standard. OpenMP-Forum 1997-2002 API for Fortran and C/C++ directives runtime routines environment variables www.openmp.org 1
More informationOpenMP C and C++ Application Program Interface Version 1.0 October Document Number
OpenMP C and C++ Application Program Interface Version 1.0 October 1998 Document Number 004 2229 001 Contents Page v Introduction [1] 1 Scope............................. 1 Definition of Terms.........................
More informationProgramming Shared-memory Platforms with OpenMP
Programming Shared-memory Platforms with OpenMP John Mellor-Crummey Department of Computer Science Rice University johnmc@rice.edu COMP 422/534 Lecture 7 31 February 2017 Introduction to OpenMP OpenMP
More informationOpenMP 2. CSCI 4850/5850 High-Performance Computing Spring 2018
OpenMP 2 CSCI 4850/5850 High-Performance Computing Spring 2018 Tae-Hyuk (Ted) Ahn Department of Computer Science Program of Bioinformatics and Computational Biology Saint Louis University Learning Objectives
More informationEPL372 Lab Exercise 5: Introduction to OpenMP
EPL372 Lab Exercise 5: Introduction to OpenMP References: https://computing.llnl.gov/tutorials/openmp/ http://openmp.org/wp/openmp-specifications/ http://openmp.org/mp-documents/openmp-4.0-c.pdf http://openmp.org/mp-documents/openmp4.0.0.examples.pdf
More informationOpenMP Algoritmi e Calcolo Parallelo. Daniele Loiacono
OpenMP Algoritmi e Calcolo Parallelo References Useful references Using OpenMP: Portable Shared Memory Parallel Programming, Barbara Chapman, Gabriele Jost and Ruud van der Pas OpenMP.org http://openmp.org/
More informationOpenMP. Table of Contents
OpenMP Table of Contents 1. Introduction 1. What is OpenMP? 2. History 3. Goals of OpenMP 2. OpenMP Programming Model 3. OpenMP Directives 1. Directive Format 2. Directive Format 3. Directive Scoping 4.
More informationOpenMP Programming. Prof. Thomas Sterling. High Performance Computing: Concepts, Methods & Means
High Performance Computing: Concepts, Methods & Means OpenMP Programming Prof. Thomas Sterling Department of Computer Science Louisiana State University February 8 th, 2007 Topics Introduction Overview
More informationOpenMP threading: parallel regions. Paolo Burgio
OpenMP threading: parallel regions Paolo Burgio paolo.burgio@unimore.it Outline Expressing parallelism Understanding parallel threads Memory Data management Data clauses Synchronization Barriers, locks,
More informationIntroduction to OpenMP
Introduction to OpenMP Ekpe Okorafor School of Parallel Programming & Parallel Architecture for HPC ICTP October, 2014 A little about me! PhD Computer Engineering Texas A&M University Computer Science
More informationShared Memory Programming Model
Shared Memory Programming Model Ahmed El-Mahdy and Waleed Lotfy What is a shared memory system? Activity! Consider the board as a shared memory Consider a sheet of paper in front of you as a local cache
More informationParallel Numerical Algorithms
Parallel Numerical Algorithms http://sudalab.is.s.u-tokyo.ac.jp/~reiji/pna16/ [ 8 ] OpenMP Parallel Numerical Algorithms / IST / UTokyo 1 PNA16 Lecture Plan General Topics 1. Architecture and Performance
More informationCSL 860: Modern Parallel
CSL 860: Modern Parallel Computation Hello OpenMP #pragma omp parallel { // I am now thread iof n switch(omp_get_thread_num()) { case 0 : blah1.. case 1: blah2.. // Back to normal Parallel Construct Extremely
More informationDistributed Systems + Middleware Concurrent Programming with OpenMP
Distributed Systems + Middleware Concurrent Programming with OpenMP Gianpaolo Cugola Dipartimento di Elettronica e Informazione Politecnico, Italy cugola@elet.polimi.it http://home.dei.polimi.it/cugola
More informationIntroduction to OpenMP
Introduction to OpenMP Le Yan Scientific computing consultant User services group High Performance Computing @ LSU Goals Acquaint users with the concept of shared memory parallelism Acquaint users with
More informationUvA-SARA High Performance Computing Course June Clemens Grelck, University of Amsterdam. Parallel Programming with Compiler Directives: OpenMP
Parallel Programming with Compiler Directives OpenMP Clemens Grelck University of Amsterdam UvA-SARA High Performance Computing Course June 2013 OpenMP at a Glance Loop Parallelization Scheduling Parallel
More informationPractical in Numerical Astronomy, SS 2012 LECTURE 12
Practical in Numerical Astronomy, SS 2012 LECTURE 12 Parallelization II. Open Multiprocessing (OpenMP) Lecturer Eduard Vorobyov. Email: eduard.vorobiev@univie.ac.at, raum 006.6 1 OpenMP is a shared memory
More informationSynchronization. Event Synchronization
Synchronization Synchronization: mechanisms by which a parallel program can coordinate the execution of multiple threads Implicit synchronizations Explicit synchronizations Main use of explicit synchronization
More informationIntroduction to OpenMP. Rogelio Long CS 5334/4390 Spring 2014 February 25 Class
Introduction to OpenMP Rogelio Long CS 5334/4390 Spring 2014 February 25 Class Acknowledgment These slides are adapted from the Lawrence Livermore OpenMP Tutorial by Blaise Barney at https://computing.llnl.gov/tutorials/openmp/
More informationLecture 4: OpenMP Open Multi-Processing
CS 4230: Parallel Programming Lecture 4: OpenMP Open Multi-Processing January 23, 2017 01/23/2017 CS4230 1 Outline OpenMP another approach for thread parallel programming Fork-Join execution model OpenMP
More informationOpenMP. A Parallel Programming Model for Shared Memory Architectures. Paul Graham. Edinburgh Parallel Computing Centre. The University of Edinburgh
OpenMP A Parallel Programming Model for Shared Memory Architectures Paul Graham Edinburgh Parallel Computing Centre The University of Edinburgh March 1999 Version 1.1 Available from: http://www.epcc.ed.ac.uk/epcc-tec/documents/
More informationParallel programming using OpenMP
Parallel programming using OpenMP Computer Architecture J. Daniel García Sánchez (coordinator) David Expósito Singh Francisco Javier García Blas ARCOS Group Computer Science and Engineering Department
More informationOpenMP on Ranger and Stampede (with Labs)
OpenMP on Ranger and Stampede (with Labs) Steve Lantz Senior Research Associate Cornell CAC Parallel Computing at TACC: Ranger to Stampede Transition November 6, 2012 Based on materials developed by Kent
More informationIntroduction to Standard OpenMP 3.1
Introduction to Standard OpenMP 3.1 Massimiliano Culpo - m.culpo@cineca.it Gian Franco Marras - g.marras@cineca.it CINECA - SuperComputing Applications and Innovation Department 1 / 59 Outline 1 Introduction
More informationIntroduction to OpenMP
Introduction to OpenMP Shirley Moore shirley@eecs.utk.edu CS594: Scientific Computing for Engineers March 9, 2011 What is OpenMP? An Application Program Interface (API) that may be used to explicitly direct
More informationOpenMP. Application Program Interface. CINECA, 14 May 2012 OpenMP Marco Comparato
OpenMP Application Program Interface Introduction Shared-memory parallelism in C, C++ and Fortran compiler directives library routines environment variables Directives single program multiple data (SPMD)
More informationData Environment: Default storage attributes
COSC 6374 Parallel Computation Introduction to OpenMP(II) Some slides based on material by Barbara Chapman (UH) and Tim Mattson (Intel) Edgar Gabriel Fall 2014 Data Environment: Default storage attributes
More informationAn Introduction to OpenMP
An Introduction to OpenMP U N C L A S S I F I E D Slide 1 What Is OpenMP? OpenMP Is: An Application Program Interface (API) that may be used to explicitly direct multi-threaded, shared memory parallelism
More informationIntroduction to OpenMP
Introduction to OpenMP Le Yan HPC Consultant User Services Goals Acquaint users with the concept of shared memory parallelism Acquaint users with the basics of programming with OpenMP Discuss briefly the
More information1 of 6 Lecture 7: March 4. CISC 879 Software Support for Multicore Architectures Spring Lecture 7: March 4, 2008
1 of 6 Lecture 7: March 4 CISC 879 Software Support for Multicore Architectures Spring 2008 Lecture 7: March 4, 2008 Lecturer: Lori Pollock Scribe: Navreet Virk Open MP Programming Topics covered 1. Introduction
More informationHPC Practical Course Part 3.1 Open Multi-Processing (OpenMP)
HPC Practical Course Part 3.1 Open Multi-Processing (OpenMP) V. Akishina, I. Kisel, G. Kozlov, I. Kulakov, M. Pugach, M. Zyzak Goethe University of Frankfurt am Main 2015 Task Parallelism Parallelization
More informationOpenMP Application Program Interface
OpenMP Application Program Interface DRAFT Version.1.0-00a THIS IS A DRAFT AND NOT FOR PUBLICATION Copyright 1-0 OpenMP Architecture Review Board. Permission to copy without fee all or part of this material
More informationIntroduction to OpenMP
Introduction to OpenMP Le Yan Objectives of Training Acquaint users with the concept of shared memory parallelism Acquaint users with the basics of programming with OpenMP Memory System: Shared Memory
More informationIntroduction to OpenMP. OpenMP basics OpenMP directives, clauses, and library routines
Introduction to OpenMP Introduction OpenMP basics OpenMP directives, clauses, and library routines What is OpenMP? What does OpenMP stands for? What does OpenMP stands for? Open specifications for Multi
More informationProgramming with Shared Memory PART II. HPC Fall 2007 Prof. Robert van Engelen
Programming with Shared Memory PART II HPC Fall 2007 Prof. Robert van Engelen Overview Parallel programming constructs Dependence analysis OpenMP Autoparallelization Further reading HPC Fall 2007 2 Parallel
More informationProgramming with Shared Memory PART II. HPC Fall 2012 Prof. Robert van Engelen
Programming with Shared Memory PART II HPC Fall 2012 Prof. Robert van Engelen Overview Sequential consistency Parallel programming constructs Dependence analysis OpenMP Autoparallelization Further reading
More informationIntroduction [1] 1. Directives [2] 7
OpenMP Fortran Application Program Interface Version 2.0, November 2000 Contents Introduction [1] 1 Scope............................. 1 Glossary............................ 1 Execution Model.........................
More informationParallel Computing. Lecture 16: OpenMP - IV
CSCI-UA.0480-003 Parallel Computing Lecture 16: OpenMP - IV Mohamed Zahran (aka Z) mzahran@cs.nyu.edu http://www.mzahran.com PRODUCERS AND CONSUMERS Queues A natural data structure to use in many multithreaded
More informationIntroduction to OpenMP.
Introduction to OpenMP www.openmp.org Motivation Parallelize the following code using threads: for (i=0; i
More informationOpenMP Introduction. CS 590: High Performance Computing. OpenMP. A standard for shared-memory parallel programming. MP = multiprocessing
CS 590: High Performance Computing OpenMP Introduction Fengguang Song Department of Computer Science IUPUI OpenMP A standard for shared-memory parallel programming. MP = multiprocessing Designed for systems
More informationParallel Programming with OpenMP. CS240A, T. Yang
Parallel Programming with OpenMP CS240A, T. Yang 1 A Programmer s View of OpenMP What is OpenMP? Open specification for Multi-Processing Standard API for defining multi-threaded shared-memory programs
More informationOpenMP: Open Multi-Processing
OpenMP: Open Multi-Processing Chris Kauffman CS 499: Spring 2016 GMU Logistics Today OpenMP Wrap-up Mini-Exam 3 Reading Grama 7.10 (OpenMP) OpenMP Tutorial at Laurence Livermore Grama 7.1-9 (PThreads)
More informationSynchronisation in Java - Java Monitor
Synchronisation in Java - Java Monitor -Every object and class is logically associated with a monitor - the associated monitor protects the variable in the object/class -The monitor of an object/class
More informationShared Memory programming paradigm: openmp
IPM School of Physics Workshop on High Performance Computing - HPC08 Shared Memory programming paradigm: openmp Luca Heltai Stefano Cozzini SISSA - Democritos/INFM
More informationOpenMP - III. Diego Fabregat-Traver and Prof. Paolo Bientinesi WS15/16. HPAC, RWTH Aachen
OpenMP - III Diego Fabregat-Traver and Prof. Paolo Bientinesi HPAC, RWTH Aachen fabregat@aices.rwth-aachen.de WS15/16 OpenMP References Using OpenMP: Portable Shared Memory Parallel Programming. The MIT
More informationAdvanced OpenMP. OpenMP Basics
Advanced OpenMP OpenMP Basics Parallel region The parallel region is the basic parallel construct in OpenMP. A parallel region defines a section of a program. Program begins execution on a single thread
More informationThe GNU OpenMP Implementation
The GNU OpenMP Implementation Published by the Free Software Foundation 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA Copyright c 2006, 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
More informationOpenMP Application Program Interface
OpenMP Application Program Interface Version.0 - RC - March 01 Public Review Release Candidate Copyright 1-01 OpenMP Architecture Review Board. Permission to copy without fee all or part of this material
More informationShared Memory Programming Models I
Shared Memory Programming Models I Peter Bastian / Stefan Lang Interdisciplinary Center for Scientific Computing (IWR) University of Heidelberg INF 368, Room 532 D-69120 Heidelberg phone: 06221/54-8264
More informationProgramming Shared Address Space Platforms using OpenMP
Programming Shared Address Space Platforms using OpenMP Jinkyu Jeong (jinkyu@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Topic Overview Introduction to OpenMP OpenMP
More informationOpenMP programming. Thomas Hauser Director Research Computing Research CU-Boulder
OpenMP programming Thomas Hauser Director Research Computing thomas.hauser@colorado.edu CU meetup 1 Outline OpenMP Shared-memory model Parallel for loops Declaring private variables Critical sections Reductions
More informationOpenMP. António Abreu. Instituto Politécnico de Setúbal. 1 de Março de 2013
OpenMP António Abreu Instituto Politécnico de Setúbal 1 de Março de 2013 António Abreu (Instituto Politécnico de Setúbal) OpenMP 1 de Março de 2013 1 / 37 openmp what? It s an Application Program Interface
More informationShared memory parallel computing
Shared memory parallel computing OpenMP Sean Stijven Przemyslaw Klosiewicz Shared-mem. programming API for SMP machines Introduced in 1997 by the OpenMP Architecture Review Board! More high-level than
More informationhttps://www.youtube.com/playlist?list=pllx- Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG
https://www.youtube.com/playlist?list=pllx- Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG OpenMP Basic Defs: Solution Stack HW System layer Prog. User layer Layer Directives, Compiler End User Application OpenMP library
More informationCOSC 6374 Parallel Computation. Introduction to OpenMP. Some slides based on material by Barbara Chapman (UH) and Tim Mattson (Intel)
COSC 6374 Parallel Computation Introduction to OpenMP Some slides based on material by Barbara Chapman (UH) and Tim Mattson (Intel) Edgar Gabriel Fall 2015 OpenMP Provides thread programming model at a
More informationAlfio Lazzaro: Introduction to OpenMP
First INFN International School on Architectures, tools and methodologies for developing efficient large scale scientific computing applications Ce.U.B. Bertinoro Italy, 12 17 October 2009 Alfio Lazzaro:
More informationCSL 730: Parallel Programming. OpenMP
CSL 730: Parallel Programming OpenMP int sum2d(int data[n][n]) { int i,j; #pragma omp parallel for for (i=0; i
More informationIntroduction to OpenMP
Presentation Introduction to OpenMP Martin Cuma Center for High Performance Computing University of Utah mcuma@chpc.utah.edu September 9, 2004 http://www.chpc.utah.edu 4/13/2006 http://www.chpc.utah.edu
More informationOpen Multi-Processing: Basic Course
HPC2N, UmeåUniversity, 901 87, Sweden. May 26, 2015 Table of contents Overview of Paralellism 1 Overview of Paralellism Parallelism Importance Partitioning Data Distributed Memory Working on Abisko 2 Pragmas/Sentinels
More informationOpenMP+F90 p OpenMP+F90
OpenMP+F90 hmli@ustc.edu.cn - http://hpcjl.ustc.edu.cn OpenMP+F90 p. 1 OpenMP+F90 p. 2 OpenMP ccnuma Cache-Coherent Non-Uniform Memory Access SMP Symmetric MultiProcessing MPI MPP Massively Parallel Processing
More informationAllows program to be incrementally parallelized
Basic OpenMP What is OpenMP An open standard for shared memory programming in C/C+ + and Fortran supported by Intel, Gnu, Microsoft, Apple, IBM, HP and others Compiler directives and library support OpenMP
More informationModule 11: The lastprivate Clause Lecture 21: Clause and Routines. The Lecture Contains: The lastprivate Clause. Data Scope Attribute Clauses
The Lecture Contains: The lastprivate Clause Data Scope Attribute Clauses Reduction Loop Work-sharing Construct: Schedule Clause Environment Variables List of Variables References: file:///d /...ary,%20dr.%20sanjeev%20k%20aggrwal%20&%20dr.%20rajat%20moona/multi-core_architecture/lecture%2021/21_1.htm[6/14/2012
More informationOpenMP examples. Sergeev Efim. Singularis Lab, Ltd. Senior software engineer
OpenMP examples Sergeev Efim Senior software engineer Singularis Lab, Ltd. OpenMP Is: An Application Program Interface (API) that may be used to explicitly direct multi-threaded, shared memory parallelism.
More informationOpenMP 4. CSCI 4850/5850 High-Performance Computing Spring 2018
OpenMP 4 CSCI 4850/5850 High-Performance Computing Spring 2018 Tae-Hyuk (Ted) Ahn Department of Computer Science Program of Bioinformatics and Computational Biology Saint Louis University Learning Objectives
More informationIntroduction to OpenMP. Martin Čuma Center for High Performance Computing University of Utah
Introduction to OpenMP Martin Čuma Center for High Performance Computing University of Utah mcuma@chpc.utah.edu Overview Quick introduction. Parallel loops. Parallel loop directives. Parallel sections.
More informationHPCSE - I. «OpenMP Programming Model - Part I» Panos Hadjidoukas
HPCSE - I «OpenMP Programming Model - Part I» Panos Hadjidoukas 1 Schedule and Goals 13.10.2017: OpenMP - part 1 study the basic features of OpenMP able to understand and write OpenMP programs 20.10.2017:
More informationParallel Computing Parallel Programming Languages Hwansoo Han
Parallel Computing Parallel Programming Languages Hwansoo Han Parallel Programming Practice Current Start with a parallel algorithm Implement, keeping in mind Data races Synchronization Threading syntax
More informationIntroduction to Programming with OpenMP
Introduction to Programming with OpenMP Kent Milfeld; Lars Koesterke Yaakoub El Khamra (presenting) milfeld lars yye00@tacc.utexas.edu October 2012, TACC Outline What is OpenMP? How does OpenMP work? Architecture
More informationIntroduction to OpenMP. Martin Čuma Center for High Performance Computing University of Utah
Introduction to OpenMP Martin Čuma Center for High Performance Computing University of Utah mcuma@chpc.utah.edu Overview Quick introduction. Parallel loops. Parallel loop directives. Parallel sections.
More informationOpenMP Language Features
OpenMP Language Features 1 Agenda The parallel construct Work-sharing Data-sharing Synchronization Interaction with the execution environment More OpenMP clauses Advanced OpenMP constructs 2 The fork/join
More informationCS 470 Spring Mike Lam, Professor. Advanced OpenMP
CS 470 Spring 2018 Mike Lam, Professor Advanced OpenMP Atomics OpenMP provides access to highly-efficient hardware synchronization mechanisms Use the atomic pragma to annotate a single statement Statement
More informationIntroduction to OpenMP
Introduction to OpenMP Xiaoxu Guan High Performance Computing, LSU April 6, 2016 LSU HPC Training Series, Spring 2016 p. 1/44 Overview Overview of Parallel Computing LSU HPC Training Series, Spring 2016
More informationAn Introduction to OpenMP
Dipartimento di Ingegneria Industriale e dell'informazione University of Pavia December 4, 2017 Recap Parallel machines are everywhere Many architectures, many programming model. Among them: multithreading.
More informationCS 470 Spring Mike Lam, Professor. Advanced OpenMP
CS 470 Spring 2017 Mike Lam, Professor Advanced OpenMP Atomics OpenMP provides access to highly-efficient hardware synchronization mechanisms Use the atomic pragma to annotate a single statement Statement
More informationSession 4: Parallel Programming with OpenMP
Session 4: Parallel Programming with OpenMP Xavier Martorell Barcelona Supercomputing Center Agenda Agenda 10:00-11:00 OpenMP fundamentals, parallel regions 11:00-11:30 Worksharing constructs 11:30-12:00
More informationShared Memory Programming Paradigm!
Shared Memory Programming Paradigm! Ivan Girotto igirotto@ictp.it Information & Communication Technology Section (ICTS) International Centre for Theoretical Physics (ICTP) 1 Multi-CPUs & Multi-cores NUMA
More information15-418, Spring 2008 OpenMP: A Short Introduction
15-418, Spring 2008 OpenMP: A Short Introduction This is a short introduction to OpenMP, an API (Application Program Interface) that supports multithreaded, shared address space (aka shared memory) parallelism.
More informationOpenMP API User s Guide
OpenMP API User s Guide Forte Developer 7 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 Part No. 816-2468-10 May 2002, Revision A Send comments about this document
More informationMultithreading in C with OpenMP
Multithreading in C with OpenMP ICS432 - Spring 2017 Concurrent and High-Performance Programming Henri Casanova (henric@hawaii.edu) Pthreads are good and bad! Multi-threaded programming in C with Pthreads
More informationIn-Class Guerrilla Development of MPI Examples
Week 5 Lecture Notes In-Class Guerrilla Development of MPI Examples www.cac.cornell.edu/~slantz 1 Guerrilla Development? guer ril la (n.) - A member of an irregular, usually indigenous military or paramilitary
More informationComputational Mathematics
Computational Mathematics Hamid Sarbazi-Azad Department of Computer Engineering Sharif University of Technology e-mail: azad@sharif.edu OpenMP Work-sharing Instructor PanteA Zardoshti Department of Computer
More informationConcurrent Programming with OpenMP
Concurrent Programming with OpenMP Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico October 11, 2012 CPD (DEI / IST) Parallel and Distributed
More informationOpenMP Fundamentals Fork-join model and data environment
www.bsc.es OpenMP Fundamentals Fork-join model and data environment Xavier Teruel and Xavier Martorell Agenda: OpenMP Fundamentals OpenMP brief introduction The fork-join model Data environment OpenMP
More informationParallel Programming
Parallel Programming OpenMP Nils Moschüring PhD Student (LMU) Nils Moschüring PhD Student (LMU), OpenMP 1 1 Overview What is parallel software development Why do we need parallel computation? Problems
More informationIntroduction to OpenMP. Martin Čuma Center for High Performance Computing University of Utah
Introduction to OpenMP Martin Čuma Center for High Performance Computing University of Utah m.cuma@utah.edu Overview Quick introduction. Parallel loops. Parallel loop directives. Parallel sections. Some
More informationCS 426. Parallel Programming with OpenMP
CS 426 Parallel Programming with OpenMP 1 Overview Introduction to OpenMP Parallel regions Worksharing directives More about parallel loops Synchronization Additional features OpenMP 2.0 2 Brief history
More information