Skip to content

Commit 0da2987

Browse files
committed
move check for OneAPI generation of iimpi toolchain to intel-compilers toolchain component
1 parent 96afa32 commit 0da2987

File tree

2 files changed

+31
-18
lines changed

2 files changed

+31
-18
lines changed

easybuild/toolchains/compiler/intel_compilers.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
:author: Kenneth Hoste (Ghent University)
2929
"""
3030
import os
31+
import re
32+
from distutils.version import LooseVersion
3133

3234
from easybuild.toolchains.compiler.inteliccifort import IntelIccIfort
3335
from easybuild.tools.toolchain.compiler import Compiler
@@ -40,6 +42,15 @@ class IntelCompilers(IntelIccIfort):
4042

4143
COMPILER_MODULE_NAME = ['intel-compilers']
4244

45+
def __init__(self, *args, **kwargs):
46+
"""Toolchain constructor."""
47+
48+
super(IntelCompilers, self).__init__(*args, **kwargs)
49+
50+
# oneAPI generation (version 2021.x, or newer)
51+
intel_comp_ver = self.get_software_version(self.COMPILER_MODULE_NAME)[0]
52+
self.oneapi_gen = LooseVersion(intel_comp_ver) >= LooseVersion('2021')
53+
4354
def _set_compiler_vars(self):
4455
"""Intel compilers-specific adjustments after setting compiler variables."""
4556

easybuild/toolchains/iimpi.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -57,51 +57,53 @@ def __init__(self, *args, **kwargs):
5757
# comparing subversions that include letters causes TypeErrors in Python 3
5858
# 'a' is assumed to be equivalent with '.01' (January), and 'b' with '.07' (June)
5959
# (good enough for this purpose)
60-
self.iimpi_ver = LooseVersion(self.version.replace('a', '.01').replace('b', '.07'))
61-
if self.iimpi_ver >= LooseVersion('2020.12'):
62-
self.SUBTOOLCHAIN = IntelCompilersToolchain.NAME
63-
self.COMPILER_MODULE_NAME = IntelCompilersToolchain.COMPILER_MODULE_NAME
64-
else:
65-
self.SUBTOOLCHAIN = IccIfort.NAME
66-
self.COMPILER_MODULE_NAME = IccIfort.COMPILER_MODULE_NAME
60+
self.iimpi_ver = self.version.replace('a', '.01').replace('b', '.07')
6761
else:
6862
self.iimpi_ver = self.version
6963

64+
if self.oneapi_gen:
65+
self.SUBTOOLCHAIN = IntelCompilersToolchain.NAME
66+
self.COMPILER_MODULE_NAME = IntelCompilersToolchain.COMPILER_MODULE_NAME
67+
else:
68+
self.SUBTOOLCHAIN = IccIfort.NAME
69+
self.COMPILER_MODULE_NAME = IccIfort.COMPILER_MODULE_NAME
70+
7071
def is_deprecated(self):
7172
"""Return whether or not this toolchain is deprecated."""
7273

7374
deprecated = False
7475

7576
# make sure a non-symbolic version (e.g., 'system') is used before making comparisons using LooseVersion
7677
if re.match('^[0-9]', str(self.iimpi_ver)):
78+
loosever = LooseVersion(self.iimpi_ver)
7779
# iimpi toolchains older than iimpi/2016.01 are deprecated
7880
# iimpi 8.1.5 is an exception, since it used in intel/2016a (which is not deprecated yet)
79-
if self.iimpi_ver < LooseVersion('8.0'):
81+
if loosever < LooseVersion('8.0'):
8082
deprecated = True
81-
elif self.iimpi_ver > LooseVersion('2000') and self.iimpi_ver < LooseVersion('2016.01'):
83+
elif loosever > LooseVersion('2000') and loosever < LooseVersion('2016.01'):
8284
deprecated = True
8385

8486
return deprecated
8587

8688
def is_dep_in_toolchain_module(self, *args, **kwargs):
8789
"""Check whether a specific software name is listed as a dependency in the module for this toolchain."""
88-
if re.match('^[0-9]', str(self.iimpi_ver)) and self.iimpi_ver < LooseVersion('2020.12'):
89-
res = IccIfort.is_dep_in_toolchain_module(self, *args, **kwargs)
90-
else:
90+
if self.oneapi_gen:
9191
res = IntelCompilersToolchain.is_dep_in_toolchain_module(self, *args, **kwargs)
92+
else:
93+
res = IccIfort.is_dep_in_toolchain_module(self, *args, **kwargs)
9294

9395
return res
9496

9597
def _set_compiler_vars(self):
9698
"""Intel compilers-specific adjustments after setting compiler variables."""
97-
if re.match('^[0-9]', str(self.iimpi_ver)) and self.iimpi_ver < LooseVersion('2020.12'):
98-
IccIfort._set_compiler_vars(self)
99-
else:
99+
if self.oneapi_gen:
100100
IntelCompilersToolchain._set_compiler_vars(self)
101+
else:
102+
IccIfort._set_compiler_vars(self)
101103

102104
def set_variables(self):
103105
"""Intel compilers-specific adjustments after setting compiler variables."""
104-
if re.match('^[0-9]', str(self.iimpi_ver)) and self.iimpi_ver < LooseVersion('2020.12'):
105-
IccIfort.set_variables(self)
106-
else:
106+
if self.oneapi_gen:
107107
IntelCompilersToolchain.set_variables(self)
108+
else:
109+
IccIfort.set_variables(self)

0 commit comments

Comments
 (0)