0

我正在尝试在 MITK 平台中使用 CUDA。我使用的MITK平台是2014版本,不支持CUDA;但是,我找到了一个回复,它显示了一个解决方案,但它也不适合我。根据 MITK 的 Cmake 结构,如果我在 files.cmake 脚本中将“*.cpp”文件设置为 CPP_FILES 标志,gcc 会编译源代码,但对于 cuda 没有变量。因此,根据上面的链接,我修改了“mitkFunctionCreateModule.cmake”

if (IS_CUDA)
    find_package(CUDA REQUIRED)
    set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}; -std=c++11 )
    #list(APPEND CUDA_NVCC_FLAGS "-arch=sm_20;-std=c++11;-O2;-DVERBOSE")
    #SET(CUDA_PROPAGATE_HOST_FLAGS OFF)
    message ("is_cuda == true")
    cuda_add_library(${MODULE_TARGET} STATIC ${CUDA_FILES}) 
endif()

在 files.cmake 中,我添加了以下几行:

find_package(CUDA)
set(CUDA_FILES
  src/robot/cudafolder/testcuda.cu
  src/robot/cudafolder/testcuda.h
)
set(IS_CUDA true)
MITK_CREATE_MODULE(my_module
    DEPENDS MitkCore
    PACKAGE_DEPENDS Qt5|Core
    #ADDITIONAL_LIBS abc glew
)

libmy_module.a 在 bin 文件夹中创建,但我无法将其链接到主可执行文件!

PS:我面临的最大问题是我无法使用target_link_libraries!出于任何我不知道的原因,不可能将此库链接到主 MITK exe 文件。在插件模块中工作的 mitk 专家中的任何人都可以在这件事上帮助我吗?

谢谢

4

1 回答 1

2

最后我找到了在 MITK Plugin 的核心添加 CUDA 的解决方案。

解决方案是在末尾添加这些行files.cmake

find_package(CUDA)
set(CUDA_FILES
  src/robot/cudafolder/testcuda.cu
  src/robot/cudafolder/testcuda.h)

set(MyCudalib CudaTestLib)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}; -std=c++11 )
cuda_add_library( ${MyCudalib} SHARED ${CUDA_FILES}) 

然后从侧面的同一路径CmakeLists.txt添加这些行

TARGET_LINK_LIBRARIES(${PROJECT_NAME}  ${MyCudalib} ${CUDA_LIBRARIES} ${CUDA_nppi_LIBRARY})

它对我有用

于 2017-10-13T11:47:50.387 回答