Skip to content

experience with building the current QCDLoop git master (2.0.4 as of 2020.01.07 20:27 UTC) #8

@JacekHoleczek

Description

@JacekHoleczek

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.txt

On 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.txt

Maybe 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.txt

No 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions