openmp
play

OpenMP Paolo Burgio paolo.burgio@unimore.it A history of OpenMP - PowerPoint PPT Presentation

An introduction to OpenMP Paolo Burgio paolo.burgio@unimore.it A history of OpenMP 1997 OpenMP for Fortran 1.0 1998 OpenMP for C/C++ 1.0 2000 Regular, loop-based parallelism OpenMP for Fortran 2.0 2002


  1. An introduction to OpenMP Paolo Burgio paolo.burgio@unimore.it

  2. A history of OpenMP › 1997 – OpenMP for Fortran 1.0 › 1998 – OpenMP for C/C++ 1.0 › 2000 Regular, loop-based parallelism – OpenMP for Fortran 2.0 › 2002 – OpenMP for C/C++ 2.5 › 2008 – OpenMP 3.0 Irregular, parallelism ➔ tasking › 2011 – OpenMP 3.1 › 2014 Heterogeneous parallelism, à la GP-GPU – OpenMP 4.5 2

  3. What is OpenMP? › Let's start from definition eng.wikipedia.org – https://en.wikipedia.org/wiki/OpenMP OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most platforms, processor architectures and operating systems, including Solaris, AIX, HP-UX, Linux, OS X, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior 3

  4. Application Programming Interface eng.wikipedia.org OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most platforms, processor architectures and operating systems, including Solaris, AIX, HP-UX, Linux, OS X, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior › Eases programmers' life › Can be specific for specific domain – Web, Databases…for parallel programming › Examples – POSIX Threads – CUDA – OpenCL – … PARALLEL PROGRAMMING LT – 2017/18 4

  5. A mix of … eng.wikipedia.org OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most platforms, processor architectures and operating systems, including Solaris, AIX, HP-UX, Linux, OS X, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior › Many ways to do the same things – Linux-like philosohpy – What's the difference? 5

  6. Why OpenMP? › What makes it better e.g., than PThreads? – Pragma-based interface – Transparent threading and memory management – We will this soon… › What's missing? – Poor control on threads (no scheduling) – "Team of threads" "it's elegant and appealing" – Automatic memory management › What's left? – Programmer is in charge of synchronization – Programmer is in charge of memory consistency – As opposite to..caches 6

  7. Cross-platform, cross-language › OpenMP is a full technological stack eng.wikipedia.org OpenMP (Open Multi-Processing) is an application programming interface (API) › With a set of tools that supports multi-platform shared memory multiprocessing programming in C, – Compiler, runtime, OS support C++, and Fortran, on most platforms, processor architectures and operating systems, including Solaris, AIX, HP-UX, Linux, OS X, and Windows. It consists of a › That ensures portability!! set of compiler directives, library routines, and environment variables that influence run-time behavior 7

  8. Find the difference › Between … – A standard – An implementation › A standard usually gives guidelines on – Behavior – (Common) Interface – De facto vs de iure › A implementation is – Platform(s)-specific – Lanugage(s)-specific – Has specific performance/Quality-of-Service QoS 8

  9. Shared memory › As opposite to "physically" partitioned memory eng.wikipedia.org OpenMP (Open Multi-Processing) is an application programming interface (API) › Traditional "sequential" programming style that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most platforms, processor architectures and operating systems, including Solaris, AIX, HP-UX, Linux, OS X, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior 9

  10. Shared memory › Coherence problem – Memory consistency issue – Data races › Can share data ptrs Process – Ease-to-use T T P0 T › Several paradigm ("flavours") – Symmetric Multiprocessing (read, write) (read, write) – Distributed Shared memory – Partitioned Global Access Space Shared memory DATUM 10

  11. Multi-processing › What is multi-processing? eng.wikipedia.org OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most platforms, processor architectures and operating systems, including Solaris, AIX, HP-UX, Linux, OS X, and Windows. It consists of a set of compiler directives, library routines, and environment variables that influence run-time behavior 11

  12. Outline › Expressing parallelism – Understanding parallel threads › Memory Data management – Data clauses › Synchronization – Barriers, locks, critical sections › Work partitioning – Loops, sections, single work, tasks… › Execution devices – Target 12

  13. References › "Calcolo parallelo" website – http://hipert.unimore.it/people/paolob/pub/PhD/index.html › My contacts – paolo.burgio@unimore.it – http://hipert.mat.unimore.it/people/paolob/ › Useful links – http://www.openmp.org › A "small blog" – http://www.google.com 22

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend