-
Notifications
You must be signed in to change notification settings - Fork 202
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
add toolchain definition for Fujitsu ARM toolchain #3677
Conversation
a14c060
to
648363c
Compare
@boegel see easybuilders/easybuild-easyconfigs#12863 (comment) about the hierarchy and the naming of basically, this will be the toolchain used for most of what's in both |
I replied in that issue, but to be clear: the |
'openmp': 'Kopenmp', | ||
'unroll': 'funroll-loops', | ||
'strict': ['Kfp_precision'], | ||
'precise': ['Kfp_precision'], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apparently -Kfp_precision
doesn't work in clang mode, closest we can get seems to be -Knoeval,nofast_matmul,nofp_contract,nofp_relaxed,noilfunc
(and at least the tests that require precise
in GMP
do pass with these flags)
"""Setting FujitsuSSL specific SCALAPACK related variables""" | ||
super(FujitsuSSL, self)._set_scalapack_variables() | ||
for flags_var, _ in COMPILER_FLAGS: | ||
self.variables.nappend(flags_var, ['SCALAPACK']) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-SSL2
/-SSL2BLAMP
and -SCALAPACK
are only meant to be used when linking and generate a warning on compiling that is harmless but pollutes the logs
easybuild prepends -L
to variables appended to LDFLAGS
, so some refactoring seems to be necessary (?) in order to do this properly (is it worth it?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@migueldiascosta If you think it's important enough, please open an issue to follow up on this.
|
||
# enable clang compatibility mode | ||
self.variables.nappend('CFLAGS', ['Nclang']) | ||
self.variables.nappend('CXXFLAGS', ['Nclang']) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
turns out having -Nclang
only in these flags messes up with configure scripts that probe for the compiler without them, and so detect the traditional mode instead (hitting this with the libffi
included in _ctypes
in Python 2.7.18
)
one solution that seems to work is to move them to COMPILER_CC
and COMPILER_CCX
above (but I think then it's crucial to always enclose $CC
etc. in double quotes, since they will include a space?)
'defaultprec': [], | ||
'loose': ['Kfp_relaxed'], | ||
'veryloose': ['Kfp_relaxed'], | ||
'vectorize': {False: 'KNOSVE', True: 'KSVE'}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same as above, these don't seem to work in clang mode... SVE
is set by default, so the alternative seems to be -Knosimd
to disable...
@boegel well, besides the name there is also the hierarchy, the reason I used only two levels is that the module provides compiler, mpi and linalg; but even though they are there, easybuild doesn't have to enable all at once, e.g. we can have an additional non-mpi level "below" |
DEFAULT_OPT_LEVEL: 'O2 -Kfast', | ||
'lowopt': 'O1', | ||
'noopt': 'O0', | ||
'opt': 'O3 -Kfast', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-Kfast
is actually -O3
plus a bunch of other stuff, so planning to play it safe and change to:
DEFAULT_OPT_LEVEL: 'O2',
'opt': 'Kfast',
In addition to the possibility of using 'opt': True
in easyconfigs, -Kfast
will be explicitly enabled in some easyblocks, e.g. fftw, berkeleygw (, fortranpythonpackage?)
…om ffmpi to Fujitsu full toolchain
this does seem clearer (and cleaner), done in migueldiascosta@c095190 (at the time of writing, the commit doesn't show up in this PR, did I mess up or is GitHub acting up? will check back later) |
@migueldiascosta I'll assume this is fully functional in the current state (can't check myself, because I don't have access to Fugaku), so I'll go ahead and merge this, mostly because I want to ensure that the changes to Follow-up PRs to fix specific issues are welcome, of course! :) |
being tested at Fugaku