如何在 MITK 插件中使用 CUDA?
How to use CUDA in MITK plugin?
我正在尝试在 MITK 平台中使用 CUDA。我使用的MITK平台是2014版本,不支持CUDA;但是,我找到了一个 reply,它显示了一个解决方案,但它也不适合我。根据MITK的Cmake结构,如果我在files.cmake脚本中将“*.cpp”文件设置为CPP_FILES标志,gcc编译源代码,但对于cuda没有变量。因此,根据上面的link,我修改了"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 文件夹中创建的,但我不能 link 它到主可执行文件!
PS:我面临的最大问题是无法使用target_link_libraries
!由于我不知道的任何原因,无法将此库 link 添加到主 MITK exe 文件。在插件模块工作的 mitk 专家中的任何人都可以帮助我解决这个问题?
谢谢
终于找到了在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})
它对我有用
我正在尝试在 MITK 平台中使用 CUDA。我使用的MITK平台是2014版本,不支持CUDA;但是,我找到了一个 reply,它显示了一个解决方案,但它也不适合我。根据MITK的Cmake结构,如果我在files.cmake脚本中将“*.cpp”文件设置为CPP_FILES标志,gcc编译源代码,但对于cuda没有变量。因此,根据上面的link,我修改了"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 文件夹中创建的,但我不能 link 它到主可执行文件!
PS:我面临的最大问题是无法使用target_link_libraries
!由于我不知道的任何原因,无法将此库 link 添加到主 MITK exe 文件。在插件模块工作的 mitk 专家中的任何人都可以帮助我解决这个问题?
谢谢
终于找到了在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})
它对我有用