Environment
Operating System: debian13
Version / Commit SHA: OpenVDB 13.0.0 (release)
CMake Version: 3.31.6
Compiler: clang 19.1.7 (g++-14 as a reference)
Cuda: V13.1.80
Describe the problem
I'm trying to build OpenVDB as a standalone with NanoVDB and the NanoVDB examples.
Using Clang 19 as a compiler, I encounter numerous compilation issues with the CUDA-specific examples. The error usually indicates an undefined symbol related to nanovdb::GridHandle, such as:
error: undefined symbol: nanovdb::GridHandle<nanovdb::cuda::DeviceBuffer>::GridHandle<nanovdb::cuda::DeviceBuffer, 0>(nanovdb::cuda::DeviceBuffer&&)
Additional context
I don't have any issues when running simple CUDA kernels or using a cuda kernal that reads and prints values from a nanovdb grid provided that I don't use the CreateNanoGrid and similar functions that call the move constructor of nanovdb::GridHandlenanovdb::cuda::DeviceBuffer. It seems that in this setup, the symbol is not exported by the nvcc-compiled object file .cu.o even though GridHandle.cuh should instantiate the move constructor.
Also, using g++-14 in my environment, the examples compile without issue.
Environment
Operating System: debian13
Version / Commit SHA: OpenVDB 13.0.0 (release)
CMake Version: 3.31.6
Compiler: clang 19.1.7 (g++-14 as a reference)
Cuda: V13.1.80
Describe the problem
I'm trying to build OpenVDB as a standalone with NanoVDB and the NanoVDB examples.
Using Clang 19 as a compiler, I encounter numerous compilation issues with the CUDA-specific examples. The error usually indicates an undefined symbol related to
nanovdb::GridHandle, such as:Additional context
I don't have any issues when running simple CUDA kernels or using a cuda kernal that reads and prints values from a nanovdb grid provided that I don't use the CreateNanoGrid and similar functions that call the move constructor of nanovdb::GridHandlenanovdb::cuda::DeviceBuffer. It seems that in this setup, the symbol is not exported by the nvcc-compiled object file .cu.o even though GridHandle.cuh should instantiate the move constructor.
Also, using g++-14 in my environment, the examples compile without issue.