Skip to content

Commit ae320db

Browse files
authored
Merge pull request #4463 from jfgrimm/cuda-integer-templates
add cuda compute capability integer format templates
2 parents af15883 + b65771f commit ae320db

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

easybuild/framework/easyconfig/templates.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@
9797
('cuda_cc_cmake', "List of CUDA compute capabilities suitable for use with $CUDAARCHS in CMake 3.18+"),
9898
('cuda_cc_space_sep', "Space-separated list of CUDA compute capabilities"),
9999
('cuda_cc_semicolon_sep', "Semicolon-separated list of CUDA compute capabilities"),
100+
('cuda_int_comma_sep', "Comma-separated list of integer CUDA compute capabilities"),
101+
('cuda_int_space_sep', "Space-separated list of integer CUDA compute capabilities"),
102+
('cuda_int_semicolon_sep', "Semicolon-separated list of integer CUDA compute capabilities"),
100103
('cuda_sm_comma_sep', "Comma-separated list of sm_* values that correspond with CUDA compute capabilities"),
101104
('cuda_sm_space_sep', "Space-separated list of sm_* values that correspond with CUDA compute capabilities"),
102105
]
@@ -365,6 +368,10 @@ def template_constant_dict(config, ignore=None, toolchain=None):
365368
template_values['cuda_cc_space_sep'] = ' '.join(cuda_compute_capabilities)
366369
template_values['cuda_cc_semicolon_sep'] = ';'.join(cuda_compute_capabilities)
367370
template_values['cuda_cc_cmake'] = ';'.join(cc.replace('.', '') for cc in cuda_compute_capabilities)
371+
int_values = [cc.replace('.', '') for cc in cuda_compute_capabilities]
372+
template_values['cuda_int_comma_sep'] = ','.join(int_values)
373+
template_values['cuda_int_space_sep'] = ' '.join(int_values)
374+
template_values['cuda_int_semicolon_sep'] = ';'.join(int_values)
368375
sm_values = ['sm_' + cc.replace('.', '') for cc in cuda_compute_capabilities]
369376
template_values['cuda_sm_comma_sep'] = ','.join(sm_values)
370377
template_values['cuda_sm_space_sep'] = ' '.join(sm_values)

test/framework/easyconfig.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4438,31 +4438,39 @@ def test_cuda_compute_capabilities(self):
44384438
description = 'test'
44394439
toolchain = SYSTEM
44404440
cuda_compute_capabilities = ['5.1', '7.0', '7.1']
4441-
installopts = '%(cuda_compute_capabilities)s'
4442-
preinstallopts = '%(cuda_cc_space_sep)s'
4443-
prebuildopts = '%(cuda_cc_semicolon_sep)s'
4444-
configopts = 'comma="%(cuda_sm_comma_sep)s" space="%(cuda_sm_space_sep)s"'
44454441
preconfigopts = 'CUDAARCHS="%(cuda_cc_cmake)s"'
4442+
configopts = 'comma="%(cuda_sm_comma_sep)s" space="%(cuda_sm_space_sep)s"'
4443+
prebuildopts = '%(cuda_cc_semicolon_sep)s'
4444+
buildopts = ('comma="%(cuda_int_comma_sep)s" space="%(cuda_int_space_sep)s" '
4445+
'semi="%(cuda_int_semicolon_sep)s"')
4446+
preinstallopts = '%(cuda_cc_space_sep)s'
4447+
installopts = '%(cuda_compute_capabilities)s'
44464448
""")
44474449
self.prep()
44484450

44494451
ec = EasyConfig(self.eb_file)
4450-
self.assertEqual(ec['installopts'], '5.1,7.0,7.1')
4451-
self.assertEqual(ec['preinstallopts'], '5.1 7.0 7.1')
4452-
self.assertEqual(ec['prebuildopts'], '5.1;7.0;7.1')
4452+
self.assertEqual(ec['preconfigopts'], 'CUDAARCHS="51;70;71"')
44534453
self.assertEqual(ec['configopts'], 'comma="sm_51,sm_70,sm_71" '
44544454
'space="sm_51 sm_70 sm_71"')
4455-
self.assertEqual(ec['preconfigopts'], 'CUDAARCHS="51;70;71"')
4455+
self.assertEqual(ec['prebuildopts'], '5.1;7.0;7.1')
4456+
self.assertEqual(ec['buildopts'], 'comma="51,70,71" '
4457+
'space="51 70 71" '
4458+
'semi="51;70;71"')
4459+
self.assertEqual(ec['preinstallopts'], '5.1 7.0 7.1')
4460+
self.assertEqual(ec['installopts'], '5.1,7.0,7.1')
44564461

44574462
# build options overwrite it
44584463
init_config(build_options={'cuda_compute_capabilities': ['4.2', '6.3']})
44594464
ec = EasyConfig(self.eb_file)
4460-
self.assertEqual(ec['installopts'], '4.2,6.3')
4461-
self.assertEqual(ec['preinstallopts'], '4.2 6.3')
4462-
self.assertEqual(ec['prebuildopts'], '4.2;6.3')
4465+
self.assertEqual(ec['preconfigopts'], 'CUDAARCHS="42;63"')
44634466
self.assertEqual(ec['configopts'], 'comma="sm_42,sm_63" '
44644467
'space="sm_42 sm_63"')
4465-
self.assertEqual(ec['preconfigopts'], 'CUDAARCHS="42;63"')
4468+
self.assertEqual(ec['buildopts'], 'comma="42,63" '
4469+
'space="42 63" '
4470+
'semi="42;63"')
4471+
self.assertEqual(ec['prebuildopts'], '4.2;6.3')
4472+
self.assertEqual(ec['preinstallopts'], '4.2 6.3')
4473+
self.assertEqual(ec['installopts'], '4.2,6.3')
44664474

44674475
def test_det_copy_ec_specs(self):
44684476
"""Test det_copy_ec_specs function."""
@@ -4725,6 +4733,9 @@ def test_get_cuda_cc_template_value(self):
47254733
'cuda_compute_capabilities': '6.5,7.0',
47264734
'cuda_cc_space_sep': '6.5 7.0',
47274735
'cuda_cc_semicolon_sep': '6.5;7.0',
4736+
'cuda_int_comma_sep': '65,70',
4737+
'cuda_int_space_sep': '65 70',
4738+
'cuda_int_semicolon_sep': '65;70',
47284739
'cuda_sm_comma_sep': 'sm_65,sm_70',
47294740
'cuda_sm_space_sep': 'sm_65 sm_70',
47304741
}

0 commit comments

Comments
 (0)