Developing program behavior and performance analysis tools for parallel applications
Affiliated to
Alcatel-LucentLocation
Alcatel Lucent AntwerpTiming
Autumn 2010Description
Introduction
Inside Bell Labs, we are currently developing two tools for analyzing multi-threaded applications. The main goal of these tools is to assist the application developer in analyzing the behavior and performance of parallel applications. These tools could also be used for example by researchers for evaluating the impact of code transformations when parallelizing sequential applications, etc.
The first tool is a program analysis tool based on the PIN instrumentation toolkit that captures micro-architectural independent program execution characteristics of multi-threaded applications and automatically summarizes all results in a detailed HTML report. As all analyses are both interval-based and thread-based, bottlenecks inside particular application threads can very easily be spotted.
The second tool is a performance analysis tool that captures a programmable range of performance statistics for all individual threads using hardware performance counters, providing both interval-based as well as full execution-based statistics.
Both tools are fully automated and provide the developer many detailed statistics concerning the performance and behavior of a parallel application. As all results are also linked back to the original source code lines, the developer can very easily track and eliminate bottlenecks in the parallel application.
Objectives
The goal of this project is to extend, unify and harden the program behaviour and performance analysis tools mentioned above, so that both tools can be made publicly available for researchers and parallel application developers. This includes:
- Create a number of templates for easily adding new program analyses and for adding new performance counters or supporting new architectures;
- Add a number of instrumentation analyses routines for measuring particular bottlenecks or characteristics of parallel applications;
- Speed up the implementation of the analyses routines, and add sample-based versions for faster but less accurate measurement results;
- Integrate our thread-based and interval-based HPC framework in the Linux HPC API;
- Develop a tool that can dynamically be attached to running multi-threaded applications for measuring per-thread performance events;
- Create a set of rules for automatically summarizing the raw data into a number of precise guidelines towards to developer what bottlenecks exist in the application, what the main causes are, and how they could be solved;
- Develop a more dynamic GUI next to the HTML for displaying the analysis data;
- Etc.
Profile
The candidate should have a strong background and expertise in parallel programming models and issues, multi-core processor architectures, writing instrumentation tools in Pin, programming hardware performance counters and developing Linux kernel modules.
Contact: Steven Boucque: steven.boucque@alcatel-lucent.com
<< Go back to Industrial Internship Home Page
