-
Notifications
You must be signed in to change notification settings - Fork 19
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
Parallel compilation #38
Comments
Thanks for your comments. As I am sure you aware, parallel compilation of libraries of modern Fortran modules is dangerous, since the module structure requires a strict ordering. We do not recommend the -j option for make for any fortran-based system. We are aware of the issue, and we are currently moving the build system away from make to meson, which is aware of such ordering issues. Nick
Sent from Outlook for Android<https://aka.ms/AAb9ysg>
…________________________________
From: Christoph Hansknecht ***@***.***>
Sent: Sunday, October 22, 2023 7:42:30 PM
To: ralna/CUTEst ***@***.***>
Cc: Subscribed ***@***.***>
Subject: [ralna/CUTEst] Parllel compilation (Issue #38)
I noticed after some debugging that the standard command
$ARCHDEFS/install_optrove
uses make internally to compile libcutest.a. Unfortunately, the compilation rule<https://github.com/ralna/CUTEst/blob/master/src/tools/makemaster#L191-L276> uses commands modifying the file libcutest.a in place. The compilation therefore breaks whenever multiple threads are used (i.e., using make -j<n> or by having MAKEFLAGS="-j<n>" set in the environment).
Since the behavior is unpredictable and errors of the form
/usr/bin/ar: /cutest/cutest/objects/pc64.lnx.gfo/double/libcutest.a: error reading cutest.o: file truncated
/usr/bin/ar: /cutest/cutest/objects/pc64.lnx.gfo/double/libcutest.a: malformed archive
are not caught, the compilation can silently fail. I think it would be a good idea to put a warning in the wiki to.
—
Reply to this email directly, view it on GitHub<#38>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ACW4A6VMJ2PQWW3G2EAIXCTYAVSJNAVCNFSM6AAAAAA6LCSJGOVHI2DSMVQWIX3LMV43ASLTON2WKOZRHE2TMMBRGAZDCNI>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
@chrhansk meson setup builddir
meson compile -C builddir
meson install -C builddir It compiles |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I noticed after some debugging that the standard command
uses
make
internally to compilelibcutest.a
. Unfortunately, the compilation rule uses commands modifying the filelibcutest.a
in place. The compilation therefore breaks whenever multiple threads are used (i.e., usingmake -j<n>
or by havingMAKEFLAGS="-j<n>"
set in the environment).Since the behavior is unpredictable and errors of the form
are not caught, the compilation can silently fail. I think it would be a good idea to put a warning in the wiki to.
The text was updated successfully, but these errors were encountered: