facebookresearch / facebookresearch/pytorch3d

Build fails with 'undefined reference' linker error on CUDA 13.0

Open
#2,011 2 comments 16 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.