Skip to content

linux build error: error: calling a constexpr __host__ function("ceil_div") from a __global__ function("nms_kernel") is not allowed. #2214

@qizhen816

Description

@qizhen816

When I build the latest torchvision with cuda 9.2, errors occur:

-- Caffe2: CUDA detected: 9.2
-- Caffe2: CUDA nvcc is: /usr/local/cuda/bin/nvcc
-- Caffe2: CUDA toolkit directory: /usr/local/cuda
-- Caffe2: Header version is: 9.2
-- Found cuDNN: v7.6.3  (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/libcudnn.so)
-- Autodetected CUDA architecture(s):  6.1 6.1 6.1 6.1
-- Added CUDA NVCC flags for: -gencode;arch=compute_61,code=sm_61
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/cxx_restful/vision/build
[  4%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/models/inception.cpp.o
[  8%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/models/mnasnet.cpp.o
[ 12%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/models/mobilenet.cpp.o
[ 16%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/models/resnet.cpp.o
[ 20%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/models/shufflenetv2.cpp.o
[ 25%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/models/squeezenet.cpp.o
[ 29%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/models/vgg.cpp.o
[ 33%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/cpu/DeformConv_cpu.cpp.o
[ 37%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/cpu/PSROIAlign_cpu.cpp.o
[ 41%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/cpu/PSROIPool_cpu.cpp.o
[ 45%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/cpu/ROIAlign_cpu.cpp.o
[ 50%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/cpu/ROIPool_cpu.cpp.o
[ 54%] Building CXX object CMakeFiles/torchvision.dir/torchvision/csrc/cpu/nms_cpu.cpp.o
[ 58%] Building CUDA object CMakeFiles/torchvision.dir/torchvision/csrc/cuda/DeformConv_cuda.cu.o
[ 62%] Building CUDA object CMakeFiles/torchvision.dir/torchvision/csrc/cuda/PSROIAlign_cuda.cu.o
[ 66%] Building CUDA object CMakeFiles/torchvision.dir/torchvision/csrc/cuda/PSROIPool_cuda.cu.o
[ 70%] Building CUDA object CMakeFiles/torchvision.dir/torchvision/csrc/cuda/ROIAlign_cuda.cu.o
[ 75%] Building CUDA object CMakeFiles/torchvision.dir/torchvision/csrc/cuda/ROIPool_cuda.cu.o
[ 79%] Building CUDA object CMakeFiles/torchvision.dir/torchvision/csrc/cuda/nms_cuda.cu.o
/mnt/cxx_restful/vision/torchvision/csrc/cuda/nms_cuda.cu(66): error: calling a constexpr __host__ function("ceil_div") from a __global__ function("nms_kernel") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

1 error detected in the compilation of "/tmp/tmpxft_00008508_00000000-6_nms_cuda.cpp1.ii".
CMakeFiles/torchvision.dir/build.make:338: recipe for target 'CMakeFiles/torchvision.dir/torchvision/csrc/cuda/nms_cuda.cu.o' failed
make[2]: *** [CMakeFiles/torchvision.dir/torchvision/csrc/cuda/nms_cuda.cu.o] Error 1
CMakeFiles/Makefile2:78: recipe for target 'CMakeFiles/torchvision.dir/all' failed
make[1]: *** [CMakeFiles/torchvision.dir/all] Error 2
Makefile:132: recipe for target 'all' failed
make: *** [all] Error 2

I checked cuda.cmake in libtorch and there is list(APPEND CUDA_NVCC_FLAGS "--expt-relaxed-constexpr"), apparently it didn't work. Any clue how to fix this?
CMakeLists.txt

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions