Skip to content

Conversation

@rafbiels
Copy link
Contributor

@rafbiels rafbiels commented Mar 5, 2025

find_package(CUDA) is deprecated since CMake 3.10 and the functionality we need is provided by find_package(CUDAToolkit) since CMake 3.17.

Thanks to SYCL configuration now requiring CMake >3.20 (#13664), we can rely on find_package(CUDAToolkit) working in all setups.

Changes:

  • Remove the deprecated calls and replace them with the recommended one.
  • Clean up all extra CMake code dealing with finding CUPTI as that is also now handled correctly by the FindCUDAToolkit module.
  • Replace all variables from the old module with corresponding ones from the new one, where they differ.
  • Update documentation on specifying custom CUDA installation path.

This solves multiple issues with finding libraries, notably including the failure to find libcuda.so automatically on systems where the CUDA driver is not installed and only the toolkit is available. This is a reasonable use case for building DPC++ on a build machine without a GPU and distributing for use on GPU machines (easybuilders/easybuild-easyconfigs#22418 (comment)).

find_package(CUDA) is deprecated since CMake 3.10 and the functionality
we need is provided by find_package(CUDAToolkit) since CMake 3.17.

Thanks to SYCL configuration now requiring CMake >3.20 (intel#13664), we can
rely on find_package(CUDAToolkit) to work in all setups.

Remove the deprecated calls and replace them with the recommended one.
Clean up all extra CMake code dealing with finding CUPTI as that is
also no longer needed (partially thanks to intel#17272). Replace all
variables from the old module with corresponding ones from the new one.

This solves multiple issues with finding libraries, notably including
the failure to find libcuda.so automatically on systems where the CUDA
driver is not installed and only the toolkit is available. This is a
reasonable use case for building DPC++ on a build machine without a
GPU and distributing for use on GPU machines.
@rafbiels rafbiels requested review from a team as code owners March 5, 2025 14:29
@ldrumm
Copy link
Contributor

ldrumm commented Mar 5, 2025 via email

Copy link
Contributor

@steffenlarsen steffenlarsen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Finally! 🥳

@rafbiels
Copy link
Contributor Author

rafbiels commented Mar 10, 2025

Thanks for all the reviews! Could someone please restart the cancelled CI jobs? There seems to have been an issue with the runners on the weekend. I don't have enough permissions to restart jobs.

@rafbiels
Copy link
Contributor Author

Unrelated AMD e2e test failures tracked in #10460

@intel/llvm-gatekeepers this is ready to merge, thank you in advance

@kbenzie kbenzie merged commit 17df762 into intel:sycl Mar 12, 2025
32 of 33 checks passed
rafbiels added a commit to rafbiels/llvm that referenced this pull request Mar 13, 2025
Fix-up for intel#17315 which used incorrect CMake variables for CUPTI:
* CUDAToolkit_cupti_INCLUDE_DIR should be CUDAToolkit_CUPTI_INCLUDE_DIR
* CUDAToolkit_cupti_LIBRARY should be CUDA_cupti_LIBRARY

In addition, we discovered that FindCUDAToolkit:
* does not set the INCLUDE variable until CMake 3.24
* fails to find the library in CUDA toolkits installed from runfile (https://gitlab.kitware.com/cmake/cmake/-/issues/26770)

Fix the variable names and retry the searches with extra paths
if the header/library are not found. The REQUIRED option is enabled
in the retry, which ensures that if CUPTI is not available in the
system then the build fails at CMake configuration instead of later
during compilation or linking.
sommerlukas pushed a commit that referenced this pull request Mar 17, 2025
Fix-up for #17315 which used incorrect CMake variables for CUPTI:
* `CUDAToolkit_cupti_INCLUDE_DIR` should be
`CUDAToolkit_CUPTI_INCLUDE_DIR`
* `CUDAToolkit_cupti_LIBRARY` should be `CUDA_cupti_LIBRARY`

In addition, we discovered that FindCUDAToolkit:
* does not set the INCLUDE_DIR variable until CMake 3.24 (while we
support back to 3.20)
* fails to find the library in CUDA toolkits installed from runfile
(https://gitlab.kitware.com/cmake/cmake/-/issues/26770)

Fix the variable names and retry the searches with extra paths if the
header/library are not found. The REQUIRED option is enabled in the
retry, which ensures that if CUPTI is not found then the build fails at
CMake configuration instead of later during compilation or linking.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants