Parallel Programming
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
The Importance of Data
The landscape of Parallel Programing Models Part 2: The importance of Data Michael Wong and Rod Burns Codeplay Software Ltd. Distiguished Engineer, Vice President of Ecosystem IXPUG 2020 2 © 2020 Codeplay Software Ltd. Distinguished Engineer Michael Wong ● Chair of SYCL Heterogeneous Programming Language ● C++ Directions Group ● ISOCPP.org Director, VP http://isocpp.org/wiki/faq/wg21#michael-wong ● [email protected] ● [email protected] Ported ● Head of Delegation for C++ Standard for Canada Build LLVM- TensorFlow to based ● Chair of Programming Languages for Standards open compilers for Council of Canada standards accelerators Chair of WG21 SG19 Machine Learning using SYCL Chair of WG21 SG14 Games Dev/Low Latency/Financial Trading/Embedded Implement Releasing open- ● Editor: C++ SG5 Transactional Memory Technical source, open- OpenCL and Specification standards based AI SYCL for acceleration tools: ● Editor: C++ SG1 Concurrency Technical Specification SYCL-BLAS, SYCL-ML, accelerator ● MISRA C++ and AUTOSAR VisionCpp processors ● Chair of Standards Council Canada TC22/SC32 Electrical and electronic components (SOTIF) ● Chair of UL4600 Object Tracking ● http://wongmichael.com/about We build GPU compilers for semiconductor companies ● C++11 book in Chinese: Now working to make AI/ML heterogeneous acceleration safe for https://www.amazon.cn/dp/B00ETOV2OQ autonomous vehicle 3 © 2020 Codeplay Software Ltd. Acknowledgement and Disclaimer Numerous people internal and external to the original C++/Khronos group, in industry and academia, have made contributions, influenced ideas, written part of this presentations, and offered feedbacks to form part of this talk. But I claim all credit for errors, and stupid mistakes. These are mine, all mine! You can’t have them. -
Evaluation of the Coarray Fortran Programming Model on the Example of a Lattice Boltzmann Code
Evaluation of the Coarray Fortran Programming Model on the Example of a Lattice Boltzmann Code Klaus Sembritzki Georg Hager Bettina Krammer Friedrich-Alexander University Friedrich-Alexander University Université de Versailles Erlangen-Nuremberg Erlangen-Nuremberg St-Quentin-en-Yvelines Erlangen Regional Computing Erlangen Regional Computing Exascale Computing Center (RRZE) Center (RRZE) Research (ECR) Martensstrasse 1 Martensstrasse 1 45 Avenue des Etats-Unis 91058 Erlangen, Germany 91058 Erlangen, Germany 78000 Versailles, France [email protected] [email protected] [email protected] Jan Treibig Gerhard Wellein Friedrich-Alexander University Friedrich-Alexander University Erlangen-Nuremberg Erlangen-Nuremberg Erlangen Regional Computing Erlangen Regional Computing Center (RRZE) Center (RRZE) Martensstrasse 1 Martensstrasse 1 91058 Erlangen, Germany 91058 Erlangen, Germany [email protected] [email protected] ABSTRACT easier to learn. The Lattice Boltzmann method is an explicit time-stepping sche- With the Fortran 2008 standard, coarrays became a native Fort- me for the numerical simulation of fluids. In recent years it has ran feature [2]. The “hybrid” nature of modern massively parallel gained popularity since it is straightforward to parallelize and well systems, which comprise shared-memory nodes built from multico- suited for modeling complex boundary conditions and multiphase re processor chips, can be addressed by the compiler and runtime flows. Starting from an MPI/OpenMP-parallel 3D prototype im- system by using shared memory for intra-node access to codimen- plementation of the algorithm in Fortran90, we construct several sions. Inter-node access may either by conducted using an existing coarray-based versions and compare their performance and requi- messaging layer such as MPI or SHMEM, or carried out natively red programming effort to the original code, demonstrating the per- using the primitives provided by the network infrastructure. -
(CITIUS) Phd DISSERTATION
UNIVERSITY OF SANTIAGO DE COMPOSTELA DEPARTMENT OF ELECTRONICS AND COMPUTER SCIENCE CENTRO DE INVESTIGACION´ EN TECNOLOX´IAS DA INFORMACION´ (CITIUS) PhD DISSERTATION PERFORMANCE COUNTER-BASED STRATEGIES TO IMPROVE DATA LOCALITY ON MULTIPROCESSOR SYSTEMS: REORDERING AND PAGE MIGRATION TECHNIQUES Author: Juan Angel´ Lorenzo del Castillo PhD supervisors: Prof. Francisco Fernandez´ Rivera Dr. Juan Carlos Pichel Campos Santiago de Compostela, October 2011 Prof. Francisco Fernandez´ Rivera, professor at the Computer Architecture Group of the University of Santiago de Compostela Dr. Juan Carlos Pichel Campos, researcher at the Computer Architecture Group of the University of Santiago de Compostela HEREBY CERTIFY: That the dissertation entitled Performance Counter-based Strategies to Improve Data Locality on Multiprocessor Systems: Reordering and Page Migration Techniques has been developed by Juan Angel´ Lorenzo del Castillo under our direction at the Department of Electronics and Computer Science of the University of Santiago de Compostela in fulfillment of the requirements for the Degree of Doctor of Philosophy. Santiago de Compostela, October 2011 Francisco Fernandez´ Rivera, Profesor Catedratico´ de Universidad del Area´ de Arquitectura de Computadores de la Universidad de Santiago de Compostela Juan Carlos Pichel Campos, Profesor Doctor del Area´ de Arquitectura de Computadores de la Universidad de Santiago de Compostela HACEN CONSTAR: Que la memoria titulada Performance Counter-based Strategies to Improve Data Locality on Mul- tiprocessor Systems: Reordering and Page Migration Techniques ha sido realizada por D. Juan Angel´ Lorenzo del Castillo bajo nuestra direccion´ en el Departamento de Electronica´ y Computacion´ de la Universidad de Santiago de Compostela, y constituye la Tesis que presenta para optar al t´ıtulo de Doctor por la Universidad de Santiago de Compostela. -
A Comparison of Coarray Fortran, Unified Parallel C and T
Technical Report RAL-TR-2005-015 8 December 2005 Novel Parallel Languages for Scientific Computing ± a comparison of Co-Array Fortran, Unified Parallel C and Titanium J.V.Ashby Computational Science and Engineering Department CCLRC Rutherford Appleton Laboratory [email protected] Abstract With the increased use of parallel computers programming languages need to evolve to support parallelism. Three languages built on existing popular languages, are considered: Co-array Fortran, Universal Parallel C and Titanium. The features of each language which support paralleism are explained, a simple example is programmed and the current status and availability of the languages is reviewed. Finally we also review work on the performance of algorithms programmed in these languages. In most cases they perform favourably with the same algorithms programmed using message passing due to the much lower latency in their communication model. 1 1. Introduction As the use of parallel computers becomes increasingly prevalent there is an increased need for languages and programming methodologies which support parallelism. Ideally one would like an automatic parallelising compiler which could analyse a program written sequentially, identify opportunities for parallelisation and implement them without user knowledge or intervention. Attempts in the past to produce such compilers have largely failed (though automatic vectorising compilers, which may be regarded as one specific form of parallelism, have been successful, and the techniques are now a standard part of most optimising compilers for pipelined processors). As a result, interest in tools to support parallel programming has largely concentrated on two main areas: directive driven additions to existing languages and data-passing libraries. -
Intel® Oneapi Programming Guide
Intel® oneAPI Programming Guide Intel Corporation www.intel.com Notices and Disclaimers Contents Notices and Disclaimers....................................................................... 5 Chapter 1: Introduction oneAPI Programming Model Overview ..........................................................7 Data Parallel C++ (DPC++)................................................................8 oneAPI Toolkit Distribution..................................................................9 About This Guide.......................................................................................9 Related Documentation ..............................................................................9 Chapter 2: oneAPI Programming Model Sample Program ..................................................................................... 10 Platform Model........................................................................................ 14 Execution Model ...................................................................................... 15 Memory Model ........................................................................................ 17 Memory Objects.............................................................................. 19 Accessors....................................................................................... 19 Synchronization .............................................................................. 20 Unified Shared Memory.................................................................... 20 Kernel Programming -
Executable Modelling for Highly Parallel Accelerators
Executable Modelling for Highly Parallel Accelerators Lorenzo Addazi, Federico Ciccozzi, Bjorn¨ Lisper School of Innovation, Design, and Engineering Malardalen¨ University -Vaster¨ as,˚ Sweden florenzo.addazi, federico.ciccozzi, [email protected] Abstract—High-performance embedded computing is develop- development are lagging behind. Programming accelerators ing rapidly since applications in most domains require a large and needs device-specific expertise in computer architecture and increasing amount of computing power. On the hardware side, low-level parallel programming for the accelerator at hand. this requirement is met by the introduction of heterogeneous systems, with highly parallel accelerators that are designed to Programming is error-prone and debugging can be very dif- take care of the computation-heavy parts of an application. There ficult due to potential race conditions: this is particularly is today a plethora of accelerator architectures, including GPUs, disturbing as many embedded applications, like autonomous many-cores, FPGAs, and domain-specific architectures such as AI vehicles, are safety-critical, meaning that failures may have accelerators. They all have their own programming models, which lethal consequences. Furthermore software becomes hard to are typically complex, low-level, and involve explicit parallelism. This yields error-prone software that puts the functional safety at port between different kinds of accelerators. risk, unacceptable for safety-critical embedded applications. In A convenient solution is to adopt a model-driven approach, this position paper we argue that high-level executable modelling where the computation-intense parts of the application are languages tailored for parallel computing can help in the software expressed in a high-level, accelerator-agnostic executable mod- design for high performance embedded applications. -
Programming Multicores: Do Applications Programmers Need to Write Explicitly Parallel Programs?
[3B2-14] mmi2010030003.3d 11/5/010 16:48 Page 2 .......................................................................................................................................................................................................................... PROGRAMMING MULTICORES: DO APPLICATIONS PROGRAMMERS NEED TO WRITE EXPLICITLY PARALLEL PROGRAMS? .......................................................................................................................................................................................................................... IN THIS PANEL DISCUSSION FROM THE 2009 WORKSHOP ON COMPUTER ARCHITECTURE Arvind RESEARCH DIRECTIONS,DAVID AUGUST AND KESHAV PINGALI DEBATE WHETHER EXPLICITLY Massachusetts Institute PARALLEL PROGRAMMING IS A NECESSARY EVIL FOR APPLICATIONS PROGRAMMERS, of Technology ASSESS THE CURRENT STATE OF PARALLEL PROGRAMMING MODELS, AND DISCUSS David August POSSIBLE ROUTES TOWARD FINDING THE PROGRAMMING MODEL FOR THE MULTICORE ERA. Princeton University Keshav Pingali Moderator’s introduction: Arvind in the 1970s and 1980s, when two main Do applications programmers need to write approaches were developed. Derek Chiou explicitly parallel programs? Most people be- The first approach required that the com- lieve that the current method of parallel pro- pilers do all the work in finding the parallel- University of Texas gramming is impeding the exploitation of ism. This was often referred to as the ‘‘dusty multicores. In other words, the number of decks’’ problem—that is, how to -
Cafe: Coarray Fortran Extensions for Heterogeneous Computing
2016 IEEE International Parallel and Distributed Processing Symposium Workshops CAFe: Coarray Fortran Extensions for Heterogeneous Computing Craig Rasmussen∗, Matthew Sottile‡, Soren Rasmussen∗ Dan Nagle† and William Dumas∗ ∗ University of Oregon, Eugene, Oregon †NCAR, Boulder, Colorado ‡Galois, Portland, Oregon Abstract—Emerging hybrid accelerator architectures are often simple tuning if the architecture is fundamentally different than proposed for inclusion as components in an exascale machine, previous ones. not only for performance reasons but also to reduce total power A number of options are available to an HPC programmer consumption. Unfortunately, programmers of these architectures face a daunting and steep learning curve that frequently requires beyond just using a serial language with MPI or OpenMP. learning a new language (e.g., OpenCL) or adopting a new New parallel languages have been under development for programming model. Furthermore, the distributed (and fre- over a decade, for example, Chapel and the PGAS languages quently multi-level) nature of the memory organization of clusters including Coarray Fortran (CAF). Options for heterogeneous of these machines provides an additional level of complexity. computing include usage of OpenACC, CUDA, CUDA For- This paper presents preliminary work examining how Fortran coarray syntax can be extended to provide simpler access to tran, and OpenCL for programming attached accelerator de- accelerator architectures. This programming model integrates the vices. Each of these choices provides the programmer with Partitioned Global Address Space (PGAS) features of Fortran abstractions over parallel systems that expose different levels with some of the more task-oriented constructs in OpenMP of detail about the specific systems to compile to, and as 4.0 and OpenACC. -
Coarray Fortran Runtime Implementation in Openuh
COARRAY FORTRAN RUNTIME IMPLEMENTATION IN OPENUH A Thesis Presented to the Faculty of the Department of Computer Science University of Houston In Partial Fulfillment of the Requirements for the Degree Master of Science By Debjyoti Majumder December 2011 COARRAY FORTRAN RUNTIME IMPLEMENTATION IN OPENUH Debjyoti Majumder APPROVED: Dr. Barbara Chapman, Chairman Dept. of Computer Science Dr. Jaspal Subhlok Dept. of Computer Science Dr. Terrence Liao TOTAL E&P Research & Technology USA, LLC Dean, College of Natural Sciences and Mathematics ii Acknowledgements I would like to express my gratitude to Dr. Barbara Chapman for providing financial support and for creating an excellent environment for research. I would like to thank my mentor Deepak Eachempati. Without his guidance, this work would not have been possible. I sincerely thank TOTAL S.A. for funding this project and Dr. Terrence Liao for his valuable inputs and help in performing experiments on TOTAL's hardware. I also thank the interns at TOTAL, Asma Farjallah, and France Boillod-Cerneux for the applications that I used for performance evaluation. I thank Hyoungjoon Jun for his earlier work on the CAF runtime. I thank Tony Curtis for his suggestions and excellent work on maintaining the infrastructure on which I ran my experiments. I thank Dr.Edgar Gabriel for answering all my questions and his help with using the shark cluster. I also thank the Berkeley Lab and PNNL's ARMCI developers for their guidance in using GASNet and ARMCI. Lastly, I would like to thank the Department of Computer Science for giving me the opportunity to be in this great country of USA and all my lab-mates and friends. -
An Outlook of High Performance Computing Infrastructures for Scientific Computing
An Outlook of High Performance Computing Infrastructures for Scientific Computing [This draft has mainly been extracted from the PhD Thesis of Amjad Ali at Center for Advanced Studies in Pure and Applied Mathematics (CASPAM), Bahauddin Zakariya University, Multan, Pakitsan 60800. ([email protected])] In natural sciences, two conventional ways of carrying out studies and reserach are: theoretical and experimental.Thefirstapproachisabouttheoraticaltreatmment possibly dealing with the mathematical models of the concerning physical phenomena and analytical solutions. The other approach is to perform physical experiments to carry out studies. This approach is directly favourable for developing the products in engineering. The theoretical branch, although very rich in concepts, has been able to develop only a few analytical methods applicable to rather simple problems. On the other hand the experimental branch involves heavy costs and specific arrangements. These shortcomings with the two approaches motivated the scientists to look around for a third or complementary choice, i.e., the use of numerical simulations in science and engineering. The numerical solution of scientific problems, by its very nature, requires high computational power. As the world has been continuously en- joying substantial growth in computer technologies during the past three decades, the numerical approach appeared to be more and more pragmatic. This constituted acompletenewbranchineachfieldofscience,oftentermedasComputational Science,thatisaboutusingnumericalmethodsforsolvingthemathematicalformu- lations of the science problems. Developments in computational sciences constituted anewdiscipline,namelytheScientific Computing,thathasemergedwiththe spirit of obtaining qualitative predictions through simulations in ‘virtual labora- tories’ (i.e., the computers) for all areas of science and engineering. The scientific computing, due to its nature, exists at the overlapping region of the three disciplines, mathematical modeling, numerical mathematics and computer science,asshownin Fig. -
Performance Tuning Workshop
Performance Tuning Workshop Samuel Khuvis Scientifc Applications Engineer, OSC February 18, 2021 1/103 Workshop Set up I Workshop – set up account at my.osc.edu I If you already have an OSC account, sign in to my.osc.edu I Go to Project I Project access request I PROJECT CODE = PZS1010 I Reset your password I Slides are the workshop website: https://www.osc.edu/~skhuvis/opt21_spring 2/103 Outline I Introduction I Debugging I Hardware overview I Performance measurement and analysis I Help from the compiler I Code tuning/optimization I Parallel computing 3/103 Introduction 4/103 Workshop Philosophy I Aim for “reasonably good” performance I Discuss performance tuning techniques common to most HPC architectures I Compiler options I Code modifcation I Focus on serial performance I Reduce time spent accessing memory I Parallel processing I Multithreading I MPI 5/103 Hands-on Code During this workshop, we will be using a code based on the HPCCG miniapp from Mantevo. I Performs Conjugate Gradient (CG) method on a 3D chimney domain. I CG is an iterative algorithm to numerically approximate the solution to a system of linear equations. I Run code with srun -n <numprocs> ./test_HPCCG nx ny nz, where nx, ny, and nz are the number of nodes in the x, y, and z dimension on each processor. I Download with: wget go . osu .edu/perftuning21 t a r x f perftuning21 I Make sure that the following modules are loaded: intel/19.0.5 mvapich2/2.3.3 6/103 More important than Performance! I Correctness of results I Code readability/maintainability I Portability - -
Regent: a High-Productivity Programming Language for Implicit Parallelism with Logical Regions
REGENT: A HIGH-PRODUCTIVITY PROGRAMMING LANGUAGE FOR IMPLICIT PARALLELISM WITH LOGICAL REGIONS A DISSERTATION SUBMITTED TO THE DEPARTMENT OF COMPUTER SCIENCE AND THE COMMITTEE ON GRADUATE STUDIES OF STANFORD UNIVERSITY IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY Elliott Slaughter August 2017 © 2017 by Elliott David Slaughter. All Rights Reserved. Re-distributed by Stanford University under license with the author. This work is licensed under a Creative Commons Attribution- Noncommercial 3.0 United States License. http://creativecommons.org/licenses/by-nc/3.0/us/ This dissertation is online at: http://purl.stanford.edu/mw768zz0480 ii I certify that I have read this dissertation and that, in my opinion, it is fully adequate in scope and quality as a dissertation for the degree of Doctor of Philosophy. Alex Aiken, Primary Adviser I certify that I have read this dissertation and that, in my opinion, it is fully adequate in scope and quality as a dissertation for the degree of Doctor of Philosophy. Philip Levis I certify that I have read this dissertation and that, in my opinion, it is fully adequate in scope and quality as a dissertation for the degree of Doctor of Philosophy. Oyekunle Olukotun Approved for the Stanford University Committee on Graduate Studies. Patricia J. Gumport, Vice Provost for Graduate Education This signature page was generated electronically upon submission of this dissertation in electronic format. An original signed hard copy of the signature page is on file in University Archives. iii Abstract Modern supercomputers are dominated by distributed-memory machines. State of the art high-performance scientific applications targeting these machines are typically written in low-level, explicitly parallel programming models that enable maximal performance but expose the user to programming hazards such as data races and deadlocks.