pytorch3d icon indicating copy to clipboard operation
pytorch3d copied to clipboard

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

Open msplr opened this issue 2 months ago • 2 comments

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.

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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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<true>(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

msplr avatar Oct 31 '25 09:10 msplr