summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaul Tambre <raul@tambre.ee>2022-08-13 10:20:57 (GMT)
committerRaul Tambre <raul@tambre.ee>2022-08-13 20:52:42 (GMT)
commitcd200c6c2d21806d7ba064f4edf45a5c94094286 (patch)
treec0e740ffaf8364645273f78ebaa23e8f75535494
parentdc5bf8f506614d5d59780f7787c488d2f8f86e7f (diff)
downloadCMake-cd200c6c2d21806d7ba064f4edf45a5c94094286.zip
CMake-cd200c6c2d21806d7ba064f4edf45a5c94094286.tar.gz
CMake-cd200c6c2d21806d7ba064f4edf45a5c94094286.tar.bz2
FindCUDAToolkit: nvtx3 target
nvtx3 is a header-only replacement for the previous shared library implementations. I implemented it as a separate target since while the header names match and ideally it should be API compatible, forcing its include directory into the old target would lengthen the include search path and could cause confusion or possible build differences for projects using multiple build systems. This keeps it explicit as a developer opt-in. Implements: #21377 Resolves: #23835
-rw-r--r--Help/release/dev/find-cuda-toolkit-nvtx3.rst8
-rw-r--r--Modules/FindCUDAToolkit.cmake32
2 files changed, 40 insertions, 0 deletions
diff --git a/Help/release/dev/find-cuda-toolkit-nvtx3.rst b/Help/release/dev/find-cuda-toolkit-nvtx3.rst
new file mode 100644
index 0000000..b16ed9f
--- /dev/null
+++ b/Help/release/dev/find-cuda-toolkit-nvtx3.rst
@@ -0,0 +1,8 @@
+find-cuda-toolkit-nvtx3
+-----------------------
+
+* The :module:`FindCUDAToolkit` module now provides a target for
+ :ref:`nvtx3 <cuda_toolkit_nvtx3>` for CUDA 10.0+, which supersedes
+ :ref:`nvToolsExt <cuda_toolkit_nvToolsExt>`. A deprecation warning is emitted
+ when using ``nvToolsExt`` if the project requires CMake 3.25 and CUDA 10.0+
+ is used.
diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake
index 538e132..c1368da 100644
--- a/Modules/FindCUDAToolkit.cmake
+++ b/Modules/FindCUDAToolkit.cmake
@@ -121,6 +121,7 @@ of the following libraries that are part of the CUDAToolkit:
- :ref:`nvidia-ML<cuda_toolkit_nvML>`
- :ref:`nvRTC<cuda_toolkit_nvRTC>`
- :ref:`nvToolsExt<cuda_toolkit_nvToolsExt>`
+- :ref:`nvtx3<cuda_toolkit_nvtx3>`
- :ref:`OpenCL<cuda_toolkit_opencl>`
- :ref:`cuLIBOS<cuda_toolkit_cuLIBOS>`
@@ -362,6 +363,8 @@ Targets Created:
nvToolsExt
""""""""""
+.. deprecated:: 3.25 With CUDA 10.0+, use :ref:`nvtx3 <cuda_toolkit_nvtx3>`.
+
The `NVIDIA Tools Extension <https://docs.nvidia.com/gameworks/content/gameworkslibrary/nvtx/nvidia_tools_extension_library_nvtx.htm>`_.
This is a shared library only.
@@ -369,6 +372,20 @@ Targets Created:
- ``CUDA::nvToolsExt``
+.. _`cuda_toolkit_nvtx3`:
+
+nvtx3
+"""""
+
+.. versionadded:: 3.25
+
+The header-only `NVIDIA Tools Extension Library <https://nvidia.github.io/NVTX/doxygen/index.html>`_.
+Introduced in CUDA 10.0.
+
+Targets created:
+
+- ``CUDA::nvtx3``
+
.. _`cuda_toolkit_opencl`:
OpenCL
@@ -1011,6 +1028,21 @@ if(CUDAToolkit_FOUND)
endif()
_CUDAToolkit_find_and_add_import_lib(nvToolsExt ALT nvToolsExt64)
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.0)
+ # nvToolsExt is deprecated since nvtx3 introduction.
+ # Warn only if the project requires a sufficiently new CMake to make migration possible.
+ if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_GREATER_EQUAL 3.25)
+ set_property(TARGET CUDA::nvToolsExt PROPERTY DEPRECATION "nvToolsExt has been superseded by nvtx3 since CUDA 10.0 and CMake 3.25. Use CUDA::nvtx3 and include <nvtx3/nvToolsExt.h> instead.")
+ endif()
+
+ # Header-only variant. Uses dlopen().
+ if(NOT TARGET CUDA::nvtx3)
+ add_library(CUDA::nvtx3 INTERFACE IMPORTED)
+ target_include_directories(CUDA::nvtx3 SYSTEM INTERFACE "${CUDAToolkit_INCLUDE_DIRS}")
+ target_link_libraries(CUDA::nvtx3 INTERFACE ${CMAKE_DL_LIBS})
+ endif()
+ endif()
+
_CUDAToolkit_find_and_add_import_lib(OpenCL)
endif()