facebookresearch / facebookresearch/pytorch3d
Build fails with 'undefined reference' linker error on CUDA 13.0
- Dominant language
- Python
- Stars
- 10k
- Forks
- 1.5k
- PR merge metrics
- No merged PRs in 30d
Description
CUDA 13.0 introduces breaking symbol default visibility changes resulting in linker errors not finding some symbols.
The changes are described in this post: [CUDA C++ Compiler Updates Impacting ELF Visibility and Linkage](https://developer.nvidia.com/blog/cuda-c-compiler-updates-impacting-elf-visibility-and-linkage/).
## Workaround
As suggested in above blog post, the old behavior can be brought back with an NVCC flag until it is fixed in the pytorch3d source.
```
NVCC_FLAGS="-static-global-template-stub=false" pip install git+https://github.com/facebookresearch/pytorch3d.git@stable
```
## Error Reproduction
In an ubuntu 24.04 docker image like `nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04`
```
docker run --rm -it nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04 bash
apt update && apt install python3.12 python3.12-venv
python3 -m venv testenv
source testenv/bin/activate
pip install https://download.pytorch.org/whl/cu130/torch-2.9.0%2Bcu130-cp312-cp312-manylinux_2_28_x86_64.whl
pip install --no-build-isolation git+https://github.com/facebookresearch/pytorch3d.git@stable
```
Error log:
```
aarch64-linux-gnu-g++ -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -shared -Wl,-O1 -Wl,-Bsymbolic-functions /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/ball_query/ball_query.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/ball_query/ball_query_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/blending/sigmoid_alpha_blend.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/blending/sigmoid_alpha_blend_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/compositing/alpha_composite.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/compositing/alpha_composite_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/compositing/norm_weighted_sum.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/compositing/norm_weighted_sum_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/compositing/weighted_sum.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/compositing/weighted_sum_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/ext.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/face_areas_normals/face_areas_normals.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/face_areas_normals/face_areas_normals_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/gather_scatter/gather_scatter.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/gather_scatter/gather_scatter_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/interp_face_attrs/interp_face_attrs.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/iou_box3d/iou_box3d.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/iou_box3d/iou_box3d_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/knn/knn.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/knn/knn_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/marching_cubes/marching_cubes.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/marching_cubes/marching_cubes_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/mesh_normal_consistency/mesh_normal_consistency_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/packed_to_padded_tensor/packed_to_padded_tensor.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/packed_to_padded_tensor/packed_to_padded_tensor_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/point_mesh/point_mesh_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/point_mesh/point_mesh_cuda.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/points_to_volumes/points_to_volumes.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/points_to_volumes/points_to_volumes_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.backward.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.backward_dbg.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.calc_gradients.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.calc_signature.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.construct.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.create_selector.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.destruct.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.fill_bg.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.forward.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.norm_cam_gradients.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.norm_sphere_gradients.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.render.gpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.backward.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.backward_dbg.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.calc_gradients.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.calc_signature.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.construct.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.create_selector.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.destruct.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.fill_bg.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.forward.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.norm_cam_gradients.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.norm_sphere_gradients.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/host/renderer.render.cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/pytorch/camera.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/pytorch/renderer.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/pytorch/tensor_util.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/pytorch/util.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/warnings.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/rasterize_coarse/rasterize_coarse.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/rasterize_meshes/rasterize_meshes.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/rasterize_meshes/rasterize_meshes_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/rasterize_points/rasterize_points.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/rasterize_points/rasterize_points_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/sample_farthest_points/sample_farthest_points.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/sample_farthest_points/sample_farthest_points_cpu.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/sample_pdf/sample_pdf.o /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/sample_pdf/sample_pdf_cpu.o -L/root/.cache/pypoetry/virtualenvs/lyte-docker-xS3fZVNL-py3.12/lib/python3.12/site-packages/torch/lib -L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu -lc10 -ltorch -ltorch_cpu -ltorch_python -lcudart -lc10_cuda -ltorch_cuda -o build/lib.linux-aarch64-cpython-312/pytorch3d/_C.cpython-312-aarch64-linux-gnu.so
/usr/bin/ld: /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.backward.gpu.o: in function `void pulsar::Renderer::backward(pulsar::Renderer::Renderer*, float const*, float const*, float const*, float const*, float const*, float const*, pulsar::CamInfo const&, float const&, float, unsigned int const&, float const*, unsigned long const&, unsigned int const&, bool const&, bool const&, bool const&, bool const&, bool const&, CUstream_st*)':
tmpxft_000011d2_00000000-6_renderer.backward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st[_ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st]+0x7ec): undefined reference to `void pulsar::Renderer::calc_signature(pulsar::Renderer::Renderer, float3 const*, float const*, float const*, unsigned int)'
/usr/bin/ld: tmpxft_000011d2_00000000-6_renderer.backward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st[_ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st]+0xbd0): undefined reference to `void pulsar::Renderer::calc_gradients(pulsar::CamInfo, float const*, float, float3 const*, float const*, float const*, float const*, unsigned int, float const*, float const*, pulsar::Renderer::DrawInfo const*, pulsar::Renderer::IntersectInfo const*, bool, bool, bool, bool, bool, float*, float*, float3*, pulsar::CamGradInfo*, float*, int*, int, unsigned int, unsigned int)'
/usr/bin/ld: tmpxft_000011d2_00000000-6_renderer.backward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st[_ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st]+0xcfc): undefined reference to `void pulsar::Renderer::norm_sphere_gradients(pulsar::Renderer::Renderer, int)'
/usr/bin/ld: tmpxft_000011d2_00000000-6_renderer.backward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st[_ZN6pulsar8Renderer8backwardILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_P11CUstream_st]+0xeec): undefined reference to `void pulsar::Renderer::norm_cam_gradients(pulsar::Renderer::Renderer)'
/usr/bin/ld: /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.backward_dbg.gpu.o: in function `void pulsar::Renderer::backward_dbg(pulsar::Renderer::Renderer*, float const*, float const*, float const*, float const*, float const*, float const*, pulsar::CamInfo const&, float const&, float, unsigned int const&, float const*, unsigned long const&, unsigned int const&, bool const&, bool const&, bool const&, bool const&, bool const&, unsigned int const&, unsigned int const&, CUstream_st*)':
tmpxft_0000128d_00000000-6_renderer.backward_dbg.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer12backward_dbgILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_SB_SB_P11CUstream_st[_ZN6pulsar8Renderer12backward_dbgILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_SB_SB_P11CUstream_st]+0x8a8): undefined reference to `void pulsar::Renderer::calc_signature(pulsar::Renderer::Renderer, float3 const*, float const*, float const*, unsigned int)'
/usr/bin/ld: tmpxft_0000128d_00000000-6_renderer.backward_dbg.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer12backward_dbgILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_SB_SB_P11CUstream_st[_ZN6pulsar8Renderer12backward_dbgILb1EEEvPNS0_8RendererEPKfS5_S5_S5_S5_S5_RKNS_7CamInfoERS4_fRKjS5_RKmSB_RKbSF_SF_SF_SF_SB_SB_P11CUstream_st]+0xcac): undefined reference to `void pulsar::Renderer::calc_gradients(pulsar::CamInfo, float const*, float, float3 const*, float const*, float const*, float const*, unsigned int, float const*, float const*, pulsar::Renderer::DrawInfo const*, pulsar::Renderer::IntersectInfo const*, bool, bool, bool, bool, bool, float*, float*, float3*, pulsar::CamGradInfo*, float*, int*, int, unsigned int, unsigned int)'
/usr/bin/ld: /tmp/pip-req-build-nj5pu1g5/build/temp.linux-aarch64-cpython-312/tmp/pip-req-build-nj5pu1g5/pytorch3d/csrc/pulsar/gpu/renderer.forward.gpu.o: in function `void pulsar::Renderer::forward(pulsar::Renderer::Renderer*, float const*, float const*, float const*, pulsar::CamInfo const&, float const&, float, unsigned int const&, float const*, float const*, unsigned long const&, unsigned int const&, CUstream_st*)':
tmpxft_0000151a_00000000-6_renderer.forward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st[_ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st]+0x82c): undefined reference to `void pulsar::Renderer::calc_signature(pulsar::Renderer::Renderer, float3 const*, float const*, float const*, unsigned int)'
/usr/bin/ld: tmpxft_0000151a_00000000-6_renderer.forward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st[_ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st]+0xd00): undefined reference to `void pulsar::Renderer::create_selector(pulsar::Renderer::IntersectInfo const*, unsigned int, int, int, int, int, char*)'
/usr/bin/ld: tmpxft_0000151a_00000000-6_renderer.forward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st[_ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st]+0x3b08): undefined reference to `void pulsar::Renderer::render(unsigned long const*, pulsar::Renderer::IntersectInfo const*, pulsar::Renderer::DrawInfo const*, float const*, int const*, float const*, pulsar::CamInfo, float, float, unsigned int, float const*, unsigned int, int, int, int, int, float*, float*, int)'
/usr/bin/ld: tmpxft_0000151a_00000000-6_renderer.forward.gpu.cudafe1.cpp:(.text._ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st[_ZN6pulsar8Renderer7forwardILb1EEEvPNS0_8RendererEPKfS5_S5_RKNS_7CamInfoERS4_fRKjS5_S5_RKmSB_P11CUstream_st]+0x3d74): undefined reference to `void pulsar::Renderer::fill_bg(pulsar::Renderer::Renderer, pulsar::CamInfo, float const*, float, unsigned int)'
/usr/bin/ld: build/lib.linux-aarch64-cpython-312/pytorch3d/_C.cpython-312-aarch64-linux-gnu.so: hidden symbol `_ZN6pulsar8Renderer7fill_bgILb1EEEvNS0_8RendererENS_7CamInfoEPKffj' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
error: command '/usr/bin/aarch64-linux-gnu-g++' failed with exit code 1
```
Contributor guide
Assessment
This issue has not been assessed yet.