diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index 3e4316b7afe..0879d06edc3 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -35,6 +35,98 @@ class Cuda(Package): version('6.5.14', '90b1b8f77313600cc294d9271741f4da', expand=False, url="http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_6.5.14_linux_64.run") + # CUDA conflicts taken from official NVidia website + # + # Note that installation guide for CUDA prior to 8.0 are unavailable, + # thus no Spack conflict statements have been implemented prior to + # version 8.0.44. These are conflicts from Linux systems analagous + # conflicts for Mac can be added later. + # + # Not all conflicts are expressed, some conflicts are never encountered + # in practice. For example, XL compiler on Intel hardware or vice-versa + cuda_warning = 'CUDA is not supported by this version of the compiler ' \ + 'on your architecture.' + + # CUDA 10.0.130 + # Table 1 from here: + # https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html + cuda_version = '@10.0.130' + conflicts('%gcc@8:', when=cuda_version, msg=cuda_warning) + conflicts('%llvm@7:', when=cuda_version, msg=cuda_warning) + conflicts('%pgi@:17', when=cuda_version, msg=cuda_warning) + + cuda_version = '@10.0.130 arch=x86_64' + conflicts('%intel@:17', when=cuda_version, msg=cuda_warning) + conflicts('%intel@19:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@10.0.130 arch=ppc64le' + conflicts('%xl@:12', when=cuda_version, msg=cuda_warning) + conflicts('%xl@14:15', when=cuda_version, msg=cuda_warning) + conflicts('%xl@17:', when=cuda_version, msg=cuda_warning) + + # CUDA 9.2.88 + # https://docs.nvidia.com/cuda/archive/9.2/cuda-installation-guide-linux/index.html + cuda_version = '@9.2.88' + conflicts('%llvm@6:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@9.2.88 arch=x86_64' + conflicts('%gcc@8:', when=cuda_version, msg=cuda_warning) + conflicts('%pgi@:16', when=cuda_version, msg=cuda_warning) + conflicts('%intel@18:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@9.2.88 arch=ppc64le' + conflicts('%gcc@6:', when=cuda_version, msg=cuda_warning) + conflicts('%pgi@:17', when=cuda_version, msg=cuda_warning) + conflicts('%xl@:12', when=cuda_version, msg=cuda_warning) + conflicts('%xl@14:15', when=cuda_version, msg=cuda_warning) + + # CUDA 9.1.85 + # https://docs.nvidia.com/cuda/archive/9.1/cuda-installation-guide-linux/index.html + cuda_version = '@9.1.85' + conflicts('%pgi@:16', when=cuda_version, msg=cuda_warning) + conflicts('%llvm@5:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@9.1.85 arch=x86_64' + conflicts('%gcc@7:', when=cuda_version, msg=cuda_warning) + conflicts('%intel@:16', when=cuda_version, msg=cuda_warning) + conflicts('%intel@18:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@9.1.85 arch=ppc64le' + conflicts('%gcc@6:', when=cuda_version, msg=cuda_warning) + conflicts('%xl@:12', when=cuda_version, msg=cuda_warning) + conflicts('%xl@14:', when=cuda_version, msg=cuda_warning) + + # CUDA 9.0.176 + # https://docs.nvidia.com/cuda/archive/9.0/cuda-installation-guide-linux/index.html + cuda_version = '@9.0.176' + conflicts('%pgi@:16', when=cuda_version, msg=cuda_warning) + conflicts('%llvm@4:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@9.0.176 arch=x86_64' + conflicts('%gcc@7:', when=cuda_version, msg=cuda_warning) + conflicts('%intel@:16', when=cuda_version, msg=cuda_warning) + conflicts('%intel@18:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@9.0.176 arch=ppc64le' + conflicts('%gcc@6:', when=cuda_version, msg=cuda_warning) + conflicts('%xl@:12', when=cuda_version, msg=cuda_warning) + conflicts('%xl@14:', when=cuda_version, msg=cuda_warning) + + # CUDA 8.0.x + # https://docs.nvidia.com/cuda/archive/8.0/cuda-installation-guide-linux/index.html + cuda_version = '@8 arch=x86_64' + conflicts('%gcc@7:', when=cuda_version, msg=cuda_warning) + conflicts('%intel@:16', when=cuda_version, msg=cuda_warning) + conflicts('%intel@17:', when=cuda_version, msg=cuda_warning) + conflicts('%pgi@:16', when=cuda_version, msg=cuda_warning) + conflicts('%llvm@4:', when=cuda_version, msg=cuda_warning) + + cuda_version = '@8 arch=ppc64le' + conflicts('%pgi', when=cuda_version, msg=cuda_warning) + conflicts('%xl@:12', when=cuda_version, msg=cuda_warning) + conflicts('%xl@14:', when=cuda_version, msg=cuda_warning) + conflicts('%llvm', when=cuda_version, msg=cuda_warning) + def setup_environment(self, spack_env, run_env): run_env.set('CUDA_HOME', self.prefix)