Hi Markus,
On 22/10/16 14:29, Markus Geimer wrote:
Hi Kenneth,
I noticed that some easyconfigs (e.g., ncurses) specify
toolchainopts = {'optarch': True}
This makes me wonder about three things. First, I was under
the impression that 'optarch = True' was the default, i.e.,
isn't the above setting in the easyconfig redundant?
Yes, it is indeed redundant, the 'optarch' toolchain option is enabled
by default.
OK, so these are probably copy/pasted leftovers from times where
'optarch' was not yet the default, right?
Indeed, there's no point in adding this at all...
Maybe a clean sweep to remove this from all easyconfigs in the repo is
worthwhile here?
Second,
does it play nicely with '--optarch=foo' or '--optarch=GENERIC'?
Which setting takes precedence?
I think it does what you'd expect. They work together, one doesn't take
precedence over the other, because they have different semantics.
The 'optarch' toolchain option specifies that the use of
architecture-specific optimization flags should be used (and it's
enabled by default).
This leads to using -xHost for the Intel compilers in $CFLAGS & co, for
example.
If is set to False, the architecture-specific optimization flags will
not be included in $CFLAGS.
The --optarch configuration option allows you to control *what*
architecture-specific optimization flags are, so you can override the
default.
This is described in detail at
http://easybuild.readthedocs.io/en/latest/Controlling_compiler_optimization_flags.html
Got it -- and it now makes sense. I believe what confused me most
was the fact that there are multiple options with the same name but
different semantics.
Yeah, I see where the confusion comes from...
But the 'optarch' toolchain option and --optarch configuration setting
are very related though, so it made sense to use the same name.
Maybe we should add a clarifying note that explains the difference
between both at
http://easybuild.readthedocs.io/en/latest/Controlling_compiler_optimization_flags.html
?
Does that answer your questions?
Yes.
Do you feel any enhancements need to be made to the documentation to
clarify things?
I couldn't find any description of the available toolchainopts in the
docs. Especially knowing about things like 'pic' or how to generically
enable C++11 support are valuable at times.
Well, there's the (auto-generated) page here:
http://easybuild.readthedocs.io/en/latest/version-specific/toolchain_opts.html
.
That's just rechewing the output of "eb --avail-toolchain-opts intel"
though...
Is that what you were looking for?
W.r.t. docs: [1] has an unresolved reference to 'toolchain_table' and
[2] lists "current values", but especially for GCC, they are only valid
for X86_64.
Thanks for bringing that up, fixed in
https://github.com/hpcugent/easybuild/pull/266 .
regards,
Kenneth
Markus
[1]
http://easybuild.readthedocs.io/en/latest/Writing_easyconfig_files.html#mandatory-easyconfig-parameters
[2]
http://easybuild.readthedocs.io/en/latest/Controlling_compiler_optimization_flags.html#optimizing-for-a-generic-processor-architecture-via-optarch-generic
--
Dr. Markus Geimer
Juelich Supercomputing Centre
Institute for Advanced Simulation
Forschungszentrum Juelich GmbH
52425 Juelich, Germany
Phone: +49-2461-61-1773
Fax: +49-2461-61-6656
E-Mail: [email protected]
WWW: http://www.fz-juelich.de/jsc
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------