I am trying to use the cooperative group with CUDA 9.0.
I have enabled the sperate compile and linking, the kernel is just a hello world and a cooperative group definition.
However, I am given the link error:
CMakeFiles/edt_node.dir/edt_node_intermediate_link.o: In function __cudaRegisterLinkedBinary_66_tmpxft_0000063e_00000000_12_cuda_device_runtime_compute_70_cpp1_ii_8b1a5d37': /tmp/tmpxft_000060ce_00000000-2_edt_node_intermediate_link.reg.c:4: undefined reference to
__fatbinwrap_66_tmpxft_0000063e_00000000_12_cuda_device_runtime_compute_70_cpp1_ii_8b1a5d37’
the CMakeList that I used to compile it is:
cmake_minimum_required(VERSION 2.8.3)
project(edt)
set(ROS_BUILD_TYPE Debug)
set(CMAKE_BUILD_TYPE Debug)
# Compile as C++11, supported in ROS Kinetic and newer
add_compile_options(-std=c++11)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
SET(CUDA_SEPARABLE_COMPILATION ON)
FIND_PACKAGE(CUDA REQUIRED)
SET(CUDA_NVCC_FLAGS "-arch=sm_61;-g;-G;-rdc=true;" CACHE STRING "nvcc flags" FORCE)
SET (CUDA_VERBOSE_BUILD ON CACHE BOOL "nvcc verbose" FORCE)
catkin_package(
INCLUDE_DIRS include
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)
include_directories(
include
${catkin_INCLUDE_DIRS}
${ZED_INCLUDE_DIRS}
)
message("Here:")
message(${CUDA_LIBRARIES})
message(${CUDA_CUDA_LIBRARY})
#message(${CUDA_LIBRARY})
cuda_add_executable(
${PROJECT_NAME}_node
src/main.cpp
src/test.cu
src/test2.cu
)
add_dependencies(
${PROJECT_NAME}_node
${${PROJECT_NAME}_EXPORTED_TARGETS}
${catkin_EXPORTED_TARGETS}
)
## Specify libraries to link a library or executable target against
target_link_libraries(
${PROJECT_NAME}_node
${catkin_LIBRARIES}
${ZED_LIBRARIES}
${CUDA_LIBRARIES}
${CUDA_CUDA_LIBRARY}
/usr/local/cuda/lib64/libcublas_static.a
/usr/local/cuda/lib64/libcublas_device.a
/usr/local/cuda/lib64/libcudadevrt.a
)
Could anyone point out the issue for me?