编译maskscoring_rcnn出现ROIAlign_cuda.cu(275): error: no instance of function template "THCCeilDiv"解决办法

问题描述

在安装官网上的教程编译maskscoring_rcnn时,在执行到最后一步python setup.py build develop,最后竟然出现了下面问题

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(275): error: no instance of function template "THCCeilDiv" matches the argument list
argument types are: (long long, long)

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(275): error: no instance of overloaded function "std::min" matches the argument list

argument types are: (, long)

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(320): error: no instance of function template "THCCeilDiv" matches the argument list

argument types are: (int64_t, long)

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(320): error: no instance of overloaded function "std::min" matches the argument list

argument types are: (, long)

4 errors detected in the compilation of "C:/Users/pazzu/AppData/Local/Temp/tmpxft_00003e80_00000000-10_ROIAlign_cuda.cpp1.ii".
error: command 'C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA\v10.0\bin\nvcc.exe' failed with exit status 1

多次尝试后,多次失败。

解决办法

在通过各方面搜索无果后,我换了一个网上搜索问题方式,并最终找到了解决办法,这里附上我参考的链接link.下面我稍微根据我的实际操作经验对其的小错误改一下。下面是我实验过程中的解决办法:

  1. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu第275行:
//原代码: dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
  1. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu第320行:
//原代码: dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));

  dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));
  1. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIPool_cuda.cu第129行:
// dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

  dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));
  1. 修改maskscoring_rcnn/maskrcnn_benchmark/csrc/cuda/ROIPool_cuda.cu第176行:
//dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));

  dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));

修改完毕后再执行python setup.py build develop即可

且行且珍惜

发布了44 篇原创文章 · 获赞 97 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44573410/article/details/104305034