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

Print LmodError when loading GCCcore-12.2.0-based modules on zen4 #841

Draft
wants to merge 6 commits into
base: 2023.06-software.eessi.io
Choose a base branch
from
Draft
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions eb_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ def parse_hook(ec, *args, **kwargs):
if ec.name in PARSE_HOOKS:
PARSE_HOOKS[ec.name](ec, eprefix)

# Always trigger this one, regardless of ec.name
# TODO: limit to only zen4 in the future
parse_hook_zen4_module_only(ec, eprefix)

# inject the GPU property (if required)
ec = inject_gpu_property(ec)

Expand Down Expand Up @@ -353,6 +357,32 @@ def parse_hook_CP2K_remove_deps_for_aarch64(ec, *args, **kwargs):
raise EasyBuildError("CP2K-specific hook triggered for non-CP2K easyconfig?!")


def parse_hook_zen4_module_only(ec, eprefix):
"""
Use --force --module-only if building a foss-2022b-based EasyConfig for Zen4.
This toolchain will not be supported on Zen4, so we will generate a modulefile
and have it print an LmodError.
"""
ecname, ecversion = ec['name'], ec['version']
tcname, tcversion = ec['toolchain']['name'], ec['toolchain']['version']
if (
(tcname in ['foss', 'gompi'] and tcversion == '2022b') or
(tcname in ['GCC', 'GCCcore'] and LooseVersion(tcversion) == LooseVersion('12.2.0')) or
(ecname in ['foss', 'gompi'] and ecversion == '2022b') or
(ecname in ['GCC', 'GCCcore'] and LooseVersion(ecversion) == LooseVersion('12.2.0'))
):
env_varname="EESSI_IGNORE_LMOD_ERROR_ZEN4_GCC1220"
# TODO: I need to think about how to unset this, at the end of the build for this module
ocaisa marked this conversation as resolved.
Show resolved Hide resolved
# Maybe I shouldn't do it in the parse hook, but set it in a step hook, and unset it in a another step hook?
os.environ[env_varname] = "1"
update_build_option('force', 'True')
update_build_option('module_only', 'True')
ocaisa marked this conversation as resolved.
Show resolved Hide resolved
# TODO: create a docs page to which we can refer for more info here
# TODO: then update the link to the known issues page to the _specific_ issue
errmsg = "Toolchains based on GCCcore-12.2.0 are not supported for the Zen4 architecture."
errmsg += " See https://www.eessi.io/docs/known_issues/eessi-2023.06/"
ec['modluafooter'] = 'if (not os.getenv("%s")) then LmodError("%s") end' % (env_varname, errmsg)

def pre_prepare_hook_highway_handle_test_compilation_issues(self, *args, **kwargs):
"""
Solve issues with compiling or running the tests on both
Expand Down
Loading