PointCloudLibrary / PointCloudLibrary/pcl

GPU kinfu textures no longer supported on CUDA 12.0

Open
#5,571 3 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

kind: bug module: gpu status: triage
Dominant language
C++
Stars
11.1k
Forks
4.7k
Avg merge
4d 10h
Merged PRs (30d)
6

Description

Describe the bug

The GPU kinfu does not build with CUDA 12.0 because this version of CUDA dropped legacy texture references (specifically used in marching_cubes.cu).

Current Behavior

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(51): error: texture is not a template

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(52): error: texture is not a template

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(61): error: identifier "cudaBindTexture" is undefined

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(68): error: identifier "cudaUnbindTexture" is undefined

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(160): error: no instance of overloaded function "tex1Dfetch" matches the argument list
            argument types are: (<error-type>, int)

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(344): error: no instance of overloaded function "tex1Dfetch" matches the argument list
            argument types are: (<error-type>, int)

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(350): error: no instance of overloaded function "tex1Dfetch" matches the argument list
            argument types are: (<error-type>, int)

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(351): error: no instance of overloaded function "tex1Dfetch" matches the argument list
            argument types are: (<error-type>, int)

pcl/gpu/kinfu/src/cuda/marching_cubes.cu(352): error: no instance of overloaded function "tex1Dfetch" matches the argument list
            argument types are: (<error-type>, int)

9 errors detected in the compilation of "pcl/gpu/kinfu/src/cuda/marching_cubes.cu".

To Reproduce

docker run -it --rm nvidia/cuda:12.0.0-devel-ubuntu22.04
apt update && apt install -y git cmake libeigen3-dev libflann-dev libgl1-mesa-dev libboost-filesystem-dev libboost-date-time-dev libboost-iostreams-dev
git clone https://github.com/PointCloudLibrary/pcl.git
mkdir pcl/build && cd pcl/build
cmake -DBUILD_CUDA=ON -DBUILD_GPU=ON ..
make -j$(nproc)

Your Environment (please complete the following information):

  • OS: Ubuntu 22.04
  • Compiler: gcc 11.3.0
  • PCL Version: HEAD
  • CUDA version: 12.0

Possible Solution

Replace texture references with texture objects.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with pcl/gpu/kinfu/src/cuda/marching_cubes.cu and inspect the legacy texture references reported by the CUDA 12.0 compiler. Reproduce the failure in the provided nvidia/cuda:12.0.0-devel-ubuntu22.04 Docker environment using the listed CMake and make commands. Done means the GPU kinfu code builds successfully with CUDA 12.0.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-vision
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.