𝕏

Posts by rjs5

21) Message boards : Number crunching : Optimized app ? (Message 640)
Posted 4 Nov 2015 by rjs5
Post:
The perf tool reports show that GCC spends a majority of time in the power and exponential functions. The icc version seems to be about 2x to 3x faster than the gcc versions when using the same (I think) standard libm libraries.


Some questions:
1) Intel icc is free? Can the project use this compiler?
2) Do you plan to release your app version, like Sefef/Chrun3er??
3) It's sse3, sse4.1 or avx app??
4) Have the same results in Windows?
5) Is this app compatible with Amd cpu??


1. I think the school sponsored project could use the icc compiler as an educational institution.
2. I am amazed that I was able to build something that will run. I will walk anyone who wants through the processing of duplicating it. I did not try the cruncher version. I would probably forward comments to Sefef/Chruncher rather than propagate yet another version.
3. I compiled with -O3. I think the icc default is sse2. I am not sure the full applications will see the same performance improvement.
4. I have only built the one Linux version.
5. It should have no problems on AMD CPU and like another comment, I will look at CLANG.
22) Message boards : Number crunching : Optimized app ? (Message 632)
Posted 3 Nov 2015 by rjs5
Post:
Denis performance seems to be strongly related to the compiler version and the way the compiler handles the math library.

I built Denis in a Ubuntu 14.04 virtualbox with two compilers. gcc v4.8.4 and Intel icc v16. I ran the current Denis 64-bit application, the recompiled gcc and icc versions.

The user time was 8.872s, 7.888s and 2.996s respectively on the VM running on my i7-5930K CPU.

The perf tool reports show that GCC spends a majority of time in the power and exponential functions. The icc version seems to be about 2x to 3x faster than the gcc versions when using the same (I think) standard libm libraries.

the gcc version seems to spend about 75% of its execution time in the power and exponential libm functions. The icc version seems to be able to eliminate most of that time.


time ./CRLP2011EPI_105_x86_64-pc-linux-gnu in

real 0m 10.958s
user 0m 8.872s
sys 0m 0.016s



rjs@rjs-VirtualBox:~/boinc/denis/denis-boinc-baseapp$ time ./denis.icc in

real 0m 5.583s
user 0m 2.996s
sys 0m 0.028s

rjs@rjs-VirtualBox:~/boinc/denis/denis-boinc-baseapp$ time ./denis.g++ in

real 0m 10.465s
user 0m 7.888s
sys 0m 0.020s



export BDIR=/home/rjs/boinc/source/boinc
export CC=icc
export CC=g++
OPT=" -g -O3 "
$CC $OPT app.cpp -I$BDIR -I$BDIR/api -I$BDIR/lib -lboinc -lboinc_api -o denis.$CC


rjs@rjs-VirtualBox:~/boinc/denis/denis-boinc-baseapp$ icc -v
icc version 16.0.0 (gcc version 4.8.0 compatibility)
rjs@rjs-VirtualBox:~/boinc/denis/denis-boinc-baseapp$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04'
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)


Perf from the icc run "denis.icc in"

41.38% denis.icc denis.icc [.] _Z12computeRatesdPdS_S_S_
37.36% denis.icc denis.icc [.] __libm_exp_e7
9.07% denis.icc denis.icc [.] __libm_pow_e7
4.91% denis.icc denis.icc [.] main
3.71% denis.icc denis.icc [.] __libm_log_e7
1.99% denis.icc denis.icc [.] exp
0.28% denis.icc denis.icc [.] boinc_time_to_checkpoint@plt


Perf from the g++ run "denis.g++ in"

31.43% denis.g++ libm-2.19.so [.] __ieee754_pow_sse2
30.57% denis.g++ libm-2.19.so [.] __ieee754_exp_sse2
15.96% denis.g++ libm-2.19.so [.] __exp1
9.97% denis.g++ denis.g++ [.] _Z12computeRatesdPdS_S_S_
3.62% denis.g++ libm-2.19.so [.] __ieee754_log_sse2
3.21% denis.g++ libm-2.19.so [.] __GI___exp
2.18% denis.g++ libm-2.19.so [.] __pow
1.34% denis.g++ denis.g++ [.] _Z10solveModeliPdS_S_S_6CONFIGRS_i
0.35% denis.g++ libm-2.19.so [.] @plt


ldd denis.icc
linux-vdso.so.1 => (0x00007fff7ffd6000)
libboinc.so.7 => /usr/lib/libboinc.so.7 (0x00007f4c7a288000)
libboinc_api.so.7 => /usr/lib/libboinc_api.so.7 (0x00007f4c7a068000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4c79d62000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4c79a5e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4c79848000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4c79483000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4c7927f000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4c79061000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4c7a4fd000)



ldd denis.g++
linux-vdso.so.1 => (0x00007ffc6f3bd000)
libboinc.so.7 => /usr/lib/libboinc.so.7 (0x00007fd8b6b09000)
libboinc_api.so.7 => /usr/lib/libboinc_api.so.7 (0x00007fd8b68e9000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd8b65e5000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd8b62df000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd8b60c9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd8b5d04000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd8b5ae6000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd8b6d7e000)


Previous 20