Computational Tools for Rapid and Reliable Development of High Performance Applications

Organizers

Motivation

This tutorial will be an introduction to a set of advanced computational software tools to leverage the development of high performance applications. The lectures will focus on the selection, installation and use of scalable and robust software tools, and scalable programming model. Functionalities implemented in these software tools include: numerical algorithms for the solution of large computational problems, performance monitoring and profiling, and automatic tuning. Participants should expect to learn about techniques used to solve common computational problems and monitor their performance. Participants are encouraged to bring laptop computers and follow live demonstrations through hand-on experiences. The software presented here is freely available and widely used by the computational sciences international community.

Intended Audience

Agenda

08:30-09:00
Introduction
Tony Drummond (Lawrence Berkeley National Laboratory)
09:00-10:30 Introduction to PETSc
Jose Roman (Universidad Politecnica de Valencia)
10:30-11:00 Coffee Break
11:00-12:00 SLEPc
Jose Roman (Universidad Politecnica de Valencia)
12:00-13:30 Working Lunch, Q&A and discussion opportunity with presenters
13:30-14:30 ScaLAPACK
Tony Drummond (Lawrence Berkeley National Laboratory)
14:30-15:00 Global Arrays
Tony Drummond (Lawrence Berkeley National Laboratory)
15:00-15:30 Coffee Break
15:30-17:00 TAU
Sameer Shende (University of Oregon)
17:00-18:00 Demo Session
Jose Roman, Sameer Shende and Tony Drummond

Level of Presentations

The level of the presentations requires a general understanding of High Performance Computing (HPC) applications and parallel programming. The level of difficulty of presented topics can be characterized as follows:

Course Description

The main goal of this tutorial is to introduce users to a variety of software solutions that assists computational scientists to develop high-performance programs using robust and scalable libraries while understanding their performance. Thus, the tutorial covers scalable implementations of numerical algorithms, automatic optimization, performance monitoring and profiling tools. All tools to be presented in this tutorial are part of the United States Department of Energy Advanced CompuTational Software Collection, which offers a plethora of robust and high-performance computational services.

For numerical algorithms, we look at direct and iterative solutions of linear and non-linear systems of equations, general eigenvalue problems for systems leading to dense and sparse matrices. Attendees will not only learn about the use of the tools, but also will be provided with interactive examples that will help them with the selection of tools and interfaces, installation of tools, and automatic optimization of libraries. Tools to be presented here include Global Arrays, Hypre, PETSc, ScaLAPACK, SLEPc and SuperLU.

In addition, the tutorial will also cover performance data collection, analysis, and optimization. To evaluate the performance of their parallel, scientific applications, we will demonstrate TAU, PAPI, KOJAK, and Vampir. After describing and demonstrating how performance data (both profile and trace data) can be collected in a straightforward manner using TAU's (Tuning and Analysis Utilities) automated instrumentation, the workshop will cover how to analyze the performance data collected and drill down to find performance bottlenecks and determine their causes. The workshop will include some sample codes that illustrate the different instrumentation and measurement choices available to the users. Topics will cover generating performance profiles and traces with hardware performance counters data using PAPI. Trace-based visualization will be covered using the Vampir and VampirServer tools for scalable visualization of event traces.