-
Notifications
You must be signed in to change notification settings - Fork 8
Description
I tried to build the current QCDLoop git master (2.0.4 as of 2020.01.07 20:27 UTC) on three different machines.
On a Ubuntu 14.04 / x86_64 with g++ 4.8.4, I needed to apply one of:
sed -i -e 's/-fstack-protector-strong/-fstack-protector-all/' CMakeLists.txt
sed -i -e 's/-fstack-protector-strong/-fstack-protector/' CMakeLists.txtOn a CentOS 7 / x86_64 with g++ 4.8.5, I needed to apply:
sed -i -e 's#/usr/lib/gcc/x86_64-linux-gnu/\*#& /usr/lib/gcc/x86_64-redhat-linux/\*#' CMakeLists.txtMaybe you could add the "/usr/lib/gcc/x86_64-redhat-linux/*" entry to the "PATHS" in the "QUADMATH_LIBRARY" search (in "CMakeLists.txt").
On both above machines, I also needed to apply:
sed -i -e 's/-march=nocona/-march=native/' CMakeLists.txt
sed -i -e 's/-mtune=haswell/-mtune=native/' CMakeLists.txtNo fixes were needed on a Ubuntu 18.04 / x86_64 with g++ 7.4.0.
On all three systems, I used "-DENABLE_FORTRAN_WRAPPER=ON -DENABLE_EXAMPLES=ON" and the available "examples/fortran_test.f" was NOT compiled (only the "examples/*.cc" were compiled).
Maybe you could add building of this Fortran example (when "-DENABLE_FORTRAN_WRAPPER=ON").
While comparing the outputs of all examples, I noticed three differences which seem to be related to the compiler versions.
In the output from "cmass_test", g++ 4.8.4 and g++ 4.8.5 give:
====== Direct Tadpole Integral - complex masses ======
(...)
eps0 (2.25909294845120189876297445152886e+00,0.00000000000000000000000000000000e+00)
while g++ 7.4.0 and g++ 8.3.0 give:
====== Direct Tadpole Integral - complex masses ======
(...)
eps0 (2.25909294845120234285218430159148e+00,0.00000000000000000000000000000000e+00)
In the output from "trigger_test", g++ 4.8.4 and g++ 4.8.5 give:
====== Direct Triangle Integral ======
(...)
eps0 (-1.89593062676125773124979900785547e-01,2.93737402297610280763816206634375e-16)
(...)
====== Auto-Trigger Triangle ======
(...)
eps0 (-1.89593062676125773124979900785547e-01,2.93737402297610280763816206634375e-16)
while g++ 7.4.0 and g++ 8.3.0 give:
====== Direct Triangle Integral ======
(...)
eps0 (-1.89593062676125606591526207012066e-01,3.14718645318868140352729301282103e-16)
(...)
====== Auto-Trigger Triangle ======
(...)
eps0 (-1.89593062676125606591526207012066e-01,3.14718645318868140352729301282103e-16)
The outputs from g++ 7.4.0 and g++ 8.3.0 (these are two different machines with different CPUs) are exactly the same for "-march=nocona -mtune=haswell" and "-march=native -mtune=native" (only the latter can be used for g++ 4.8.4 and g++ 4.8.5). The same machine (and CPU) which runs g++ 4.8.5 runs also g++ 8.3.0.
I do not know which of these values are "correct" and which are not (note that the "real parts" of the above numbers agree up to some 16 decimal digits, so the standard C / C++ "double", while the non-zero "imaginary parts" agree only in the first most significant decimal digit).
Maybe you could add some text files with the expected output for all examples so that one could easily verify all obtained results.