Skip to content

Commit 5413c1a

Browse files
authored
Merge pull request #17 from boegel/fix-crayce-problems
make HierarhicalMNS compatible with Cray toolchains
2 parents daf8659 + 68db5c1 commit 5413c1a

File tree

4 files changed

+34
-10
lines changed

4 files changed

+34
-10
lines changed

easybuild/framework/easyconfig/easyconfig.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,15 +1463,6 @@ def _parse_dependency(self, dep, hidden=False, build_only=False):
14631463
if dependency['full_mod_name'].split('/')[-1].startswith('.'):
14641464
dependency['hidden'] = True
14651465

1466-
name_version = dependency['short_mod_name'].split('/')
1467-
if 'name' not in dependency['external_module_metadata']:
1468-
dependency['name'] = name_version[0]
1469-
if 'version' not in dependency['external_module_metadata']:
1470-
if len(name_version) > 1:
1471-
dependency['version'] = name_version[1]
1472-
else:
1473-
dependency['version'] = ''
1474-
14751466
self.log.debug("Returning parsed external dependency: %s", dependency)
14761467
return dependency
14771468

easybuild/tools/module_naming_scheme/hierarchical_mns.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,11 @@
4141
CORE = 'Core'
4242
COMPILER = 'Compiler'
4343
MPI = 'MPI'
44+
TOOLCHAIN = 'Toolchain'
4445

4546
MODULECLASS_COMPILER = 'compiler'
4647
MODULECLASS_MPI = 'mpi'
48+
MODULECLASS_TOOLCHAIN = 'toolchain'
4749

4850
GCCCORE = GCCcore.NAME
4951

@@ -107,7 +109,11 @@ def det_toolchain_compilers_name_version(self, tc_comps):
107109
# no compiler in toolchain, system toolchain
108110
res = None
109111
elif len(tc_comps) == 1:
110-
res = (tc_comps[0]['name'], self.det_full_version(tc_comps[0]))
112+
tc_comp = tc_comps[0]
113+
if tc_comp is None:
114+
res = None
115+
else:
116+
res = (tc_comp['name'], self.det_full_version(tc_comp))
111117
else:
112118
comp_versions = dict([(comp['name'], self.det_full_version(comp)) for comp in tc_comps])
113119
comp_names = comp_versions.keys()
@@ -135,6 +141,10 @@ def det_module_subdir(self, ec):
135141
if tc_comps is None:
136142
# no compiler in toolchain, system toolchain => Core module
137143
subdir = CORE
144+
elif tc_comps == [None]:
145+
# no info on toolchain compiler (cfr. Cray toolchains),
146+
# then use toolchain name/version
147+
subdir = os.path.join(TOOLCHAIN, ec.toolchain.name, ec.toolchain.version)
138148
else:
139149
tc_comp_name, tc_comp_ver = self.det_toolchain_compilers_name_version(tc_comps)
140150
tc_mpi = det_toolchain_mpi(ec)
@@ -223,6 +233,10 @@ def det_modpath_extensions(self, ec):
223233
fullver = self.det_full_version(ec)
224234
paths.append(os.path.join(MPI, tc_comp_name, tc_comp_ver, ec['name'], fullver))
225235

236+
# special case for Cray toolchains
237+
elif modclass == MODULECLASS_TOOLCHAIN and tc_comp_info is None and ec.name.startswith('Cray'):
238+
paths.append(os.path.join(TOOLCHAIN, ec.name, ec.version))
239+
226240
return paths
227241

228242
def expand_toolchain_load(self, ec=None):
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
easyblock = 'ConfigureMake'
2+
3+
name = 'HPL'
4+
version = '2.1'
5+
6+
homepage = 'http://www.netlib.org/benchmark/hpl/'
7+
description = "HPL, you know, LINPACK"
8+
9+
toolchain = {'name': 'CrayCCE', 'version': '5.1.29'}
10+
11+
source_urls = ['http://www.netlib.org/benchmark/%(namelower)s']
12+
sources = [SOURCELOWER_TAR_GZ]
13+
14+
moduleclass = 'tools'

test/framework/module_generator.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,6 +1273,11 @@ def test_ec(ecfile, short_modname, mod_subdir, modpath_exts, user_modpath_exts,
12731273
['MPI/intel-CUDA/%s-5.5.22/impi/5.1.2.150' % iccver],
12741274
['MPI/intel-CUDA/%s-5.5.22/impi/5.1.2.150' % iccver],
12751275
['Core']),
1276+
'CrayCCE-5.1.29.eb': ('CrayCCE/5.1.29', 'Core',
1277+
['Toolchain/CrayCCE/5.1.29'],
1278+
['Toolchain/CrayCCE/5.1.29'],
1279+
['Core']),
1280+
'HPL-2.1-CrayCCE-5.1.29.eb': ('HPL/2.1', 'Toolchain/CrayCCE/5.1.29', [], [], ['Core']),
12761281
}
12771282
for ecfile, mns_vals in test_ecs.items():
12781283
test_ec(ecfile, *mns_vals)

0 commit comments

Comments
 (0)