Skip to content

Commit

Permalink
Merge pull request #4 from Chadi-akel/master
Browse files Browse the repository at this point in the history
CERE Realease version 0.1.0
  • Loading branch information
pablooliveira committed Feb 26, 2016
2 parents cb5e71a + 568f16c commit 4967e2e
Show file tree
Hide file tree
Showing 337 changed files with 4,256 additions and 113,976 deletions.
16 changes: 16 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
CERE CHANGELOG

[v0.1.0] 2016/02/24
* Compatibility with LLVM 3.5 (LLVM 3.3 and LLVM 3.4 are still
supported).
* Initial support for OpenMP applications. Parallel CERE (PCERE) enables
parallel regions capture and replay. Still experimental.
(http://dx.doi.org/doi:10.1109/IPDPS.2015.19)
* Hybrid compilation support: CERE allows experimental separate per region
compilation, with different optimization flags.
* CERE exploration flags support: 'CERE flag' predict region performance
for each requested flag.
* Reduce test suite execution runtime.

[v0.0.1] 2015/06/15
* Initial CERE release
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# CERE v0.0.1
# CERE v0.1.0

[Codelet Extractor and REplayer
(CERE)](https://benchmark-subsetting.github.io/cere/) is an open source framework
Expand Down Expand Up @@ -31,7 +31,7 @@ CERE capture and replay is performed in user mode, but requires that
`/proc/sys/kernel/randomize_va_space` is set to 1. This is the default on most
linux distribution.

v0.0.1 of CERE is an alpha release, if you experience bugs during capture and
v0.1.0 of CERE is an alpha release, if you experience bugs during capture and
replay please report them using the issue tracker. Thanks !

### Documentation
Expand Down
4 changes: 2 additions & 2 deletions configure.ac
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
AC_PREREQ([2.69])
AC_INIT([cere], [0.0.1], [[email protected]])
AC_INIT([cere], [0.1.0], [[email protected]])
AM_SILENT_RULES([yes])
AC_CONFIG_AUX_DIR(autoconf)
AC_CONFIG_MACRO_DIR([m4])
Expand All @@ -19,7 +19,7 @@ AC_PROG_MAKE_SET
AC_PROG_CC([gcc])
AC_DEFINE_UNQUOTED([GCC_PATH], ["$CC"], [GCC path for dragonegg])
AC_SUBST(GCC_PATH, $CC)
AX_LLVM([3.3],[all])
AX_LLVM([3.3],[3.5.2],[all])

AC_CHECK_LIB([c], [exit], , AC_MSG_ERROR([Could not find c library]))
AC_CHECK_LIB([gfortran], [exit], , AC_MSG_ERROR([Could not find gfortran library]))
Expand Down
9 changes: 6 additions & 3 deletions doc/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ RONN_FLAGS=\
--organization="Université de Versailles St-Quentin-en-Yvelines"

man_MANS = man1/cere-configure.1 man1/cere-profile.1 man1/cere-capture.1 man1/cere-tutorial.1 man1/cere-replay.1 man1/cere-regions.1 man1/cere-trace.1 man1/cere-selectinv.1 man1/cere-instrument.1 man1/cere-check-io.1 \
man1/cere-check-matching.1 man1/cere-report.1 man1/cere-select-ilp.1 man1/cere-select-max-cov.1 man1/cere-plugin-instr.1
man1/cere-check-matching.1 man1/cere-report.1 man1/cere-select-ilp.1 man1/cere-select-max-cov.1 man1/cere-plugin-instr.1 man1/cere-hybrid.1 man1/cere-flag.1
doc_DATA = html/cere-configure.1.html html/cere-profile.1.html html/cere-capture.1.html html/cere-tutorial.1.html html/cere-replay.1.html html/cere-regions.1.html html/cere-trace.1.html html/cere-selectinv.1.html \
html/cere-instrument.1.html html/cere-check-io.1.html html/cere-check-matching.1.html html/cere-report.1.html html/cere-select-ilp.1.html html/cere-select-max-cov.1.html html/cere-plugin-instr.1.html
html/cere-instrument.1.html html/cere-check-io.1.html html/cere-check-matching.1.html html/cere-report.1.html html/cere-select-ilp.1.html html/cere-select-max-cov.1.html html/cere-plugin-instr.1.html \
html/cere-hybrid.1.html html/cere-flag.1.html

man1/%.1: %.1.md
mkdir -p man1
Expand All @@ -31,4 +32,6 @@ EXTRA_DIST=\
cere-report.1.md \
cere-select-ilp.1.md \
cere-select-max-cov.1.md \
cere-plugin-instr.1.md
cere-plugin-instr.1.md \
cere-hybrid.1.md \
cere-flag.1.md
4 changes: 3 additions & 1 deletion doc/cere-check-matching.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ cere-selectinv(1). **cere check-matching** then captures and replay selected
invocations to predict the replay time of the region thanks to cere-capture(1)
and cere-replay(1). Finally **cere check-matching** compare replay time with
the original execution time of the region and output the matching results.
**cere check-matching** also update the call graph. cere-report(1) can be the
used to visualize the matching result for tested region(s).

## OPTIONS

Expand Down Expand Up @@ -44,4 +46,4 @@ cere is Copyright (C) 2014-2015 Université de Versailles St-Quentin-en-Yvelines
## SEE ALSO

cere-configure(1) cere-regions(1) cere-trace(1) cere-selectinv(1) cere-capture(1)
cere-replay(1)
cere-replay(1) cere-report(1)
64 changes: 64 additions & 0 deletions doc/cere-flag.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
cere flag(1) -- Replay region with specified compilation flags
==================================================================

## SYNOPSIS

```
cere flag [-h] --region REGION --flags FLAGS1, FLAGS2, ...
[--invocation INVOCATION] [--invitro-callcount INVITRO_CALLCOUNT]
[--plugin-instr PLUGIN_INSTR] [--norun] [--noinstrumentation]
[--force]
```

## DESCRIPTION

**cere flag** calls cere-replay(1) on the selected region to predict the
region performance when compiled with specified compilation flags. The user can
then choose the best set of flags for each region before calling cere-hybrid(1).

## OPTIONS

* `-h`:
Prints a synopsis and a list of the most commonly used options.

* `--region REGION`:
Selects the region to replay. The list of valid regions can be displayed with
the cere-regions(1) command.

* `--flags FLAGS1, FLAGS2, ...`:
The region is replayed for each set of flags (comma separated).

* `--invocation INVOCATION`:
Selects the invocation to replay. By default, all the representative
invocations chosen by cere-selectinv(1) are replayed.

* `--invitro-callcount INVITRO_CALLCOUNT`:
Select the meta-repetition of the replay. By default **cere replay** runs
the region 10 times.

* `--plugin-instr PLUGIN_INSTR`:
Library to instrument the replay. For more information on how to use another
library please refer to cere-plugin-instr(1).

* `--norun`:
Builds the replay binary but does not run it automatically.

* `--noinstrumentation`:
Disable the instrumentation of the replay. Override **--plugin-instr** flag.

* `--force`:
By default, **cere replay** does not replay a region+invocation pair if a
previous replay result exists. The **--force** flag forces the replay.

## OUTPUT FILE

* `.cere/replays/REGION_INVOCATION`:
Replay execution time of the region * INVITRO_CALLCOUNT

## COPYRIGHT

cere is Copyright (C) 2014-2015 Université de Versailles St-Quentin-en-Yvelines

## SEE ALSO

cere-replay(1) cere-hybrid(1)
37 changes: 37 additions & 0 deletions doc/cere-hybrid.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
cere hybrid(1) -- Create an hybrid binary
==================================================================

## SYNOPSIS

```
cere hybrid [-h] --regions-file REGIONS_FILE
```

## DESCRIPTION

**cere hybrid** allows the user to create an hybrid executable of the
application, where each region can be compile with a specific set of flags read
from **--regions-file** option. Each region is extracted into a new file, which
is then compiled with the selected flags. These files are then linked to
generate the hybrid binary.

## OPTIONS

* `-h`:
Prints a synopsis and a list of the most commonly used options.

* `--regions-file REGIONS_FILE`:
Input file where you can list for each region the choosen compilation flags.
Format must be a comma seperated csv file:
region,flag
\_\_cere\_\_sundials_dense_denseGETRF_82,-msse4.2
\_\_cere\_\_sundials_dense_denseGETRS_154,-fno-vectorize


## COPYRIGHT

cere is Copyright (C) 2014-2015 Université de Versailles St-Quentin-en-Yvelines

## SEE ALSO

cere-flag(1) cere-configure(1)
2 changes: 1 addition & 1 deletion doc/cere-selectinv.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ cere selectinv(1) -- Select representative invocations for a region
## SYNOPSIS

```
cere replay [-h] --region REGION [--force]
cere selectinv [-h] --region REGION [--force]
```

## DESCRIPTION
Expand Down
3 changes: 2 additions & 1 deletion doc/cere-tutorial.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,8 @@ cere-select-ilp(1).
## CERE REPORT

CERE provides a report tool to visualize in html format several informations
about the extraction process of your application.
about the extraction process of your application. You can call cere-report(1)
after any cere command.
To generate the report you can use the following command:

$ cere report
Expand Down
2 changes: 2 additions & 0 deletions doc/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ cere-select-ilp(1) cere-select-ilp.1.ronn
cere-select-max-cov(1) cere-select-max-cov.1.ronn
cere-plugin-instr(1) cere-plugin-instr.1.ronn
cere-profile(1) cere-profile.1.ronn
cere-hybrid(1) cere-hybrid.1.ronn
cere-flag(1) cere-flag.1.ronn

# External links
atexit(3) http://man.cx/atexit(3)
Expand Down
41 changes: 24 additions & 17 deletions m4/ax_llvm.m4
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

# SYNOPSIS
#
# AX_LLVM([version],[llvm-libs])
# AX_LLVM([min_version],[max_version],[llvm-libs])
#
# DESCRIPTION
#
Expand Down Expand Up @@ -53,7 +53,7 @@ AC_DEFUN([AX_LLVM],
AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [], [$with_llvm_path])
if test -z "$LLVM_CONFIG"; then
AC_MSG_ERROR(
[LLVM is required but program `llvm-config' cannot be found in $with_llvm_path])
[LLVM is required but program `llvm-config` cannot be found in $with_llvm_path])
fi
LLVM_VERSION=`$LLVM_CONFIG --version`
Expand All @@ -65,25 +65,33 @@ AC_DEFUN([AX_LLVM],
LLVM_VERSION_MINOR=`echo $LLVM_VERSION |cut -d'.' -f2`
AC_DEFINE_UNQUOTED([LLVM_VERSION_MINOR], [$LLVM_VERSION_MINOR], [The llvm minor version])
if test -n "$1"; then
AC_MSG_CHECKING([for LLVM version])
AC_MSG_RESULT([$LLVM_VERSION])
AX_COMPARE_VERSION([$LLVM_VERSION],[ge],[$1],
[],
[
AC_MSG_ERROR(
[LLVM version $1 is required])
])
fi
AC_MSG_CHECKING([for LLVM version])
AC_MSG_RESULT([$LLVM_VERSION])
AX_COMPARE_VERSION([$LLVM_VERSION],[ge],[$1],
[],
[
AC_MSG_ERROR(
[At least LLVM version $1 is required])
])
AX_COMPARE_VERSION([$LLVM_VERSION],[le],[$2],
[],
[
AC_MSG_ERROR(
[LLVM version up to $2 is supported])
])
LLVM_BINDIR=`$LLVM_CONFIG --bindir`
AC_DEFINE_UNQUOTED([LLVM_BINDIR], ["$LLVM_BINDIR"], [The llvm bin dir])
LLVM_CPPFLAGS=`$LLVM_CONFIG --cxxflags`
LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
LLVM_LIBS=`$LLVM_CONFIG --libs $2`
if test "$LLVM_VERSION_MINOR" = 5; then
LLVM_LDFLAGS=`$LLVM_CONFIG --system-libs`
else
LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
fi
LLVM_LIBS=`$LLVM_CONFIG --libs $3`
LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
# The output of `llvm-config --ldflags' often contains library directives
# The output of `llvm-config --system-libs/--ldflags' often contains library directives
# that must come *after* all the LLVM libraries on the link line: e.g.,
# "-lpthread -lffi -ldl -lm". To ensure this, we insert LLVM_LDFLAGS into
# LIBS, *not* into LDFLAGS.
Expand All @@ -98,7 +106,7 @@ AC_DEFUN([AX_LLVM],
LIBS="$LIBS $LLVM_LIBS $LLVM_LDFLAGS"
# LIBS="$LIBS $LLVM_LIBS" --- see comment above.
AC_CACHE_CHECK(can compile with and link with LLVM([$2]),
AC_CACHE_CHECK(can compile with and link with LLVM([$3]),
ax_cv_llvm,
[
AC_LANG_PUSH([C++])
Expand All @@ -112,7 +120,6 @@ llvm::Module *M = new llvm::Module("test", context);]])],
ax_cv_llvm=no)
AC_LANG_POP([C++])
])
CPPFLAGS="$CPPFLAGS_SAVED"
LDFLAGS="$LDFLAGS_SAVED"
LIBS="$LIBS_SAVED"
Expand Down
Loading

0 comments on commit 4967e2e

Please sign in to comment.