Skip to content

Commit fbf5d39

Browse files
authored
Merge pull request #4583 from casparvl/cc_space_seperated_template
Add cuda_cc_space_sep variant that does not have periods
2 parents 1148625 + 262ff85 commit fbf5d39

3 files changed

Lines changed: 15 additions & 12 deletions

File tree

.github/workflows/unit_tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ jobs:
191191
# run test suite
192192
python -O -m test.framework.suite 2>&1 | tee test_framework_suite.log
193193
# try and make sure output of running tests is clean (no printed messages/warnings)
194-
IGNORE_PATTERNS="no GitHub token available|skipping SvnRepository test|requires Lmod as modules tool|stty: 'standard input': Inappropriate ioctl for device|CryptographyDeprecationWarning: Python 3.[56]|from cryptography.* import |CryptographyDeprecationWarning: Python 2|Blowfish|GC3Pie not available, skipping test"
194+
IGNORE_PATTERNS="no GitHub token available|skipping SvnRepository test|requires Lmod as modules tool|stty: 'standard input': Inappropriate ioctl for device|CryptographyDeprecationWarning: Python 3.[56]|from cryptography.* import |CryptographyDeprecationWarning: Python 2|Blowfish|GC3Pie not available, skipping test|CryptographyDeprecationWarning: TripleDES has been moved|algorithms.TripleDES"
195195
# '|| true' is needed to avoid that GitHub Actions stops the job on non-zero exit of grep (i.e. when there are no matches)
196196
PRINTED_MSG=$(egrep -v "${IGNORE_PATTERNS}" test_framework_suite.log | grep '\.\n*[A-Za-z]' || true)
197197
test "x$PRINTED_MSG" = "x" || (echo "ERROR: Found printed messages in output of test suite" && echo "${PRINTED_MSG}" && exit 1)

easybuild/framework/easyconfig/templates.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,11 @@
9494
"as specify by the --sysroot configuration option"),
9595
('mpi_cmd_prefix', "Prefix command for running MPI programs (with default number of ranks)"),
9696
('cuda_compute_capabilities', "Comma-separated list of CUDA compute capabilities, as specified via "
97-
"--cuda-compute-capabilities configuration option or via cuda_compute_capabilities easyconfig parameter"),
97+
"--cuda-compute-capabilities configuration option or via cuda_cc easyconfig parameter"),
9898
('cuda_cc_cmake', "List of CUDA compute capabilities suitable for use with $CUDAARCHS in CMake 3.18+"),
9999
('cuda_cc_space_sep', "Space-separated list of CUDA compute capabilities"),
100+
('cuda_cc_space_sep_no_period',
101+
"Space-separated list of CUDA compute capabilities, without periods (e.g. '80 90')."),
100102
('cuda_cc_semicolon_sep', "Semicolon-separated list of CUDA compute capabilities"),
101103
('cuda_sm_comma_sep', "Comma-separated list of sm_* values that correspond with CUDA compute capabilities"),
102104
('cuda_sm_space_sep', "Space-separated list of sm_* values that correspond with CUDA compute capabilities"),
@@ -363,13 +365,14 @@ def template_constant_dict(config, ignore=None, skip_lower=None, toolchain=None)
363365

364366
# step 6. CUDA compute capabilities
365367
# Use the commandline / easybuild config option if given, else use the value from the EC (as a default)
366-
cuda_compute_capabilities = build_option('cuda_compute_capabilities') or config.get('cuda_compute_capabilities')
367-
if cuda_compute_capabilities:
368-
template_values['cuda_compute_capabilities'] = ','.join(cuda_compute_capabilities)
369-
template_values['cuda_cc_space_sep'] = ' '.join(cuda_compute_capabilities)
370-
template_values['cuda_cc_semicolon_sep'] = ';'.join(cuda_compute_capabilities)
371-
template_values['cuda_cc_cmake'] = ';'.join(cc.replace('.', '') for cc in cuda_compute_capabilities)
372-
sm_values = ['sm_' + cc.replace('.', '') for cc in cuda_compute_capabilities]
368+
cuda_cc = build_option('cuda_compute_capabilities') or config.get('cuda_compute_capabilities')
369+
if cuda_cc:
370+
template_values['cuda_compute_capabilities'] = ','.join(cuda_cc)
371+
template_values['cuda_cc_space_sep'] = ' '.join(cuda_cc)
372+
template_values['cuda_cc_space_sep_no_period'] = ' '.join(cc.replace('.', '') for cc in cuda_cc)
373+
template_values['cuda_cc_semicolon_sep'] = ';'.join(cuda_cc)
374+
template_values['cuda_cc_cmake'] = ';'.join(cc.replace('.', '') for cc in cuda_cc)
375+
sm_values = ['sm_' + cc.replace('.', '') for cc in cuda_cc]
373376
template_values['cuda_sm_comma_sep'] = ','.join(sm_values)
374377
template_values['cuda_sm_space_sep'] = ' '.join(sm_values)
375378

test/framework/easyconfig.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4606,7 +4606,7 @@ def test_cuda_compute_capabilities(self):
46064606
toolchain = SYSTEM
46074607
cuda_compute_capabilities = ['5.1', '7.0', '7.1']
46084608
installopts = '%(cuda_compute_capabilities)s'
4609-
preinstallopts = '%(cuda_cc_space_sep)s'
4609+
preinstallopts = 'period="%(cuda_cc_space_sep)s" noperiod="%(cuda_cc_space_sep_no_period)s"'
46104610
prebuildopts = '%(cuda_cc_semicolon_sep)s'
46114611
configopts = 'comma="%(cuda_sm_comma_sep)s" space="%(cuda_sm_space_sep)s"'
46124612
preconfigopts = 'CUDAARCHS="%(cuda_cc_cmake)s"'
@@ -4615,7 +4615,7 @@ def test_cuda_compute_capabilities(self):
46154615

46164616
ec = EasyConfig(self.eb_file)
46174617
self.assertEqual(ec['installopts'], '5.1,7.0,7.1')
4618-
self.assertEqual(ec['preinstallopts'], '5.1 7.0 7.1')
4618+
self.assertEqual(ec['preinstallopts'], 'period="5.1 7.0 7.1" noperiod="51 70 71"')
46194619
self.assertEqual(ec['prebuildopts'], '5.1;7.0;7.1')
46204620
self.assertEqual(ec['configopts'], 'comma="sm_51,sm_70,sm_71" '
46214621
'space="sm_51 sm_70 sm_71"')
@@ -4625,7 +4625,7 @@ def test_cuda_compute_capabilities(self):
46254625
init_config(build_options={'cuda_compute_capabilities': ['4.2', '6.3']})
46264626
ec = EasyConfig(self.eb_file)
46274627
self.assertEqual(ec['installopts'], '4.2,6.3')
4628-
self.assertEqual(ec['preinstallopts'], '4.2 6.3')
4628+
self.assertEqual(ec['preinstallopts'], 'period="4.2 6.3" noperiod="42 63"')
46294629
self.assertEqual(ec['prebuildopts'], '4.2;6.3')
46304630
self.assertEqual(ec['configopts'], 'comma="sm_42,sm_63" '
46314631
'space="sm_42 sm_63"')

0 commit comments

Comments
 (0)