Approaches to debugging mixed-language HPC apps

Post on 23-Jan-2018

52 views 0 download

Transcript of Approaches to debugging mixed-language HPC apps

1© 2017 Rogue Wave Software, Inc. All Rights Reserved. 1

Approaches to

debugging mixed-

language HPC apps

Exhibitor Forum

SC17

2© 2017 Rogue Wave Software, Inc. All Rights Reserved. 2

Data modeling is critical for machine learning

• Data scientists iterate over huge datasets

• Legacy algorithms are critical

• Most popular languages

– R in scientific communities

– Python in engineering

• Focusing on Python

• Developers use it because

– Ease of use

– Clean syntax

– Extension libraries (many in C/C++)

3© 2017 Rogue Wave Software, Inc. All Rights Reserved. 3

Calling C/C++ from Python

• High performance libraries are written in C/C++ and Fortran

– Run faster

– Rewriting doesn’t make sense

– Advanced multi-threaded capabilities

• Fortunately there are many ways to call between the languages

4© 2017 Rogue Wave Software, Inc. All Rights Reserved. 4

Debugging multiple languages

• Debugging one language is difficult enough

– Especially with many threads/processes

• The language intersection is tougher

– Data comparison

– Glue code

• Issues are:

– Viewing data across language barriers

– Combined call stack

– Extraneous stack frames

5© 2017 Rogue Wave Software, Inc. All Rights Reserved. 5

Python Session Editor

Glue

code

Debugging Python Interpreter

6© 2017 Rogue Wave Software, Inc. All Rights Reserved. 6

Stopped in C/C++ Python Extension

Shows Python & C++

7© 2017 Rogue Wave Software, Inc. All Rights Reserved. 7

Stopped in C/C++ Python Extension

Shows Python & C++

8© 2017 Rogue Wave Software, Inc. All Rights Reserved. 8

Selected Python frame

C++

data

Python

Data

9© 2017 Rogue Wave Software, Inc. All Rights Reserved. 9

Data View

C++

data

Python

Data

10© 2017 Rogue Wave Software, Inc. All Rights Reserved. 10

Numpy

11© 2017 Rogue Wave Software, Inc. All Rights Reserved. 11

Python without filtering

Glue

code

No viewing of Python data and code

12© 2017 Rogue Wave Software, Inc. All Rights Reserved. 12

Python support in TotalView

• Designed for where Python calls C/C++ or vice versa

• Glue frames hidden from view

– Supported for SWIG

– User customizable

• Python information shown

– Code

– Data

13© 2017 Rogue Wave Software, Inc. All Rights Reserved. 13

Stack transformation facility

• Hides stack frames

• Transforms stack frames

• Backbone for:

– Python support

• Useful for any stack frames you want to hide

– Language differences

– Wrapper code

14© 2017 Rogue Wave Software, Inc. All Rights Reserved. 14

Demo

15© 2017 Rogue Wave Software, Inc. All Rights Reserved. 15

Few use cases

• Currently used with large scientific application at Lawrence

Livermore National Laboratory

• Helpful while learning or extending packages such as TensorFlow.

16© 2017 Rogue Wave Software, Inc. All Rights Reserved. 16

TensorFlow basics

• Open source

• Numerical computation

• Usage in machine learning

• Written in C++

– Called from Python

17© 2017 Rogue Wave Software, Inc. All Rights Reserved. 17

TensorFlowMultithreaded application

Glue code removed

Added a rule for some wrappers

18© 2017 Rogue Wave Software, Inc. All Rights Reserved. 18

How does Rogue Wave help HPC?

TotalView debugger

• Troubleshooting and analysis tool

• Visibility into applications

• Control over applications

• Integrated Reverse Debugging

MemoryScape debugger• Malloc API misuse

• Memory leaks

• Buffer overflows

• Invalid Read/Write

19© 2017 Rogue Wave Software, Inc. All Rights Reserved. 19

TotalView for HPC• Comprehensive multi-core and multi-threaded analysis and debug environment

– Thread specific breakpoints

– Control individual thread execution

– View thread specific stack and data

– View complex data types easily

• Integrated Reverse debugging

• Mixed Language - Python C/C++

• Track memory leaks in running applications

• Supports C/C++ on Linux

• Active development for 30+ years

• Allowing the business to have

– Predictable development schedules

– Less time spent debugging

20© 2017 Rogue Wave Software, Inc. All Rights Reserved. 20

Summary

• Comments and questions

• Come see a live demo and learn more at our SC17 booth 1715

• For more information

– https://www.roguewave.com

– White Paper - https://www.roguewave.com/resources/white-

papers/mixed-language-debugging-python-c-cplusplus

– Videos - https://www.youtube.com/watch?v=LXSSstUdKnc

– Evaluation - https://www.roguewave.com/products-services/request-

evaluation

21© 2017 Rogue Wave Software, Inc. All Rights Reserved. 21