Perfromance on AMD vs SPARC


we are seeing big differences when running ROOT file creation on a AMD based CPU compared with a SPARC CPU (AMD 10 times faster than SPARC). After some investigations we found that the major contribution for this difference is caused by the compression of the branches (which we need to do and that gives us a compression factor around 30).
So our first idea is that this might arise from the fact that we did not apply the proper architecture dependent flags for building ROOT on the SPARC machines (yes we did compile it our self, since we are running a multiprocessor UltraSPARC IV machine under Solaris 10).

Are there some general pointers available how to deal with use of built in zlib and or use of CPU architecture dependent flags?

Some details about the hardware, compilation:

CPU: UltraSPARC IV 1.2 GHz
ROOT version 5.06.00
Used architecture: solarisCC

CPU: AMD Opteron™ Processor 250 2.4 GHz
ROOT version 5.13.04
Used architecture: linuxx8664gcc

Any help insides are very welcome, since we otherwise need to do some tests benchmarking our self (which can be a lengthy story)!

Hi Raimund,

The default compression algorithm has changed between versions 5.06 and version 5.13. The new compression algorithm (zlib) in $ROOTSYS/zip directory
is in general faster (in particular if you have funny patterns generating huge compression factors like in your case). The new algorithm may also be slower than the old one (eg if you compress an array of random floats).
To check this, you can force the old compression algorithm with version 5.13
by setting the ZipMode to 0 in $ROOTSYS/etc/system.rootrc.
Look for the following lines

[code]# Select the compression algorithm (0=old zlib, 1=new zlib)

Note, setting this to `0’ may be a security vulnerability.

Root.ZipMode: 1


Hi Rene,

we did this test but found nearly no difference switching between both algorithms on root files created with the old algorithm.

Anyhow am I still puzzled about when which libz is used…
Does --disable-builtin-zlib mean: Use system libz - and if so why do I see that a ldd on the root binary shows me that it is linked against /usr/lib/

I’m confused here - In general I would expect the following:

  1. If root is compiled with --disable-builtin-zlib flag, it uses the system one
    1.1 If unoptimized version found first in LD_LIBRARY_PATH it will run the non processor optimized version (->slower)

  2. If root compiled without --disable-builtin-zlib it will use ROOT’s internal libz and speed will depend on general optimization flags used when compiling ROOT itself?

But the above statements judging on what I see on our systems seams not to hold true!
I see on Solaris compiled without any flags:
-ldd root gives /usr/lib/
On Linux compiled using --disable-builtin-zlib:
-ldd root gives no link to libz at all

Can you help me out of me confusion here - please?!