pytorch/cmake/Modules_CUDA_fix
Dmytro Dzhulgakov a0cea517e7 Add 9.0a to cpp_extension supported compute archs (#110587)
There's an extended compute capability 9.0a for Hopper that was introduced in Cuda 12.0: https://docs.nvidia.com/cuda/archive/12.0.0/cuda-compiler-driver-nvcc/index.html#gpu-feature-list

E.g. Cutlass leverages it: 5f13dcad78/python/cutlass/emit/pytorch.py (L684)

This adds it to the list of permitted architectures to use in `cpp_extension` directly.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/110587
Approved by: https://github.com/ezyang
2023-10-05 17:41:06 +00:00
..
upstream Add 9.0a to cpp_extension supported compute archs (#110587) 2023-10-05 17:41:06 +00:00
FindCUDA.cmake
FindCUDNN.cmake Simplify CMake CUDNN code (#91676) 2023-02-08 01:06:10 +00:00
README.md

This ./upstream subfolder contains fixes for FindCUDA that are introduced in later versions of cmake but cause generator expression errors in earlier CMake versions. Specifically:

  1. a problem where a generator expression for include directories was passed to NVCC, where the generator expression itself was prefixed by -I. As the NNPACK include directory generator expression expands to multiple directories, the second and later ones were not prefixed by -I, causing NVCC to return an error. First fixed in CMake 3.7 (see Kitware/CMake@7ded655f).

  2. Windows VS2017 fixes that allows one to define the ccbin path differently between earlier versions of Visual Studio and VS2017. First introduced after 3.10.1 master version (see Kitware/CMake@bc88329e).

The downside of using these fixes is that ./upstream/CMakeInitializeConfigs.cmake, defining some new CMake variables (added in Kitware/CMake@48f7e2d3), must be included before ./upstream/FindCUDA.cmake to support older CMake versions. A wrapper ./FindCUDA.cmake is created to do this automatically, and to allow submodules to use these fixes because we can't patch their CMakeList.txt.

If you need to update files under ./upstream folder, we recommend you issue PRs against the CMake mainline branch, and then backport it here for earlier CMake compatibility.