-
Notifications
You must be signed in to change notification settings - Fork 795
[SYCL][UR][CUDA] Use FindCUDAToolkit CMake module instead of FindCUDA #17315
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
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.
|
This is great. I've run into all these problems at some point but didn't know
there was a reasonable fix.
|
steffenlarsen
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Finally! 🥳
|
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. |
|
Unrelated AMD e2e test failures tracked in #10460 @intel/llvm-gatekeepers this is ready to merge, thank you in advance |
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.
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.
find_package(CUDA)is deprecated since CMake 3.10 and the functionality we need is provided byfind_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:
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)).