Hard Core gentoo (site by X-Ryl669)
Main menu:
How to apply
Save a result
Show results
Latest news
Bug report

Thanks for:
Gentoo's pictures
X-Ryl669's icons & PHP
CocoonMs for webdesign
All Gentoo users for their
contributions

What is acovea / dacovea ?
Acovea is to compilers
what struggle for life
is to genetics, it
selects CFLAGS (genes)
from a given pool and
only the best one are
surviving after some
tests.

Dacovea then distributes
testing other different
systems


So, you're ready to contribute.

Please note that this is still a beta-test. (Don't except the application to work perfectly for now).

Before starting downloading our scripts, and wasting CPU power to fit the cflags, please read the paragraphs below:

  • For the moment, only lame is being tested (beta-test), so don't choose other software, it will not work
  • If you have a processor that differs from Pentium4, you will have to write (in fact modify) the cflag pool file.
  • This test requires Python. If you don't have it, sorry it will not work.

Still there ?

Let's start explaining what is done by these scripts.
You're going to download a script that will download all others. This script is called "cflagselect.py" and it is the only script that you will need to launch.
See below for the correct way to download and execute this script

This script will download the main functions that are in a script called "InOut.py", then it will execute some tests before starting fitting your CFLAGS.
It will try to detect your hardware (Processor type, speed, bus speed, motherboard, memory, graphic card and graphic card memory)
Then it will ask you if you want to save this detection in "/etc/hardware.conf". We highly encourage you to save this detection in this file
and modify it if any parameter are incorrect (mainly the Front Side Bus speed (BUSSPEED) is probably wrong). Once this file is saved,
the script will never detect the hardware again.

Then the script will detect the compiler, the timer version, and the dacovea version. If dacovea is not found, it will download it, compile it, and install it.
Please note that dacovea is not compatible with acovea. If you have acovea installed, you must remove it from your system, or else dacovea won't build.

After that, the script will download the list of "available software to test" from our server. This list will be stored in a file called "/tmp/.tslist".
Please do not modify this file, as the script will use it to continue. The script will then ask you "what software do you want to optimize today ?(R)"
If the script is interrupted from this point, the next time you launch it, you will be able to overcome those questions by passing the name of the software
to the script, for example "cflagselect.py lame" to optimize lame cflags.

Finaly, the script will download the lame package, and use dacovea on it to find the best cflags, and then transmit its results. If you interrupt
the script while dacovea is running, you will be able to restart from the previous generation (dacovea will split its tests in 4 generations) by
simply relaunching the script again. Note that if dacovea doesn't pass a new generation between each launch, you will never finish the tests.

That's all (but it will be long). When the results are transmitted, except 24 hours for us to verify them before including them in the database.

You said that I had to write a cflag pool file (or dacovea doesn't start)

This is now optionnal. However, you can now check in the file "/tmp/ts/gccXX_processor.dacovea"
(with XX being your compiler version), if the correct architecture is selected. If not, please send a bug report by clicking on this link. Please copy the /etc/hardware.conf file into it.
If you feel adventurous, you can try to write this file be your own, it is very easy, simply open the file called "gcc33_pentium4.dacovea" that should reside in
"dacovea-1.0/acovea-4.0.0/config/" from the directory you started the script first. Modify the architecture type from the 5th line to fit yours
so, for example, if you have a 486, the line should become

<command value="-O3|-march=486|-ffast-math" />

instead of

<command value="-O3|-march=pentium4|-ffast-math" />

You can put any cflag you want in this line, but take care that those flags will never be removed from any compiler command so if the software works better without, you will never know
Then, save this file in your path, or here, as "processor.dacovea" (processor should stay processor and not be replaced). You've done it

It works well (It doesn't work), so what can I do to help ?

First, we need people to write test script (those kind of scripts that are run and return a value meaning their execution time
or anything related to their performance). If you feel adventurous, please have a look to /tmp/ts/testlame file, you will see it's very simple
Most of the time, you will just need to modify the 3 first lines and you will be done.
When you're done, please send us a report here, we will contact you.
Then, if it doesn't work, you can give us some feedback by completing a bug report at this page : Found a bug ?

I've read all of this, and I want to share my result

So, download this file, and start optimizing Save me as cflagselect.py Please save this file in a place you will remember, and then set its execute flag ("chmod +x cflagselect.py").
Then execute it as root. The whole process can be achieved by typing those lines :

Please type these commands to start testing now:
    YourPrompt# cd ~
    YourPrompt# mkdir HCG && cd HCG
    YourPrompt# su -
    Password: Please enter root password here
    YourPrompt$ wget http://hardcoregentoo.free.fr/BS/cflagselect.py
    YourPrompt$ chmod +x cflagselect.py
    YourPrompt$ ./cflagselect.py

Frequently Asked Questions (FAQ)

The script doesn't execute
Be sure to chmod +x it before running it. You must have python 2.2 or more installed in your system.

The script executes but Dacovea doesn't compile
You must remove any acovea version from your system. Dacovea is a fork from acovea and uses some
modified libraries called the same way. If acovea is installed in your system in /usr, then those librairies will be
used instead of the new ones. (This is because Dacovea installs its librairies in /usr/local, and /usr is before
/usr/local in most UNIX path).

Everything seems to work but I get strange errors in the process
When the test is running, some errors are shown but are NOT DANGEROUS. Dacovea detect them, and is able to deal with.
Dacovea will create a CFLAG vector called chromosome. This vector is not made smartly, so some CFLAG
which shouldn't be called together are here. This leads to COMPILE FAILED. Do not report any bug report while
dacovea is running, (it's acovea role, not dacovea).

If a chromosome leads to a compiled binary that doesn't execute, or segfaults, Dacovea will detect this
and will display SHORT RUN TIME ERROR. (Just like a genetic illness)

In both case dacovea will reject this chromosome, so you should not be afraid.

At the end of the process, (after testing), the script stops with this error :
[HCG] Cannot detect the processor...

This is typically a case where you should send us a bug report, including your /etc/hardware.conf file.
Because there is no way to detect surely all the kind of processor available here, the script try to understand your
processor type given its name. Most of time it works. But sometimes it does not.


To help us maintain this website :
Page seen : times