Warning

With setiathome_enhanced getting mainstream, this page is becoming more and more obsolete.

Some optimized Boinc and SETI/boinc binaries for Linux

Disclaimer

Can't do without it these days, so here it goes:

These binaries are provided as is. No guarantees about proper operation can be given. Only you will be to blame if binaries cash your computer, damage data or hardware, kick your dog or insult your mother.

I did some limited testing of binaries below and they do work for me, both correctly and faster than corresponding original binaries. The binaries may or may not run on particular CPU. Before dropping-in selected binary in place of official one, you might want to test them for correct operation.

You might ask yourself: how do I use this stuff?

There are two answers.

For the boinc CC binary it's simple: it's a drop-in replacement for the official CC binary. If you want to use also BOINC manager, you have to get it elsewhere. My suggestion is to get official BOINC from Berkeley, preferrably the same version as my optimized CC. Install it, run it, configure it, verify it. When everything runs smoothly with official BOINC CC, get the optimized client binary and replace the official one with it. Preferrably save the official binary ... you know, just in case.

For the SETI/boinc binaries it's a bit more complicated. See anonymous platform documentation for more information. Note that app_info.xml file must be placed in the very same directory as SETI/boinc binary.

Note for proud AMD processor owners

The binaries available from this page are optimized for Intel processors. They do offer some gain also for AMD processors. But you really want to have a look at Ned Slider's pages.
Contents of sections Verification and Miscelaneous are still valid and worth to read.

Contents

Basic info
BOINC CC v5.2.13 binaries
SETI/boinc binaries
Verification
Miscelaneous
Some benchmarks - BOINC CC
Some times - Seti

Basic info

Here you can download some Boinc and SETI/boinc binaries for Linux. Common characteristics of all binaries include:

MD5 sums of most of the files available for download are gathered in file md5sum.

BOINC CC v5.2.13 binaries

Description ICC compiler switches binary
Generic binary. Optimized for P4 but without any CPU-specific code. Martin A. Boegelund reported that version 5.2.7 runs on a venerable i486. As this one is built using exactly the same compiler switches it should behave just the same. -O3 -static -mcpu=pentium4 -ipo -ipo_obj boinc_5.2.13-i686-pc-linux-gnu
Binary optimized for P4, including some P4-specific code, but without SSE-3 or similarly advanced P4 code. Won't run on P3 or older. It might run on AMD processors if they support SSE2 instruction set. -fast -mcpu=pentium4 -march=pentium4 -ipo -ipo_obj boinc_5.2.13-i686-p4-linux-gnu

Note that there isn't a P2 or P3-optimized client available. I've built one, but tests on my P3 machines revealed that the client is only marginally faster than a generic one. Thus, use that one.

SETI/boinc binaries

Description ICC compiler switches binary
Generic binary that uses IPP routines. Optimized for P4, but doesn't use any fancy instructions. It should run on any processor that supports MMX (including AMD processors). Feedback about (un)supported platforms would be welcome. -O3 -static -mcpu=pentium4 -ipo -ipo_obj setiathome-4.07-ipp.i686-pc-linux-gnu
Binary that uses IPP routines. Optimized for P3 and won't run on anything older. I don't see any reason why it shouldn't run on recent AMD Athlon CPUs, but feedback is welcome. -fast -mcpu=pentiumpro -march=pentiumiii -ipo -ipo_obj setiathome-4.07-ipp.i686-p3-linux-gnu
Binary that uses IPP routines. Optimized for P4 and won't run on anything older. Doesn't use SSE3. -fast -mcpu=pentium4 -march=pentium4 -ipo -ipo_obj setiathome-4.07-ipp.i686-p4-linux-gnu

Verification

It's quite important to verify proper execution of chosen binary. In my opinion, the way to do it is to crunch some WU with known good result. Luckily project developers provided us one and is included in source code tree. You don't have to download whole source code just to verify execution of custom binaries. Instead follow these two links to get needed files:

After you download selected SETI/boinc cruncher and the two files above, create a new directory and put all three files in it. Then rename reference work unit to work_unit.sah and set executable bit for cruncher binary.
Now you can run the cruncher binary like this:

    ./setiathome-4.07.i686-pc-linux-gnu
You have to adjust the command above to meet the name of binary you chose to run.

A side effect of running the command above is that you get the CPU time needed for crunching the reference WU. It is stored in init_data.xml, field <wu_cpu_time>. If you choose to run cruncher app more than once, be sure to zero this number (CPU time is being added to this number). Also be sure to let crunching finish in one run or else information about CPU time spent will be wrong.

After the binary finishes, you may want to check the result for correctness. To do that, just check the differences between reference_result_unit.sah you downloaded above and result.sah produced by cruncher binary. For sure there will be some differences, but they should not exceed these limits.

Miscelaneous

Some benchmarks - BOINC CC

Here are some benchmark results of BOINC CC. These results directly affect the amount of credits requested (the amount of credits granted is not directly connected to it). The higher benchmark results, the higer amount of requested credits.

All benchmarks were run on otherwise idle machines.
All results are per CPU. This means higher host benchmark results in case of HT and/or SMP machines.

Client double precision (Whetstone) integer (Dhrystone)
MIPS speedup MIPS speedup
dual GenuineIntel Pentium III (Coppermine) 1GHz (0.18µm Coppermine), 256kB cache
official 4.27 690   1148  
official 5.2.4 489 -29 913 -20
generic 5.2.13 819 19% 1715 49%
GenuineIntel Intel(R) Pentium(R) III CPU family 1133MHz (0.13µm Tualatin), 512kB cache
official 4.27 824   1291  
official 5.2.4 564 -32 1013 -22
generic 5.2.13 920 12% 1912 48%
Crunch3r's 5.2.7_P3_SSE 1054 28% 1936 50%
GenuineIntel Intel(R) Pentium(R) 4 CPU 1.70GHz (0.18µm Willamette), 256kB cache
official 4.27 578   1421  
official 5.2.4 423 -27% 1171 -18%
generic 5.2.13 1143 98% 2270 60%
P4-optimized 5.2.13 1145 98% 2357 66%
dual GenuineIntel Intel(R) Xeon(TM) CPU 3.06GHz HT (0.13µm Prestonia), 512kB cache
official 4.27 788   1230  
official 5.2.4 522 -34% 1072 -13%
generic 5.2.13 1606 104% 2153 75%
P4-optimized 5.2.13 1613 105% 2061 68%
Crunch3r's 5.2.7_P4_SSE2 2179 177% 2211 80%

Some times - Seti

Here are some processing times of the SETI/boinc reference work unit. If anybody wants to share their timing, I'll include them here. Preferably accompanied with official cruncher run-times. For instructions about how to measure, see verification section. Note that all runs were done on otherwise busy machines, so I wouldn't bet on the acuracy of the numbers below.

A big thank you goes to FalconFly for contributing the AMD AthlonXP 2600+ and AMD Athlon64 3000+ timings.

ClientTime (user)Speed-up
dual GenuineIntel Pentium III (Coppermine) 1GHz (0.18µm Coppermine), 256kB cache
official 4.02 38485 s  
generic IPP 4.07 29064 s 32%
P3-optimized IPP 4.07 24661 s 56%
Ned's i686 4.07.3 24173 s 59%
setiathome_SSE_naparst-r3.4 4.07 17818 s 116%
Ned's P3 4.07.3a 22464 s 71%
GenuineIntel Intel(R) Pentium(R) III CPU family 1133MHz (0.13µm Tualatin), 512kB cache
official 4.02 21172 s  
generic IPP 4.07 17722 s 19%
P3-optimized IPP 4.07 15555 s 36%
setiathome_SSE_naparst-r3.4 4.07 8829 s 140%
Ned's i686 4.07.3 14787 s 43%
Ned's P3 4.07.3a 12843 s 65%
GenuineIntel Intel(R) Pentium(R) 4 CPU 1.70GHz (0.18µm Willamette), 256kB cache
official 4.02 25147 s  
generic IPP 4.07 19868 s 27%
P3-optimized IPP 4.07 18005 s 40%
P4-optimized IPP 4.07 11394 s 121%
setiathome_SSE_naparst-r3.4 4.07 10894 s 131%
setiathome_SSE2_naparst-r3.4 4.07 7686 s 227%
Ned's i686 4.07.3 17124 s 47%
dual GenuineIntel Intel(R) Xeon(TM) CPU 3.06GHz HT (0.13µm Prestonia), 512kB cache
official 4.02 12473 s  
generic IPP 4.07 11808 s 6%
P3-optimized IPP 4.07 9903 s 26%
P4-optimized IPP 4.07 6347 s 97%
setiathome_SSE_naparst-r3.4 4.07 6224 s 100%
setiathome_SSE2_naparst-r3.4 4.07 4563 s 173%
Ned's i686 4.07.3 8200 s 52%
GenuineIntel Intel(R) Pentium(R) 4 CPU 3.20GHz (0.09µm Prescott), 1024kB cache [1]
official 4.02 9245 s  
P3-optimized IPP 4.07 7193 s 29%
P4-optimized IPP 4.07 4742 s 95%
P4-optimized IPP with SSE3 4.07 4687 s 97%
Ned's i686 4.07.3 6744 s 37%
official windows 4.09 (native)[2] 9283 s 0%
official windows 4.09 (wine/linux)[2] 8925 s 4%
Tetsuji's windows 4.11 (native)[2] 4927 s 88%
Tetsuji's windows 4.11 YAOSCW-P-r7 (native)[2] 4724 s 96%
AMD AthlonXP 2600+ (2083MHz Thoroughbred), 256k cache
official 4.02 12903 s  
generic FFTW 4.07 10566 s 22%
P2-optimized FFTW 4.07 10367 s 25%
P4-optimized FFTW 4.07 failed
Ned's Athlon-XP 4.07.3 8305 s 55%
Ned's Athlon-XP 4.07.3b 7763 s 66%
AMD Athlon64 3000+ (2000MHz Newcastle Socket 745), 512k cache
official 4.02 10591 s  
generic FFTW 4.07 8888 s 19%
P2-optimized FFTW 4.07 8633 s 23%
P4-optimized FFTW 4.07 7666 s 38%
Ned's i686 4.07.2 8163 s 30%
Ned's Athlon-XP 4.07.3 6574 s 61%
Ned's AMD64 4.07.3a 6180 s 71%
Comments:
  1. This is a dual-boot machine, so the times are pretty much directly comparable between Linux and Windows crunchers.
    This machine has a HT enabled CPU. During tests HT was disabled though. Tests were (unlike all the rest) run on otherwise idle machine.
    Interesting enough is that CPU times don't differ very much regardless of HT setting (enabled or disabled) when machine is idle otherwise.
  2. I minimized graphics window (which pops-up upon start of setiathome cruncher app). This way it is supposed to skip all graphics-specific code and only spend CPU cycles on scientific work.

The portion of CPU description that is written in italic is taken from Your computers page of setiweb. It depends on the version of BOINC CC you're running, I'm running 4.27.