Hi everyone,
I’m trying to use the deformable convolutions cpp extensions from the mmdetection repo 1 without a setup.py but by compiling them just in time with torch.utils.cpp_extension.load() as suggested here. However, I’m having some trouble giving the load() function the correct path.
My folder structure is as follows:
├── dcn
│   ├── deform_conv.py
│   ├── deform_pool.py
│   ├── __init__.py
│   └── src
│       ├── deform_conv_cuda.cpp
│       ├── deform_conv_cuda_kernel.cu
│       ├── deform_pool_cuda.cpp
│       └── deform_pool_cuda_kernel.cu
└── test_dcn.py

In test_dcn.py I import the deformable convolutions with from dcn import DeformConvPack and in the file deform_conv.py I inserted the following at the top:
# deform_conv.py

from torch.utils.cpp_extension import load
deform_conv_cuda = load(name='deform_conv_cuda', sources=['src/deform_conv_cuda.cpp', 'src/deform_conv_cuda_kernel.cu'])

# Rest of the code
# ...

I expected this to work but the compilation fails because the .cpp and .cu files cannot be found. If I instead specify the sources as 'dcn/src/deform_conv_cuda.cpp' and 'dcn/src/deform_conv_cuda_kernel.cu' it works.
Could someone explain me the logic behind this? Thank you very much =)