120 likes | 299 Views
AliRoot r econstruction: tests with icc , gcc 4.8 and VDT. P. Hristov 08 /04/ 2013. Test machine. SLC6: 4 core HP, 4Gb RAM, 8Gb swap, 1130 Rootmarks default compiler gcc 4.4.7 icc 13.1.0 from AFS: source / afs/cern.ch/sw/IntelSoftware/linux/all- setup.sh gcc 4.8.0 from AFS:
E N D
AliRoot reconstruction: tests with icc, gcc 4.8 and VDT P. Hristov 08/04/2013
Test machine • SLC6: 4 core HP, 4Gb RAM, 8Gb swap, 1130 Rootmarks • default compiler gcc 4.4.7 • icc13.1.0 from AFS: source /afs/cern.ch/sw/IntelSoftware/linux/all-setup.sh • gcc4.8.0 from AFS: source /afs/cern.ch/sw/lcg/external/gcc/4.8.0/x86_64-slc6/setup.sh
Using icc • Root platform: linuxx8664icc • Fixes in etc/vmc/Makefile.linuxx8664icc to compile and run the simulation • Fix in geant3/Makefile (adding ishftr.c for liunxx8664icc) • New cmake/CMakelinuxx8664icc.cmake in AliRoot • Fix in LHAPDF/CMakeliblhapdf.pkg (platform) • Fix in MICROCERN/CMakelibmicrocern.pkg (corrected EINCLUDE) • Switch off the FPE trapping in ALIROOT/fpe.c • These changes still have to be committed
Using VDT library • What is VDT? vectorised math • A collection of fast implementations of mathematical functions. • Double and single precision implementations are available. • No overhead present, no intrinsics used. • A scalar (T(T)) and array signature (void(const unsigned int,T*,T*)) are provided. • Starting from GCC 4.7.0, the array signatures autovectorise for a even higher speed of execution! • Much of the VDT code is inspired by the well known Cephes mathematical library.
VDT references • Presentation of D. Piparo • https://svnweb.cern.ch/trac/vdt • http://svnweb.cern.ch/world/wsvn/vdt • Padé approximant
VDT test: some details • Very first attempt on Ubuntu 12.04, clang 3.2 • compilation with –O –g (Root, AliRoot) • Replacing sin, cos, tan, atan, atan2 by vdt::fast_sin,cos,tan,atan, atan2 in TMath.h • In a second test the same for log and exp • Linking with libvdt.so • Reconstruction of the same raw file (single user mode) with 270 PbPb events
Issues • Floating point exceptions, i.e. division by zero in vdt::fast_tan(0) • FPE trapping switched off • The issue is fixed in the VDT trunk • The results are affected by the problem #101121: Fix for not initialized pointers in AliHLTHOMERLibManager
Results • Integrated gain of ~20% with VDT when the trigonometric functions are replaced • Small gain ~1% from exp, log
Black: no VDT Red: VDT trigonometric functions Green: VDT log and exp
To Do • Redo the VDT test with fixed AliHLTHOMERLibManager (to get back the TPC reco) • Compare the results of different reconstructions • Estimate the gain in MC • Compare the resolutions, efficiencies and fake ratesinMC (the same input kinematics tree) • Decide the best way to use VDT