2017-10-09 61 views
0

我想在MITK平臺上使用CUDA。我使用的MITK平臺是2014版,不支持CUDA;然而,我發現了一個reply,它顯示了一個解決方案,但它不適合我。根據MITK的Cmake結構,如果我在files.cmake腳本中將「* .cpp」文件設置爲CPP_FILES標誌,gcc將編譯源代碼,但對於cuda,則不存在變量。因此,根據上述鏈路,我修改 「mitkFunctionCreateModule.cmake」如何在MITK插件中使用CUDA?

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專家都可以幫助我解決這個問題?

謝謝

回答

2

最後,我找到了一個解決方案,在MITK插件的核心添加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}) 

它爲我的作品