I am calling a cuda kernel function inside a void c++function from a .cu file, but my compiler error
expected primary-expression before ‘<’ token
Integrate <<< voxel_grid_dim_z, voxel_grid_dim_y >>>
this is my main.cpp file
#include "../Cuda/tsdf.cu"
computeTSDF(..)
this is my tsdf.cu file
#include "device_launch_parameters.h"
#include <cuda.h>
#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
__global__"
void Integrate(..){.. }
void computeTSDF (..){ Integrate <<< voxel_grid_dim_z, voxel_grid_dim_y >>>(..)}
this is my cmakelist.txt
cmake_minimum_required(VERSION 3.1)
project( reconstruction )
find_package( OpenCV REQUIRED )
find_package( PCL 1.8 REQUIRED)
find_package(CUDA REQUIRED)
set(CUDA_HOST_COMPILER "c++")
set(CUDA_PROPAGATE_HOST_FLAGS OFF)
set_directory_properties( PROPERTIES COMPILE_DEFINITIONS "" )
include_directories(
${OpenCV_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
${CUDA_INCLUDE_DIRS}
${Pangolin_INCLUDE_DIRS}
${EIGEN_INCLUDE_DIRS}
${Sophus_INCLUDE_DIR}
include
)
set(cuda_libs
${CUDA_LIBRARIES} cudnn ${CUDA_curand_LIBRARY} ${CUDA_cudart_LIBRARY} ${CUDA_cublas_LIBRARY} ${CUDA_cudnn_LIBRARY} ${CUDA_cudadevrt_LIBRARY}
)
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
file(GLOB SOURCES src/*.cpp src/*.cc include/*.h)
file(GLOB cuda_files Cuda/*.cu)
file(GLOB containers Cuda/containers/*.cpp Cuda/containers/*.hpp)
set(CUDA_ARCH_BIN " 35 " CACHE STRING "Specify 'real' GPU arch to build binaries for, BIN(PTX) format is supported. Example: 1.3 2.1(1.3) or 13 21(13)")
set(CUDA_ARCH_PTX "" CACHE STRING "Specify 'virtual' PTX arch to build PTX intermediate code for. Example: 1.0 1.2 or 10 12")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
include(CudaComputeTargetFlags.cmake)
APPEND_TARGET_ARCH_FLAGS()
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;-fPIC;-std=c++11")
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "--ftz=true;--prec-div=false;--prec-sqrt=false; -rdc=true")
CUDA_COMPILE(cuda_objs ${cuda_files} )
set(CMAKE_CXX_FLAGS "-O3 -msse2 -msse3 -Wall -std=c++11")
cuda_add_executable(ttest ${SOURCES} ${cuda_files} ${cuda_objs} ${containers} )
target_link_libraries( ttest ${OpenCV_LIBS} ${pcl_libs}
${Pangolin_LIBRARIES} ${Eigen_LIBRARIES} ${cuda_libs})
it seems my compiler cannot identify computeTSDF as a cuda function even thougth i change the extetion to .cu file.
Can i call the cuda kernel function from my void c++ function in the same .cu file?