Неопределенная ссылка на cuCtxGetCurrent при получении контекста CUDA для OptiXC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неопределенная ссылка на cuCtxGetCurrent при получении контекста CUDA для OptiX

Сообщение Anonymous »

Я пытаюсь научиться внедрять OptiX в свой проект на C++. Одним из первых шагов является получение текущего контекста CUDA с помощью cuCtxGetCurrent(&some_CUcontext_variable), однако я получаю ошибку времени компиляции, сообщающую, что я сделал неопределенную ссылку на cuCtxGetCurrent.
Вот что у меня есть:
  • Я следую коду из этого репозитория, чтобы узнать о нем. Мы с OptiX работаем над примером 2 (где вы получаете контекст CUDA).
  • В моем коде (main.cpp) Я включил cuda_runtime.h, device_launch_parameters.h, optix.h и optix_stubs.h, но по-прежнему получаю сообщение об ошибке время компиляции.
  • Интересно, что моя IDE, CLion от JetBrains, не отображает никаких неопределенных ссылочных ошибок/предупреждений в строке. Ошибки появляются только при компиляции.
  • В моем CMakeLists.txt я использовал find_package(CUDAToolkit REQUIRED) для получения CUDA. Затем я использовал target_link_libraries{ ... CUDA::cudart для связывания в CUDA.
Я считаю, что эта ошибка связана с компоновщиком, поэтому Я предполагаю, что мне что-то не хватает в моих CMakeLists, но я не знаю, что именно. Пожалуйста, дайте мне знать, как я могу решить эту проблему!
Заранее благодарим за помощь!

Обновить #2: Решено
В такие моменты меня рвать на себе волосы: все, что мне нужно было сделать, это буквально вставить cuda в мои целевые библиотеки ссылок. Не -lcuda или CUDA::cuda, просто cuda. Каким-то образом это связано с драйверами, и, похоже, сейчас оно компилируется.

[СТАРОЕ, НО СОХРАНЕНО ДЛЯ СПРАВКИ] Обновление № 1: вот мой CMakeLists.txt .
Извините за отсутствие кода в исходном сообщении. Я пытался избежать вставки больших кусков произвольного кода.
cmake_minimum_required(VERSION 3.17)
project(My_Project_Name CUDA CXX)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_MODULE_PATH
"${CMAKE_SOURCE_DIR}/cmake"
${CMAKE_MODULE_PATH})

find_package(CUDAToolkit REQUIRED)
find_package(OptiX REQUIRED VERSION 7.0)

add_executable(
${PROJECT_NAME}
main.cpp [and other cpp and cu files])

# For project
set_target_properties(
${PROJECT_NAME}
PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
)
target_compile_options(
${PROJECT_NAME}
PRIVATE
$
)
target_include_directories(
${PROJECT_NAME}
PRIVATE
include
${OptiX_INCLUDE}
)
target_link_libraries(
${PROJECT_NAME}
PRIVATE
CUDA::cudart
CUDA::cublas
)


Подробнее здесь: https://stackoverflow.com/questions/662 ... -for-optix
Ответить

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

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

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

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

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