Arm Forge User Guide

Total Page:16

File Type:pdf, Size:1020Kb

Arm Forge User Guide Arm Forge User Guide Version 18.2.1 Arm Forge 18.2.1 Contents Contents 1 I Arm Forge 12 1 Introduction 12 1.1 Arm DDT .......................................... 12 1.2 Arm MAP .......................................... 13 1.3 Online resources ...................................... 13 2 Installation 14 2.1 Linux installation ...................................... 14 2.1.1 Graphical install .................................. 14 2.1.2 Text-mode install .................................. 15 2.2 Mac installation ....................................... 16 2.3 Windows installation .................................... 16 2.4 License files ......................................... 17 2.5 Workstation and evaluation licenses ............................ 17 2.6 Supercomputing and other floating licenses ........................ 18 2.7 Architecture licensing .................................... 18 2.7.1 Using multiple architecture licenses ........................ 18 3 Connecting to a remote system 19 3.1 Remote connections dialog ................................. 19 3.2 Remote launch settings ................................... 20 3.2.1 Remote script .................................... 21 3.3 Reverse Connect ...................................... 21 3.3.1 Overview ...................................... 21 3.3.2 Usage ........................................ 22 3.3.3 Connection details ................................. 22 3.4 Treeserver or general debugging ports ........................... 23 3.5 Using X forwarding or VNC ................................ 23 4 Starting 25 II DDT 27 5 Getting started 27 5.1 Running a program ..................................... 28 5.1.1 Application ..................................... 28 5.1.2 MPI ......................................... 29 5.1.3 OpenMP ...................................... 29 5.1.4 CUDA ....................................... 29 5.1.5 Memory debugging ................................. 30 5.1.6 Environment variables ............................... 30 5.1.7 Plugins ....................................... 30 5.2 Express Launch ....................................... 31 5.2.1 Run dialog box ................................... 31 5.3 remote-exec required by some MPIs .......................... 32 Copyright © 2002-2018 Arm Limited (or its affiliates). All rights reserved. 1 Arm Forge 18.2.1 5.4 Debugging single-process programs ............................ 33 5.5 Debugging OpenMP programs ............................... 33 5.6 Manual launching of multi-process non-MPI programs .................. 35 5.7 Debugging MPMD programs ................................ 36 5.7.1 Debugging MPMD programs without Express Launch .............. 36 5.7.2 Debugging MPMD programs in Compatibility mode ............... 36 5.8 Opening core files ...................................... 37 5.9 Attaching to running programs ............................... 37 5.9.1 Automatically detected MPI jobs .......................... 38 5.9.2 Attaching to a subset of an MPI job ........................ 38 5.9.3 Manual process selection .............................. 38 5.9.4 Configuring attaching to remote hosts ....................... 40 5.9.5 Using DDT command-line arguments ....................... 40 5.10 Starting a job in a queue .................................. 41 5.11 Using custom MPI scripts .................................. 41 5.12 Starting DDT from a job script ............................... 44 5.13 Attaching via gdbserver ................................... 44 5.14 UPC ............................................. 45 5.14.1 GCC UPC ..................................... 45 5.14.2 Berkeley UPC ................................... 45 5.15 Numactl ........................................... 45 5.15.1 MPI and SLURM .................................. 45 5.15.2 Non-MPI Programs ................................. 46 5.16 Python ............................................ 46 5.16.1 Overview ...................................... 46 5.16.2 Prerequisites .................................... 46 5.16.3 Running ....................................... 47 6 Overview 48 6.1 Saving and loading sessions ................................ 49 6.2 Source code ......................................... 49 6.2.1 Viewing ....................................... 49 6.2.2 Editing ....................................... 50 6.2.3 Rebuilding and restarting .............................. 50 6.2.4 Committing changes ................................ 50 6.3 Project Files ......................................... 50 6.3.1 Application and external code ........................... 51 6.4 Finding lost source files ................................... 51 6.5 Finding code or variables .................................. 52 6.5.1 Find Files or Functions ............................... 52 6.5.2 Find ......................................... 52 6.5.3 Find in Files .................................... 52 6.6 Go To Line ......................................... 53 6.7 Navigating through source code history .......................... 53 6.8 Static analysis ........................................ 54 6.9 Version control information ................................. 54 7 Controlling program execution 57 7.1 Process control and process groups ............................. 57 7.1.1 Detailed view .................................... 57 7.1.2 Summary view ................................... 58 7.2 Focus control ........................................ 58 Copyright © 2002-2018 Arm Limited (or its affiliates). All rights reserved. 2 Arm Forge 18.2.1 7.2.1 Overview of changing focus ............................ 59 7.2.2 Process group viewer ................................ 59 7.2.3 Breakpoints ..................................... 59 7.2.4 Code viewer .................................... 59 7.2.5 Parallel stack view ................................. 60 7.2.6 Playing and stepping ................................ 60 7.2.7 Step threads together ................................ 60 7.2.8 Stepping threads window .............................. 60 7.3 Starting, stopping and restarting a program ......................... 61 7.4 Stepping through a program ................................ 62 7.5 Stop messages ........................................ 62 7.6 Setting breakpoints ..................................... 62 7.6.1 Using the source code viewer ........................... 62 7.6.2 Using the Add Breakpoint window ......................... 63 7.6.3 Pending breakpoints ................................ 63 7.6.4 Conditional breakpoints .............................. 64 7.7 Suspending breakpoints ................................... 64 7.8 Deleting a breakpoint .................................... 64 7.9 Loading and saving breakpoints .............................. 65 7.10 Default breakpoints ..................................... 65 7.11 Synchronizing processes .................................. 65 7.12 Setting a watchpoint .................................... 66 7.13 Tracepoints ......................................... 67 7.13.1 Setting a tracepoint ................................. 67 7.13.2 Tracepoint output .................................. 68 7.14 Version control breakpoints and tracepoints ........................ 68 7.15 Examining the stack frame ................................. 70 7.16 Align stacks ......................................... 70 7.17 Viewing stacks in parallel .................................. 70 7.17.1 Overview ...................................... 70 7.17.2 The Parallel Stack View in detail .......................... 71 7.18 Browsing source code .................................... 72 7.19 Simultaneously viewing multiple files ........................... 74 7.20 Signal handling ....................................... 74 7.20.1 Custom signal handling (signal dispositions) ................... 75 7.20.2 Sending signals ................................... 75 8 Viewing variables and data 76 8.1 Sparklines .......................................... 76 8.2 Current line ......................................... 76 8.3 Local variables ....................................... 77 8.4 Arbitrary expressions and global variables ......................... 77 8.4.1 Fortran intrinsics .................................. 79 8.4.2 Changing the language of an expression ...................... 79 8.4.3 Macros and #defined constants ........................... 79 8.5 Help with Fortran modules ................................. 79 8.6 Viewing complex numbers in Fortran ........................... 80 8.7 C++ STL support ...................................... 81 8.8 Custom pretty printers ................................... 81 8.8.1 Example ...................................... 81 8.9 Viewing array data ..................................... 82 8.10 UPC support ......................................... 82 Copyright © 2002-2018 Arm Limited (or its affiliates). All rights reserved. 3 Arm Forge 18.2.1 8.11 Changing data values .................................... 83 8.12 Viewing numbers in different bases ............................. 83 8.13 Examining pointers ..................................... 83 8.14 Multi-dimensional arrays in the Variable View ....................... 83 8.15 Multi-dimensional array viewer (MDA) .......................... 84 8.15.1 Array expression .................................. 85 8.15.2 Filtering by value .................................. 86 8.15.3 Distributed arrays .................................. 86 8.15.4 Advanced: how arrays are laid out in the
Recommended publications
  • Forge and Performance Reports Modules $ Module Load Intel Intelmpi $ Module Use /P/Scratch/Share/VI-HPS/JURECA/Mf/ $ Module Load Arm-Forge Arm-Reports
    Acting on Insight Tips for developing and optimizing scientific applications [email protected] 28/06/2019 Agenda • Introduction • Maximize application efficiency • Analyze code performance • Profile multi-threaded codes • Optimize Python-based applications • Visualize code regions with Caliper 2 © 2019 Arm Limited Arm Technology Already Connects the World Arm is ubiquitous Partnership is key Choice is good 21 billion chips sold by We design IP, we do not One size is not always the best fit partners in 2017 manufacture chips for all #1 in Infrastructure today with Partners build products for HPC is a great fit for 28% market shares their target markets co-design and collaboration 3 © 2019 Arm Limited Arm’s solution for HPC application development and porting Combines cross-platform tools with Arm only tools for a comprehensive solution Cross-platform Tools Arm Architecture Tools FORGE C/C++ & FORTRAN DDT MAP COMPILER PERFORMANCE PERFORMANCE REPORTS LIBRARIES 4 © 2019 Arm Limited The billion dollar question in “weather and forecasting” Is it going to rain tomorrow? 1. Choose domain 2. Gather Data 3. Create Mesh 4. Match Data to Mesh 5. Simulate 6. Visualize 5 © 2019 Arm Limited Weather forecasting workflow Deploy Production Staging environment Builds Scalability Performance Develop Fix Regressions CI Agents Optimize Commit Continuous Version Start CI job control integration Pull system framework • 24 hour timeframe 6 © 2019 Arm Limited • 2 to 3 test runs for 1 production run Application efficiency Scientist Developer System admin Decision maker • Efficient use of allocation • Characterize application • Maximize resource usage • High-level view of system time behaviour • Diagnose performance workload • Higher result throughput • Gets hints on next issues • Reporting figures and optimization steps analysis to help decision making 7 © 2019 Arm Limited Arm Performance Reports Characterize and understand the performance of HPC application runs Gathers a rich set of data • Analyses metrics around CPU, memory, IO, hardware counters, etc.
    [Show full text]
  • Adaptive Data Migration in Load-Imbalanced HPC Applications
    Louisiana State University LSU Digital Commons LSU Doctoral Dissertations Graduate School 10-16-2020 Adaptive Data Migration in Load-Imbalanced HPC Applications Parsa Amini Louisiana State University and Agricultural and Mechanical College Follow this and additional works at: https://digitalcommons.lsu.edu/gradschool_dissertations Part of the Computer Sciences Commons Recommended Citation Amini, Parsa, "Adaptive Data Migration in Load-Imbalanced HPC Applications" (2020). LSU Doctoral Dissertations. 5370. https://digitalcommons.lsu.edu/gradschool_dissertations/5370 This Dissertation is brought to you for free and open access by the Graduate School at LSU Digital Commons. It has been accepted for inclusion in LSU Doctoral Dissertations by an authorized graduate school editor of LSU Digital Commons. For more information, please [email protected]. ADAPTIVE DATA MIGRATION IN LOAD-IMBALANCED HPC APPLICATIONS A Dissertation Submitted to the Graduate Faculty of the Louisiana State University and Agricultural and Mechanical College in partial fulfillment of the requirements for the degree of Doctor of Philosophy in The Department of Computer Science by Parsa Amini B.S., Shahed University, 2013 M.S., New Mexico State University, 2015 December 2020 Acknowledgments This effort has been possible, thanks to the involvement and assistance of numerous people. First and foremost, I thank my advisor, Dr. Hartmut Kaiser, who made this journey possible with their invaluable support, precise guidance, and generous sharing of expertise. It has been a great privilege and opportunity for me be your student, a part of the STE||AR group, and the HPX development effort. I would also like to thank my mentor and former advisor at New Mexico State University, Dr.
    [Show full text]
  • Avatud Lähtekoodiga Vahendite Kohandamine Microsoft Visual C++ Tarkvaralahenduste Kvaliteedi Analüüsiks Sonarqube Serveris
    TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Tarkvarateaduse instituut Anton Ašot Roolaid 980774IAPB AVATUD LÄHTEKOODIGA VAHENDITE KOHANDAMINE MICROSOFT VISUAL C++ TARKVARALAHENDUSTE KVALITEEDI ANALÜÜSIKS SONARQUBE SERVERIS Bakalaureusetöö Juhendaja: Juhan-Peep Ernits PhD Tallinn 2019 Autorideklaratsioon Kinnitan, et olen koostanud antud lõputöö iseseisvalt ning seda ei ole kellegi teise poolt varem kaitsmisele esitatud. Kõik töö koostamisel kasutatud teiste autorite tööd, olulised seisukohad, kirjandusallikatest ja mujalt pärinevad andmed on töös viidatud. Autor: Anton Ašot Roolaid 21.05.2019 2 Annotatsioon Käesolevas bakalaureusetöös uuritakse, kuidas on võimalik saavutada suure hulga C++ lähtekoodi kvaliteedi paranemist, kui ettevõttes kasutatakse arenduseks Microsoft Visual Studiot ning koodikaetuse ja staatilise analüüsi ülevaate saamiseks SonarQube serverit (Community Edition). Seejuures SonarSource'i poolt pakutava tasulise SonarCFamily for C/C++ analüsaatori (mille eelduseks on SonarQube serveri Developer Edition) asemel kasutatakse tasuta ja vaba alternatiivi: SonarQube C++ Community pluginat. Analüüsivahenditena eelistatakse avatud lähtekoodiga vabu tarkvaravahendeid. Valituks osutuvad koodi kaetuse analüüsi utiliit OpenCppCoverage ja staatilise analüüsi utiliit Cppcheck. Siiski selgub, et nende utiliitide töö korraldamiseks ja väljundi sobitamiseks SonarQube Scanneri vajadustega tuleb kirjutada paar skripti: üks PowerShellis ja teine Windowsi pakkfailina. Regulaarselt ajastatud analüüside käivitamist tagab QuickBuild,
    [Show full text]
  • Fairborn Camera & Video
    © 2006 The Dayton Microcomputer Association, Inc. V O L UM E 3 1 , I S S U E 6 P A G E 1 TM Volume 31 Issue 6 www.DMA.org November 2006 Association of PC User Groups (APCUG) Member Location for October 31 General Meeting Topic meeting & map inside ... Parking Permits Fairborn Camera & Video Available … Mike Petros - Guest Speaker As the holidays approach, the search be- for prints. RAW format allows the option of gins for the hottest items for Christmas. We manipulating details with photo-editing soft- generally look for some high-tech gadget ware on a PC. It’s a good thing that memory that could make our lives easier, more pro- cards hold more data than ever before. ductive, or just plain fun. The latest in cam- Mike Petros, Store Manager at Fairborn era equipment has always been a favorite Camera & Video, has agreed to demonstrate and the choices this year are impressive. several of this year’s latest digital cameras There seem to be a half dozen models for and help make sense of their many features. every application. Credit-card sized “point Mike draws from 30 years of experience in and shoot” cameras fit easily in a pocket and the business. He often gives presentations to travel well. Those best suited for sports pho- local organizations and once wrote articles tography are the ones marked “single-lens- for the Midwest PC Review magazine. reflex”. They tend to be more responsive Although he would not give away any de- and accept interchangeable lenses. Cameras tails on the specials they will be running this of all sizes offer digital viewfinders.
    [Show full text]
  • The Kate Handbook
    The Kate Handbook Anders Lund Seth Rothberg Dominik Haumann T.C. Hollingsworth The Kate Handbook 2 Contents 1 Introduction 10 2 The Fundamentals 11 2.1 Starting Kate . 11 2.1.1 From the Menu . 11 2.1.2 From the Command Line . 11 2.1.2.1 Command Line Options . 12 2.1.3 Drag and Drop . 13 2.2 Working with Kate . 13 2.2.1 Quick Start . 13 2.2.2 Shortcuts . 13 2.3 Working With the KateMDI . 14 2.3.1 Overview . 14 2.3.1.1 The Main Window . 14 2.3.2 The Editor area . 14 2.4 Using Sessions . 15 2.5 Getting Help . 15 2.5.1 With Kate . 15 2.5.2 With Your Text Files . 16 2.5.3 Articles on Kate . 16 3 Working with the Kate Editor 17 4 Working with Plugins 18 4.1 Kate Application Plugins . 18 4.2 External Tools . 19 4.2.1 Configuring External Tools . 19 4.2.2 Variable Expansion . 20 4.2.3 List of Default Tools . 22 4.3 Backtrace Browser Plugin . 25 4.3.1 Using the Backtrace Browser Plugin . 25 4.3.2 Configuration . 26 4.4 Build Plugin . 26 The Kate Handbook 4.4.1 Introduction . 26 4.4.2 Using the Build Plugin . 26 4.4.2.1 Target Settings tab . 27 4.4.2.2 Output tab . 28 4.4.3 Menu Structure . 28 4.4.4 Thanks and Acknowledgments . 28 4.5 Close Except/Like Plugin . 28 4.5.1 Introduction . 28 4.5.2 Using the Close Except/Like Plugin .
    [Show full text]
  • 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 -
    [Show full text]
  • Debugging and Profiling with Arm Tools
    Debugging and Profiling with Arm Tools [email protected] • Ryan Hulguin © 2018 Arm Limited • 4/21/2018 Agenda • Introduction to Arm Tools • Remote Client Setup • Debugging with Arm DDT • Other Debugging Tools • Break • Examples with DDT • Lunch • Profiling with Arm MAP • Examples with MAP • Obtaining Support 2 © 2018 Arm Limited Introduction to Arm HPC Tools © 2018 Arm Limited Arm Forge An interoperable toolkit for debugging and profiling • The de-facto standard for HPC development • Available on the vast majority of the Top500 machines in the world • Fully supported by Arm on x86, IBM Power, Nvidia GPUs and Arm v8-A. Commercially supported by Arm • State-of-the art debugging and profiling capabilities • Powerful and in-depth error detection mechanisms (including memory debugging) • Sampling-based profiler to identify and understand bottlenecks Fully Scalable • Available at any scale (from serial to petaflopic applications) Easy to use by everyone • Unique capabilities to simplify remote interactive sessions • Innovative approach to present quintessential information to users Very user-friendly 4 © 2018 Arm Limited Arm Performance Reports Characterize and understand the performance of HPC application runs Gathers a rich set of data • Analyses metrics around CPU, memory, IO, hardware counters, etc. • Possibility for users to add their own metrics Commercially supported by Arm • Build a culture of application performance & efficiency awareness Accurate and astute • Analyses data and reports the information that matters to users insight • Provides simple guidance to help improve workloads’ efficiency • Adds value to typical users’ workflows • Define application behaviour and performance expectations Relevant advice • Integrate outputs to various systems for validation (e.g.
    [Show full text]
  • Performance Tuning Workshop
    Performance Tuning Workshop Samuel Khuvis Scientific Applications Engineer, OSC 1/89 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 = PZS0724 I Slides are on event page: osc.edu/events I Workshop website: https://www.osc.edu/˜skhuvis/opt19 2/89 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/89 Introduction 4/89 Workshop Philosophy I Aim for “reasonably good” performance I Discuss performance tuning techniques common to most HPC architectures I Compiler options I Code modification I Focus on serial performance I Reduce time spent accessing memory I Parallel processing I Multithreading I MPI 5/89 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 mpiexec -np <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 git clone [email protected]:khuvis.1/performance2019 handson.git I Make sure that the following modules are loaded: intel/18.0.3 mvapich2/2.3 6/89 More important than Performance! I Correctness of results I Code readability/maintainability I Portability - future systems
    [Show full text]
  • Best Practice Guide Modern Processors
    Best Practice Guide Modern Processors Ole Widar Saastad, University of Oslo, Norway Kristina Kapanova, NCSA, Bulgaria Stoyan Markov, NCSA, Bulgaria Cristian Morales, BSC, Spain Anastasiia Shamakina, HLRS, Germany Nick Johnson, EPCC, United Kingdom Ezhilmathi Krishnasamy, University of Luxembourg, Luxembourg Sebastien Varrette, University of Luxembourg, Luxembourg Hayk Shoukourian (Editor), LRZ, Germany Updated 5-5-2021 1 Best Practice Guide Modern Processors Table of Contents 1. Introduction .............................................................................................................................. 4 2. ARM Processors ....................................................................................................................... 6 2.1. Architecture ................................................................................................................... 6 2.1.1. Kunpeng 920 ....................................................................................................... 6 2.1.2. ThunderX2 .......................................................................................................... 7 2.1.3. NUMA architecture .............................................................................................. 9 2.2. Programming Environment ............................................................................................... 9 2.2.1. Compilers ........................................................................................................... 9 2.2.2. Vendor performance libraries
    [Show full text]
  • Arm in HPC the Future of Supercomputing Starts Now
    Arm in HPC The future of supercomputing starts now Marcin Krzysztofik and Eric Lalardie Arm © 2018 Arm Limited Arm’s business model (HPC focus) Armv8.x and extensions, Neoverse IP roadmap SVE Scalable Vector Extension © 2018 Arm Limited The Cloud to Edge Infrastructure Foundation for a World of 1T Intelligent Devices © 2018 Arm Limited Each generation brings faster performance and new infrastructure specific features 5nm 7nm+ 7nm Poseidon 16nm Zeus Platform Neoverse Platform Cosmos N1 Platform Platform 2021 2020 2019 Today 30% Faster System Performance per Generation + New Features Limited Arm © 2018 © The embargo for this content presented at Arm Tech Day will lift on Wednesday, Feb 20th at 6 a.m. Pacific Time. Corresponding UK time is: Wednesday, Feb 20th 2 p.m. BST World-class Neoverse Ecosystem AMPERE Tencent Cloud orange © 2018 Arm Limited Vanguard Astra by HPE (Top 500 system) • 2,592 HPE Apollo 70 compute nodes • Mellanox IB EDR, ConnectX-5 • 5,184 CPUs, 145,152 cores, 2.3 PFLOPs (peak) • 112 36-port edges, 3 648-port spine switches • Cavium Thunder-X2 ARM SoC, 28 core, 2.0 GHz • Red Hat RHEL for Arm • Memory per node: 128 GB (16 x 8 GB DR DIMMs) • HPE Apollo 4520 All–flash Lustre storage • Aggregate capacity: 332 TB, 885 TB/s (peak) • Storage Capacity: 403 TB (usable) • Storage Bandwidth: 244 GB/s © 2018 Arm Limited Arm HPC Software Ecosystem Job schedulers HPC Applications: and Resource Open-source, Owned, and Commercial ISV codes User-space Management: utilities, scripting, SLURM, IBM LSF, App/ISA specific optimizations, optimized libs and intrinsics: containers, and Altair PBS Pro, etc.
    [Show full text]
  • Debugging and Performance Analysis of Heterogenous HPC Applications
    DOI: 10.14529/jsfi200105 Tools for GPU Computing – Debugging and Performance Analysis of Heterogenous HPC Applications Michael Knobloch1, Bernd Mohr1 c The Authors 2020. This paper is published with open access at SuperFri.org General purpose GPUs are now ubiquitous in high-end supercomputing. All but one (the Japanese Fugaku system, which is based on ARM processors) of the announced (pre-)exascale systems contain vast amounts of GPUs that deliver the majority of the performance of these systems. Thus, GPU programming will be a necessity for application developers using high-end HPC systems. However, programming GPUs efficiently is an even more daunting task than tra- ditional HPC application development. This becomes even more apparent for large-scale systems containing thousands of GPUs. Orchestrating all the resources of such a system imposes a tremen- dous challenge to developers. Luckily a rich ecosystem of tools exist to assist developers in every development step of a GPU application at all scales. In this paper we present an overview of these tools and discuss their capabilities. We start with an overview of different GPU programming models, from low-level with CUDA over pragma- based models like OpenACC to high-level approaches like Kokkos. We discuss their respective tool interfaces as the main method for tools to obtain information on the execution of a kernel on the GPU. The main focus of this paper is on two classes of tools, debuggers and performance analysis tools. Debuggers help the developer to identify problems both on the CPU and GPU side as well as in the interplay of both.
    [Show full text]
  • High-Performance I/O Programming Models for Exascale Computing
    High-Performance I/O Programming Models for Exascale Computing SERGIO RIVAS-GOMEZ Doctoral Thesis Stockholm, Sweden 2019 KTH Royal Institute of Technology School of Electrical Engineering and Computer Science TRITA-EECS-AVL-2019:77 SE-100 44 Stockholm ISBN 978-91-7873-344-6 SWEDEN Akademisk avhandling som med tillstånd av Kungl Tekniska Högskolan framlägges till offentlig granskning för avläggande av teknologie doktorsexamen i högprestan- daberäkningar fredag den 29 Nov 2019 klockan 10.00 i B1, Brinellvägen 23, Bergs, våningsplan 1, Kungl Tekniska Högskolan, 114 28 Stockholm, Sverige. © Sergio Rivas-Gomez, Nov 2019 Tryck: Universitetsservice US AB iii Abstract The success of the exascale supercomputer is largely dependent on novel breakthroughs that overcome the increasing demands for high-performance I/O on HPC. Scientists are aggressively taking advantage of the available compute power of petascale supercomputers to run larger scale and higher- fidelity simulations. At the same time, data-intensive workloads have recently become dominant as well. Such use-cases inherently pose additional stress into the I/O subsystem, mostly due to the elevated number of I/O transactions. As a consequence, three critical challenges arise that are of paramount importance at exascale. First, while the concurrency of next-generation su- percomputers is expected to increase up to 1000 , the bandwidth and access × latency of the I/O subsystem is projected to remain roughly constant in com- parison. Storage is, therefore, on the verge of becoming a serious bottleneck. Second, despite upcoming supercomputers expected to integrate emerging non-volatile memory technologies to compensate for some of these limitations, existing programming models and interfaces (e.g., MPI-IO) might not provide any clear technical advantage when targeting distributed intra-node storage, let alone byte-addressable persistent memories.
    [Show full text]