1、环境搭建
EPNet 基于PointRCNN框架,首先需要安装pointnet相关库。
编译过程要进行以下修改:
主要是改了三个模块的cpp代码。
PointRCNN/pointnet2_lib/pointnet2/src
PointRCNN/lib/utils/iou3d/src
PointRCNN/lib/utils/roipool3d/src
(1)将所有cpp文件中以下代码替换
#define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")
#define CHECK_CONTIGUOUS(x) AT_CHECK(x.is_contiguous(), #x, " must be contiguous ")
#define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x)
替换为
#define CHECK_CUDA(x) AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor")
#define CHECK_CONTIGUOUS(x) AT_ASSERTM(x.is_contiguous(), #x " must be contiguous")
#define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x)
//#define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")
//#define CHECK_CONTIGUOUS(x) AT_CHECK(x.is_contiguous(), #x, " must be contiguous ")
//#define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x)
#define CHECK_CUDA(x) AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor")
#define CHECK_CONTIGUOUS(x) AT_ASSERTM(x.is_contiguous(), #x " must be contiguous")
#define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x)
(2)将所有cpp文件中
以下两行注释 extern THCState *state;cudaStream_t stream = THCState_getCurrentStream(state);
修改为:
cudaStream_t stream = c10::cuda::getCurrentCUDAStream();
(3)执行 sh build_and_install.sh