Open
Description
We need an easy-to-find place explaining what those do, when they are required and which and how to use them.
Some notes as starting point (don't have the time to write the full article):
- Short: Required when the system driver doesn't support a new CUDA major version (e.g. 10.2 driver, CUDA 11 ECs)
- Refer to NVIDAs documentation about the compatibility driver
- Newer versions of CUDAcompat should be preferred (i.e. 11.7 over 11.6)
- Only major version really matters, so can use CUDAcompat-11 which refers to latest CUDAcompat-11.x which refers to latest CUDAcompat-11.x-y (y=driver release version)
- CUDAcompat supports a range of (minimal) system driver versions, so the latest CUDAcompat might not support a (much) older system driver -> Might need to choose a lower one, e.g. 11.6 instead of 11 or 11.7
- CUDAcompat module is required for any CUDA program compiled with new major version -> CUDAcompat should be dependency of CUDA module
Example parse hook:
if ec.name in ('CUDA', 'CUDAcore') and ec.toolchain.is_system_toolchain():
if LooseVersion(ec.version) >= '11':
ec.log.info("[parse hook] Adding CUDA 11 compat package")
ec['dependencies'].append(('CUDAcompat', '11', '', True))
Metadata
Metadata
Assignees
Labels
No labels