Почему CMake принудительно использует libcublas с разделяемой компиляцией? - PullRequest
0 голосов
/ 29 мая 2018

Я использую CMake 3.11 для создания следующего крошечного проекта на основе CUDA:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.1)
find_package(CUDA 7.0 REQUIRED)
set(CUDA_SEPARABLE_COMPILATION ON)
cuda_add_executable(dummy dummy.cu)

dummy.cu:

int main() { }

Как ни странно, при сборке для фазы dlink используется следующая команда:

/path/to/cuda/bin/nvcc -m64 -ccbin /opt/gcc-5.4.0/bin/gcc -dlink /home/joeuser/src/dummy/CMakeFiles/dummy.dir//./dummy_generated_dummy.cu.o /path/to/cuda/lib64/libcublas_device.a -o /home/joeuser/src/dummy/CMakeFiles/dummy.dir/./dummy_intermediate_link.o

Почему CMake связывается с кублами там, где якобы это не нужно?

Примечание: Если я удалю строку SEPARABLE_COMPILATION, cublas не будет добавлен в аргументы команды dlink.

1 Ответ

0 голосов
/ 29 мая 2018

Частичный ответ:

Похоже, этого не произойдет, если мы используем поддержку родного языка CUDA в CMake, например,

cmake_minimum_required(VERSION 3.1)
enable_language(CUDA)
add_executable(dummy dummy.cu)

вместо вышеуказанного - работает.Я не могу сделать так, чтобы у нет была отдельная компиляция, даже если я установил:

set_property(TARGET dummy PROPERTY CUDA_SEPARABLE_COMPILATION OFF)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...