Libacovea

From CBLFS
Jump to navigationJump to search
Download Source: http://www.coyotegulch.com/distfiles/libacovea-5.1.1.tar.gz

Introduction to Libacovea

ACOVEA (Analysis of Compiler Options via Evolutionary Algorithm) is a benchmarking utility that uses a genetic algorithm to find the "best" options for compiling C/C++ programs with GCC. These "best" flag combinations are machine-specific.

Project Homepage: http://www.coyotegulch.com/products/acovea/index.html

Dependencies

Required

Optional

Non-Multilib

Compile the package:

./configure --prefix=/usr &&
make

If you have Doxygen installed, build the documentation:

make docs

Install the package:

make install

Multilib

32Bit

Compile the package:

CC="gcc ${BUILD32}" CXX="g++ ${BUILD32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" \
./configure --prefix=/usr &&
make

If you have Doxygen installed, build the documentation:

make docs

Install the package:

make install

N32

Compile the package:

CC="gcc ${BUILDN32}" CXX="g++ ${BUILDN32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATHN32}" \
./configure --prefix=/usr --libdir=/usr/lib32 &&
make

If you have Doxygen installed, build the documentation:

make docs

Install the package:

make install

64Bit

Compile the package:

CC="gcc ${BUILD64}" CXX="g++ ${BUILD64}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" \
./configure --prefix=/usr --libdir=/usr/lib64 &&
make

If you have Doxygen installed, build the documentation:

make docs

Install the package:

make install

Configuring

There are example XML files created in /usr/share/libacovea/config that provide different combinations of flags for different GCC versions and different processors. Copy one of these and edit for your machine and GCC version. This configuration file is passed as an argument to runacovea along with the C/C++ program being benchmarked.

Benchmarking programs are provided in /usr/share/libacovea/benchmarks. Acovea is not intended to use large applications, so don't try to benchmark using Gtk+! Each of the benchmarks could be executed for a given configuration with the following script:

#!/bin/sh
BENCHES="alma evo fft huff lin mat1 tree"
CONFIGS="g++33_pentium4"

for config in $CONFIGS; do
  for bench in $BENCHES; do
    echo ""
    echo "*** $bench ***"
    time runacovea -config /usr/share/libacovea/config/${config}.acovea -input \
    /usr/share/libacovea/benchmarks/${bench}bench.c 1> ${bench}_${config}.run 2> ${bench}_${config}.err
  done
done

It will take quite awhile to execute every combination. For example, 20 iterations of the fftbench required 1 hour and 40 minutes on an machine with an AMD64 X2 5600+ processor and 2GB of 533MHz DDR2 RAM.

Contents

Installed Directories: /share/libacovea/benchmarks, /share/libacovea/config
Installed Programs: None
Installed Libraries: libcyotl.{a,la,so}

Short Descriptions

runacovea is a program to investigate the "best" GCC complier options for your machine.
libacovea is the library containing the evolutionary algorithm functions.