CMU 15-418 (Spring 2012) Final Project:
ISPC Performance Monitor
Jin Seop Kim ( and Dong Bae Jun (

Project Proposal

Checkpoint Report

Final Report

Working Schedule

Week What We Plan To Do What We Actually Did
Apr 1-7Research analysis and measurement methods for ISPC.
Design cache and IPC analysis mechanism.
Confirmed that we could extract cache and ipc information from intel performance counter monitor.
Decided to measure runtime and divergence with direct implementation.
Apr 8-14Build and learn ISPC source codes.Set up build environment and tried different configurations.
Apr 15-21Prototype visulization tools.Developed a graphical result viewer based on Java.
Apr 23-26Plan and determine how divergence can be detected in ISPC.Researched the instrument option in ISPC compiler. Decided to provide a user library to extract the lane status for the defined monitoring region.
Apr 27-29Add a new option to the current ISPC or implement a separate library.Start implementing a separate library. Tried various ways for the most effective display.
Apr 30-May 3Continue the development.Finished a rough draft for ISPC monitor library. Added more functionalities to the visualization tool.
May 4-6Polish divergence detection and improve visualization.Tested with a large data set. Provided the aggregate summary.
May 7-10Test, debug, and finalize the projectFixed several issues with user library and visualization tool. Prepared for parallelism competition.

Working Log
03/31/2012: brainstorming and deciding the project topic.

04/02/2012: working on the project website.

04/05/2012: running examples and getting familiar with intel performance counter monitor.

04/06/2012: cloning ispc respository.

04/08/2012: building llvm and ispc on the core-i7 test box.

04/09/2012: analyzing ispc source codes to understand how SIMD instructions are generated.

04/10/2012: trying several ispc options such as --emit-c++, --target=generic-4, and --instrument.

04/13/2012: studying ispc parallel execution model.

04/16/2012: prototyping a basic visualization tool which displays divergence, runtime, cache utilization, and ipc with bar graphs.

04/18/2012: reconsidering about practical and useful performance results.

04/20/2012: carnival week with parties and interviews.

04/23/2012: finishing checkpoint writeup.

04/24/2012: designing the user library interfaces to extract the lane status only for the specified region

04/28/2012: writing ISPC Performance Monitor user library.

04/30/2012: improving the visualization tool with interactive and intuitive displays.

05/03/2012: finishing the first draft of ISPC Performance Monitor user library.

05/04/2012: writing sample test program for performance monitoring and running several cases.

05/06/2012: adding the functionality for aggregate statistics.

05/07/2012: fixing efficiency issues with the visualization tool.

05/08/2012: finalizing the user library and the visualization tool.

05/09/2012: preparing for the parallelism competition.

05/11/2012: writing the final report.