Debugging parallel programs. Breakpoint debugging Probably the most widely familiar method of debugging programs is breakpoint debugging. In this method,

Slides:



Advertisements
Similar presentations
Software Development Languages and Environments. Programming languages High level languages are problem orientated contain many English words are easier.
Advertisements

Introduction to Openmp & openACC
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
2 Motivation Distributed Systems Notoriously difficult to build without appropriate assistance. First ones were based on low-level message-passing mechanisms.
SYSTEM PROGRAMMING & SYSTEM ADMINISTRATION
Debugging What can debuggers do? Run programs Make the program stops on specified places or on specified conditions Give information about current variables’
1 Tornado: An Embedded System Development Tool Maung Wynn Aung Han CIS 642, Spring 2001 Prof. Insup Lee.
Types of Parallel Computers
Lab6 – Debug Assembly Language Lab
The Path to Multi-core Tools Paul Petersen. Multi-coreToolsThePathTo 2 Outline Motivation Where are we now What is easy to do next What is missing.
1 Chapter 4 The Fundamentals of VBA, Macros, and Command Bars.
Programming Languages Structure
1-1 Embedded Software Development Tools and Processes Hardware & Software Hardware – Host development system Software – Compilers, simulators etc. Target.
Visual Debugging Tools for Concurrent Models of Computation Elaine Cheong 15 May 2002 EE290N: Advanced Topics in System Theory.
SIMULATION. Simulation Definition of Simulation Simulation Methodology Proposing a New Experiment Considerations When Using Computer Models Types of Simulations.
1. 2 Chapter 1 Introduction to Computers, Programs, and Java.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Systems Software Operating Systems.
1b.1 Types of Parallel Computers Two principal approaches: Shared memory multiprocessor Distributed memory multicomputer ITCS 4/5145 Parallel Programming,
Computer Software.
BY: SACHIN SHRIVASTAVA Operating System By : Sachin Shrivastava 1.
What is Concurrent Programming? Maram Bani Younes.
INTRODUCTION TO WEB DATABASE PROGRAMMING
Visual Basic Chapter 1 Mr. Wangler.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Operating System A program that controls the execution of application programs An interface between applications and hardware 1.
Debugging Cluster Programs using symbolic debuggers.
COMPUTER SOFTWARE Section 2 “System Software: Computer System Management ” CHAPTER 4 Lecture-6/ T. Nouf Almujally 1.
Analyzing parallel programs with Pin Moshe Bach, Mark Charney, Robert Cohn, Elena Demikhovsky, Tevi Devor, Kim Hazelwood, Aamer Jaleel, Chi- Keung Luk,
Support for Debugging Automatically Parallelized Programs Robert Hood Gabriele Jost CSC/MRJ Technology Solutions NASA.
Debugging and Profiling GMAO Models with Allinea’s DDT/MAP Georgios Britzolakis April 30, 2015.
TotalView Debugging Tool Presentation Josip Jakić
1 Computer Programming (ECGD2102 ) Using MATLAB Instructor: Eng. Eman Al.Swaity Lecture (1): Introduction.
CHAPTER TEN AUTHORING.
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
Debugging in Java. Common Bugs Compilation or syntactical errors are the first that you will encounter and the easiest to debug They are usually the result.
Systems Software Operating Systems. What is software? Software is the term that we use for all the programs and data that we use with a computer system.
Martin Schulz Center for Applied Scientific Computing Lawrence Livermore National Laboratory Lawrence Livermore National Laboratory, P. O. Box 808, Livermore,
Profiling, Tracing, Debugging and Monitoring Frameworks Sathish Vadhiyar Courtesy: Dr. Shirley Moore (University of Tennessee)
Debugging and Profiling With some help from Software Carpentry resources.
A Tutorial on Introduction to gdb By Sasanka Madiraju Graduate Assistant Center for Computation and Technology.
A New Parallel Debugger for Franklin: DDT Katie Antypas User Services Group NERSC User Group Meeting September 17, 2007.
McGraw-Hill/Irwin © 2006 The McGraw-Hill Companies, Inc., All Rights Reserved. 1.
CSE 351 GDB Introduction. Lab 1 Status? How is Lab 1 going? I’ll be available at the end of class to answer questions There are office hours later today.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
McGraw-Hill/Irwin Copyright © 2009 by The McGraw-Hill Companies, Inc. All rights reserved.
An operating system is the software that makes everything in the computer work together smoothly and efficiently. What is an Operating System?
Program Systems Institute RASTDB TDB: THE INTERACTIVE DISTRIBUTED DEBUGGING TOOL FOR PARALLEL MPI PROGRAMS.
Dale Roberts Debugger Dale Roberts, Lecturer Computer Science, IUPUI Department of Computer and Information Science, School.
JavaScript 101 Introduction to Programming. Topics What is programming? The common elements found in most programming languages Introduction to JavaScript.
Source Level Debugging of Parallel Programs Roland Wismüller LRR-TUM, TU München Germany.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
A computer contains two major sets of tools, software and hardware. Software is generally divided into Systems software and Applications software. Systems.
Chapter – 8 Software Tools.
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary Copyright © 2009 Ericsson, Made available under the Eclipse Public License.
Other Tools HPC Code Development Tools July 29, 2010 Sue Kelly Sandia is a multiprogram laboratory operated by Sandia Corporation, a.
Embedded Real-Time Systems Processing interrupts Lecturer Department University.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
 Wind River Systems, Inc Chapter - 4 CrossWind.
Monitoring and Debugging Message Passing Applications with MPVisualizer Ana Paula Cláudio, João Duarte Cunha, and Maria Beatriz Carmo – Thu.
Wednesday NI Vision Sessions
HP-SEE TotalView Debugger Josip Jakić Scientific Computing Laboratory Institute of Physics Belgrade The HP-SEE initiative.
Dale Roberts Debugger Dale Roberts, Lecturer Computer Science, IUPUI Department of Computer and Information Science, School.
Fundamental of Java Programming (630002) Unit – 1 Introduction to Java.
1 Class #509 The Heisenberg Principal of Debugging A Method for Recording Execution and Program State in a Live Embedded System, for Later Playback and.
Kai Li, Allen D. Malony, Sameer Shende, Robert Bell
Computer Programming.
What is Concurrent Programming?
Allen D. Malony Computer & Information Science Department
What is Concurrent Programming?
Presentation transcript:

Debugging parallel programs

Breakpoint debugging Probably the most widely familiar method of debugging programs is breakpoint debugging. In this method, you are allowed to specify locations in your program (breakpoints) where the program execution will suddenly stop, giving you the opportunity to examine the program's state. You can then either let the program execute one or more instructions at a time, or allow it to continue until another breakpoint, and examine the state again. Breakpoint debugging works very well for serial programs that do not interact with any other dynamic entities (other programs or real-world devices). However, programs in the parallel and real-time domains may have their behavior and results altered if interrupted by a debugger. Events may go undetected, message queues may overflow, and moving parts may fail to stop in time, causing real-world damage to machines or people. One solution is to instrument the code, but the most frequently used way to do this is to insert print statements by hand, which has numerous disadvantages and limited power. A tool to instrument a program at runtime would need many of the capabilities of a debugger; and indeed, a typical debugger has most of the capabilities both to perform the instrumenting, and to help analyze the resulting trace data. A debugger could easily plant tracing instrumentation in the executing program, and just as easily could display the values of program data and arbitrary expressions collected, together with the associated source code; and it could do it all interactively. The Cygnus approach uses the popular GNU debugger, GDB, both to set up and to analyze trace experiments. In a trace experiment, the user specifies program locations to trace and what data to collect at each one (using the full power of the source language's symbolic expressions). A simplified, non-symbolic description of the trace experiment is downloaded to a separate trace collection program. Then the program is run while the specially written trace collection program collects the data. Finally, GDB is used again to review the traced events, stepping from one tracepoint execution to the next and displaying the recorded data values just as if debugging the program in real time; or GDB's scripting language is used to produce a report of the collected data, formatted to the user's specification. From:

TotalView Most of the time MPI programs are debugged using print statements. The most popular breakpoint debugger is TotalView

What is TotalView? TotalView is a sophisticated software debugger product of Etnus LLC.Etnus LLC. Used for debugging, analyzing, and tuning program performance. Especially designed for use with complex, multi- process and/or multi-threaded applications. Has been selected as the Department of Energy's Advanced Simulation and Computing (ASC) program's debugger.Advanced Simulation and Computing (ASC)

Key Features of TotalView: Provides source and assembler level debugging for serial, parallel, multi-process and multi-threaded codes. Portable: able to be used in a variety of UNIX environments, including those with distributed, clustered, uniprocessor and SMP machines. Supports most popular parallel programming models/libraries such as MPI, OpenMP, Threads, PVM, SHMEM and hybrid. Provides all debugging facilities through easy to learn and use Xwindows based Graphical User Interface. Also provides a command line interpreter for non-GUI debugging. Can be used to debug a specified program, an unattached running process, or a core file.

On a per process/thread basis, permits you to view: –Source code, assembler code, or both –Source for called functions –The execution stack trace (procedure calling stack) –Stack variables and registers –Program data (variables, arrays) –MPI message queues Provides for the insertion and execution of "code fragments" within the current process context. Provides several types of "action points", as well as the ability to set, delete, suppress, unsurpress and save them: –process breakpoint - on a source line basis –multi-process barrier - blocking breakpoint for parallel processes –conditional breakpoint - where breakpoint occurs only if a code fragment expression is satisfied –evaluation points - where code fragments are evaluated Allows you to easily modify program data (addresses, arrays, array slices, variables) while debugging Provides special features for memory related debugging Provides graphical visualization of array data during debugging session Includes an extensive web browser based online help system

Detecting races with trace analysis The objective of trace analysis techniques is to identify races in parallel programs. The strategy consists in (conceptually) –executing the program, –generating a trace of all memory accesses and synchronization operations –Building a graph of orderings (solid arrows below) and conflicting memory references (dashed lines below) –Detecting races (when two nodes connected by dashed lines are not ordered by solid arrows) Example: Intel Thread Checker

Doacross synchronization

Replay Races are possible in MPI programs. For debugging we want to keep a history of events so that every time we run the program during debugging we get the same behavior. See: Optimal tracing and replay for debugging message-pass in parallel programs R. H. B. Netzer B. P. Miller Proceedings of the 1992 ACM/IEEE conference on Supercomputing Minneapolis, Minnesota, United States Pages: Year of Publication: 1992 ISBN: