Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
JacekHoleczek opened this issue Jan 8, 2020 · 1 comment

Comments

@JacekHoleczek
Copy link

JacekHoleczek commented Jan 8, 2020

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.

@JacekHoleczek JacekHoleczek changed the title experience with building the current QcdLoop git master (2.0.4) experience with building the current QCDLoop git master (2.0.4) Jan 9, 2020
@JacekHoleczek JacekHoleczek changed the title experience with building the current QCDLoop git master (2.0.4) experience with building the current QCDLoop git master (2.0.4 as of 2020.01.07 20:27 UTC) Jan 9, 2020
@scarrazza
Copy link
Owner

Thanks for opening this issue. Concerning the compiler issues, that's correct, the library supports g++ >= 5.
Concerning the correctness of the results, both version are acceptable, I believe the main different are the overloading operators for complex/qcomplex numbers implemented in gcc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants