Codelet Extractor and REplayer (CERE) is an open source framework for code isolation. CERE finds and extracts the hotspots of an application as isolated fragments of code, called codelets. Codelets can be modified, compiled, run, and measured independently from the original application. Code isolation reduces benchmarking cost and allows piecewise optimization of an application. Unlike previous approaches, CERE isolates codes at the LLVM Intermediate Representation level. Therefore CERE is language agnostic and supports many input languages such as C, C++, Fortran, and D. CERE automatically detects codelets invocation that have the same performance behavior. Then, it selects a reduced set of representative codelets and invocations, much faster to replay, which still captures accurately the original application. In addition, CERE supports recompiling and retargeting the extracted codelets. Therefore, CERE can be used for cross-architecture performance prediction or piecewise code optimization.
Please follow the instructions in INSTALL.md.
For OpenMP support please switch to OpenMP branch and follow the instructions in INSTALL.md.
For now CERE only supports the Linux operating system. We have tested different versions of kernels from the 2.6 series and later. CERE has been tested mainly on x86_64 and Aarch64 (ARMv8 64 bits) Debian and Ubuntu distributions. The current version is an update to LLVM 15.
CERE capture and replay is performed in user mode, but requires that
/proc/sys/kernel/randomize_va_space
is set to 1 or 2. This is the default on most
linux distribution.
CERE is an alpha release, if you experience bugs during capture and replay please report them using the issue tracker. Thanks!
New users should start by reading CERE tutorial.
Once installation is complete, a set of man pages for cere commands is available
in the doc/
directory. To check a command use man -M <cere-path>/doc <command>
. For example, to read the manual of cere-configure you can type:
man -M doc/ cere configure
The issue tracker is the preferred channel for bug reports, features requests and submitting pull requests.
For more general questions or discussions please use the cere-dev@googlegroups.com mailing list.
If you use CERE in your research, please cite the following paper:
@article{CERE,
title = {{CERE: LLVM Based Codelet Extractor and REplayer for Piecewise
Benchmarking and Optimization}},
author = {de Oliveira Castro, Pablo and Akel, Chadi and Petit, Eric and Popov,
Mihail and Jalby, William},
journal = {ACM Transactions on Architecture and Code Optimization (TACO)},
volume = {12},
number = {1},
pages = {6},
year = {2015},
publisher = {ACM},
doi = {10.1145/2724717}
}
Thanks !
CERE contributors are listed in the THANKS file.
Copyright (c) 2013-2018, Universite de Versailles St-Quentin-en-Yvelines
CERE is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.