[05/2015] New release v0.7.1 is available. The major included feature is the clustering approach.
[03/2015] The GIT repository has been moved to GitHub. A new stable release will be ready soon.
[04/2014] Release v0.7.0 is out! It includes a better integration of MAQAO Perf, and various other improvements. Please check out the git logs for more details.
[10/2013] The CTI sources v0.6.0 are now available.
[08/2013] The documentation has been updated. The sources will be available soon.
Full program characterization is difficult and not always relevant. For example, typical High Performance Computing (HPC) programs generally contain tens of thousands of code lines, if not millions. A better way to perform application characterization is to consider each hot-spot in a separate and more efficient environment. Using profiling tools such as Gprof or Vtune allows an engineer to discern between often executed code and less used segments. Once the initial profiling step separates the hot-spots i.e. often executed code segments, the engineer focuses on tweaking, optimizing, or even debugging the target code.
A codelet is a small program composed of: 1. The code fragment extracted from the application. 1. The application’s data required for its execution. 1. A wrapper, which loads the original application data, the general memory, and call the code fragment.
Codelets, by limiting the amount of code considered, reduce compilation, iterative testing, and even profiling time. However, handling each codelet separately reduces the effectiveness and a means to handle each in a unified way is necessary.
CTI stands for Codelet Tuning Infrastructure. The purpose of CTI is three-fold: share data (codelets), automate menial tasks, and perform data mining techniques.
Sharing data is done via files or extracted data and stored in a database. Menial tasks such as scripting, creating back-ups, formatting the data, and performing analysis via the integrated tools are automated. Data mining techniques are automated by using the internal format in CTI and using the existing viewers.
With a filled codelet base, the tools are systematically tested on many different applications via the extracted codelets. Moreover, an application engineer could present a codelet and retrieve a similar codelet from the database. The extracted codelet could contain information on optimization hints that had previously provided a benefit for another application engineer.
CTI can be used by command-line, and provides a web user interface. It has been sucessfully tested on Ubuntu (10.10 and above), Mac OS X 10.5, OpenSUSE 11.2, Debian (6 and above) and CentOS 6.
CTI supports many characterization tools such as MAQAO (http://www.maqao.org/), DECAN, Codelet Finder (http://www.caps-entreprise.com/), Likwid (http://code.google.com/p/likwid/), etc. Moreover, the tool is built on a plugin-based system, making it flexible and configurable. The user can easily integrate his own tool, or even change the main CTI's behaviour.
For the full documentation and tutorials, please check out the user manual.
This work has been done in the Exascale Computing Research lab, thanks to the support of Intel, CEA, GENCI, and UVSQ.
For any question regarding CTI, please write at firstname.lastname@example.org.
- Franck Talbart, team leader (http://franck.talbart.fr)
- Romain Anty, expert engineer
- Mathieu Bordet, expert engineer
- Nicolas Petit, expert engineer
- Yuriy Kashnikov
- Pablo Oliveira
- Mathieu Tribalat
- Grigori Fursin contributed to the very first prototype (2010) of CTI.
- Jean Christophe Beyler has managed the team from August 2011 until August 2012.
- Florent Hemmi
- Antoine Darnay
- Amin Bahloul
- Mariem Mouakhar