Cmake 3.28.3 C++ LibTorch 2.5.1 + CUDA-12.6 + nvtx3C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Cmake 3.28.3 C++ LibTorch 2.5.1 + CUDA-12.6 + nvtx3

Сообщение Anonymous »

В LibTorch 2.0.1 я мог использовать библиотеку, не устанавливая ее (загрузите библиотеку и установите CMAKE_PREFIX_PATH, чтобы CMake мог найти библиотеку). Используя LibTorch 2.5.1 и CUDA 12.6, мне нужно загрузить nvToolsExt и поместить его по пути: {project}/ Third_party/NVTX/...
Файл: libtorch/share/cmake/ Caffe2/public/cuda.cmake:

Код: Выделить всё

find_path(nvtx3_dir NAMES nvtx3 PATHS "${PROJECT_SOURCE_DIR}/third_party/NVTX/c/include" NO_DEFAULT_PATH)
find_package_handle_standard_args(nvtx3 DEFAULT_MSG nvtx3_dir)
Итак, имея папку nvtx3, cmake может найти nvtx3, но CMAKE все равно показывает предупреждающее сообщение:

Код: Выделить всё

CMake Warning (dev) at /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to `find_package_handle_standard_args` (nvtx3) does
not match the name of the calling package (Caffe2).  This can lead to
-- Found nvtx3: /home/dev/Documents/projects_cpp/Forex/third_party/NVTX/c/include
problems in calling code that expects `find_package` result variables
(e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
/home/dev/Documents/libtorch_2_5_1/share/cmake/Caffe2/public/cuda.cmake:180 (find_package_handle_standard_args)
/home/dev/Documents/libtorch_2_5_1/share/cmake/Caffe2/Caffe2Config.cmake:86 (include)
/home/dev/Documents/libtorch_2_5_1/share/cmake/Torch/TorchConfig.cmake:68 (find_package)
CMakeLists.txt:131 (find_package)
This warning is for project developers.
Если углубиться, стандарт CMAKE /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake.txt генерирует это предупреждение:

Код: Выделить всё

  ``NAME_MISMATCHED``
.. versionadded:: 3.17

Indicate that the ``
`` does not match
``${CMAKE_FIND_PACKAGE_NAME}``. This is usually a mistake and raises a
warning, but it may be intentional for usage of the command for components
of a larger package.
...
...
...
if (DEFINED CMAKE_FIND_PACKAGE_NAME
AND NOT FPHSA_NAME_MISMATCHED
AND NOT _NAME STREQUAL CMAKE_FIND_PACKAGE_NAME)
message(AUTHOR_WARNING
"The package name passed to `find_package_handle_standard_args` "
"(${_NAME}) does not match the name of the calling package "
"(${CMAKE_FIND_PACKAGE_NAME}). This can lead to problems in calling "
"code that expects `find_package` result variables (e.g., `_FOUND`) "
"to follow a certain pattern.")
endif ()
Вариант 1:
Из предыдущего блока я обнаружил, что могу изменить переменную в моем CMakeLists.txt, чтобы предупреждение больше не отображалось :

Код: Выделить всё

set(FPHSA_NAME_MISMATCHED ON)
Кажется, это помогло избежать предупреждения, но я не знаю, может ли это быть проблематично для других библиотек (я больше библиотек не использую)
Вопрос: я что-то упускаю? Теперь мой проект компилируется правильно, без каких-либо предупреждений.
Вариант 2:
Поскольку я знаю, что включаю nvToolsExt в папка / Third_party/NVTX...
Я мог бы обновить libtorch/share/cmake/Caffe2/public/cuda.cmake, затрагивая библиотеку:
заменить код:

Код: Выделить всё

# nvToolsExt
find_path(nvtx3_dir NAMES nvtx3 PATHS "${PROJECT_SOURCE_DIR}/third_party/NVTX/c/include" NO_DEFAULT_PATH)
find_package_handle_standard_args(nvtx3 DEFAULT_MSG nvtx3_dir)
if(nvtx3_FOUND)
add_library(torch::nvtx3 INTERFACE IMPORTED)
target_include_directories(torch::nvtx3 INTERFACE "${nvtx3_dir}")
target_compile_definitions(torch::nvtx3 INTERFACE TORCH_CUDA_USE_NVTX3)
else()
message(WARNING "Cannot find NVTX3, find old NVTX instead")
add_library(torch::nvtoolsext INTERFACE IMPORTED)
set_property(TARGET torch::nvtoolsext PROPERTY INTERFACE_LINK_LIBRARIES CUDA::nvToolsExt)
endif()
автор:

Код: Выделить всё

# nvToolsExt
add_library(torch::nvtx3 INTERFACE IMPORTED)
target_include_directories(torch::nvtx3 INTERFACE "${PROJECT_SOURCE_DIR}/third_party/NVTX/c/include")
target_compile_definitions(torch::nvtx3 INTERFACE TORCH_CUDA_USE_NVTX3)
в этом случае CMAKE может скомпилироваться без какого-либо предупреждения.
Резюме: Я не уверен, есть ли что-либо из эти параметры действительны, или есть лучшее решение, позволяющее избежать предупреждения.

Примечание: Я не использую nvToolsExt, поэтому удаление скрипта, который его добавляет, мне тоже помогло.

Подробнее здесь: https://stackoverflow.com/questions/792 ... 12-6-nvtx3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»