Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generated struct named gaussianParticle_RawParameters_0 mismatches its usage #6

Closed
LeileiChui opened this issue Mar 21, 2025 · 5 comments · Fixed by #27
Closed

Generated struct named gaussianParticle_RawParameters_0 mismatches its usage #6

LeileiChui opened this issue Mar 21, 2025 · 5 comments · Fixed by #27
Assignees

Comments

@LeileiChui
Copy link

Hi,

While run the code, I noticed a discrepancy between the definition and the actual usage of the struct gaussianParticle_RawParameters_0. This mismatch is causing a compilation error during the training of 3DGUT.

Steps to Reproduce

python train.py --config-name apps/nerf_synthetic_3dgut.yaml path=data/nerf_synthetic/lego out_dir=runs experiment_name=lego_3dgut

Expected Behavior

In compiling native code stage, build extension module lib3dgut_cc should be successful.

Actual Behavior

$ python train.py --config-name apps/nerf_synthetic_3dgut.yaml path=data/nerf_synthetic/lego out_dir=runs experiment_name=lego_3dgut
[11:50:46] [INFO] Compiling native code..                                                                                                                                                                        logger.py:60
─────────────────────────────────────────────────────────────────────────────────────────────────────── Load Datasets ───────────────────────────────────────────────────────────────────────────────────────────────────────
Load Dataset (train) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% :: 🕒 Elapsed 0:00:03
Load Dataset (val) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% :: 🕒 Elapsed 0:00:03
───────────────────────────────────────────────────────────────────────────────────────────────────── Initialize Model ──────────────────────────────────────────────────────────────────────────────────────────────────────
Using <DELETED>/.cache/torch_extensions/py311_cu118 as PyTorch extensions root...
Creating extension directory <DELETED>/.cache/torch_extensions/py311_cu118/lib3dgut_cc...
Detected CUDA files, patching ldflags
Emitting ninja build file <DELETED>/.cache/torch_extensions/py311_cu118/lib3dgut_cc/build.ninja...
Building extension module lib3dgut_cc...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/5] /usr/bin/g++-11 -MMD -MF cudaBuffer.o.d -DTORCH_EXTENSION_NAME=lib3dgut_cc -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -I<DELETED>/3dgrut/threedgut_tracer/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies/fmt/include -I<DELETED>/.cache/torch_extensions/py311_cu118/lib3dgut_cc -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/torch/csrc/api/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/TH -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/THC -isystem /usr/local/cuda-11.8/include -isystem <DELETED>/.conda/envs/3dgrut/include/python3.11 -D_GLIBCXX_USE_CXX11_ABI=0 -fPIC -std=c++17 -DNVDR_TORCH -DTCNN_MIN_GPU_ARCH=70 -DPARTICLE_RADIANCE_NUM_COEFFS=16 -DGAUSSIAN_PARTICLE_KERNEL_DEGREE=2 -DGAUSSIAN_PARTICLE_MIN_KERNEL_DENSITY=0.0 -DGAUSSIAN_PARTICLE_MIN_ALPHA=0.00392156862745098 -DGAUSSIAN_PARTICLE_MAX_ALPHA=0.99 -DGAUSSIAN_MIN_TRANSMITTANCE_THRESHOLD=0.0001 -DGAUSSIAN_N_ROLLING_SHUTTER_ITERATIONS=5 -DGAUSSIAN_K_BUFFER_SIZE=0 -DGAUSSIAN_GLOBAL_Z_ORDER=true -DGAUSSIAN_UT_ALPHA=1.0 -DGAUSSIAN_UT_BETA=2.0 -DGAUSSIAN_UT_KAPPA=0.0 -DGAUSSIAN_UT_DELTA=1.7320508075688772 -DGAUSSIAN_UT_IN_IMAGE_MARGIN_FACTOR=0.1 -DGAUSSIAN_UT_REQUIRE_ALL_SIGMA_POINTS_VALID=false -DGAUSSIAN_RECT_BOUNDING=true -DGAUSSIAN_TIGHT_OPACITY_BOUNDING=true -DGAUSSIAN_TILE_BASED_CULLING=true -c <DELETED>/3dgrut/threedgut_tracer/src/cudaBuffer.cpp -o cudaBuffer.o 
[2/5] /usr/local/cuda-11.8/bin/nvcc  -ccbin /usr/bin/gcc-11 -DTORCH_EXTENSION_NAME=lib3dgut_cc -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -I<DELETED>/3dgrut/threedgut_tracer/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies/fmt/include -I<DELETED>/.cache/torch_extensions/py311_cu118/lib3dgut_cc -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/torch/csrc/api/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/TH -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/THC -isystem /usr/local/cuda-11.8/include -isystem <DELETED>/.conda/envs/3dgrut/include/python3.11 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 --compiler-options '-fPIC' -DNVDR_TORCH -DTCNN_MIN_GPU_ARCH=70 -std=c++17 --extended-lambda --expt-relaxed-constexpr -Xcompiler=-Wno-float-conversion -Xcompiler=-fno-strict-aliasing -U__CUDA_NO_HALF_OPERATORS__ -U__CUDA_NO_HALF_CONVERSIONS__ -U__CUDA_NO_BFLOAT16_CONVERSIONS__ -U__CUDA_NO_HALF2_OPERATORS__ -use_fast_math -DPARTICLE_RADIANCE_NUM_COEFFS=16 -DGAUSSIAN_PARTICLE_KERNEL_DEGREE=2 -DGAUSSIAN_PARTICLE_MIN_KERNEL_DENSITY=0.0 -DGAUSSIAN_PARTICLE_MIN_ALPHA=0.00392156862745098 -DGAUSSIAN_PARTICLE_MAX_ALPHA=0.99 -DGAUSSIAN_MIN_TRANSMITTANCE_THRESHOLD=0.0001 -DGAUSSIAN_N_ROLLING_SHUTTER_ITERATIONS=5 -DGAUSSIAN_K_BUFFER_SIZE=0 -DGAUSSIAN_GLOBAL_Z_ORDER=true -DGAUSSIAN_UT_ALPHA=1.0 -DGAUSSIAN_UT_BETA=2.0 -DGAUSSIAN_UT_KAPPA=0.0 -DGAUSSIAN_UT_DELTA=1.7320508075688772 -DGAUSSIAN_UT_IN_IMAGE_MARGIN_FACTOR=0.1 -DGAUSSIAN_UT_REQUIRE_ALL_SIGMA_POINTS_VALID=false -DGAUSSIAN_RECT_BOUNDING=true -DGAUSSIAN_TIGHT_OPACITY_BOUNDING=true -DGAUSSIAN_TILE_BASED_CULLING=true -c <DELETED>/3dgrut/threedgut_tracer/src/gutRenderer.cu -o gutRenderer.cuda.o 
FAILED: gutRenderer.cuda.o 
/usr/local/cuda-11.8/bin/nvcc  -ccbin /usr/bin/gcc-11 -DTORCH_EXTENSION_NAME=lib3dgut_cc -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -I<DELETED>/3dgrut/threedgut_tracer/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies/fmt/include -I<DELETED>/.cache/torch_extensions/py311_cu118/lib3dgut_cc -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/torch/csrc/api/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/TH -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/THC -isystem /usr/local/cuda-11.8/include -isystem <DELETED>/.conda/envs/3dgrut/include/python3.11 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 --compiler-options '-fPIC' -DNVDR_TORCH -DTCNN_MIN_GPU_ARCH=70 -std=c++17 --extended-lambda --expt-relaxed-constexpr -Xcompiler=-Wno-float-conversion -Xcompiler=-fno-strict-aliasing -U__CUDA_NO_HALF_OPERATORS__ -U__CUDA_NO_HALF_CONVERSIONS__ -U__CUDA_NO_BFLOAT16_CONVERSIONS__ -U__CUDA_NO_HALF2_OPERATORS__ -use_fast_math -DPARTICLE_RADIANCE_NUM_COEFFS=16 -DGAUSSIAN_PARTICLE_KERNEL_DEGREE=2 -DGAUSSIAN_PARTICLE_MIN_KERNEL_DENSITY=0.0 -DGAUSSIAN_PARTICLE_MIN_ALPHA=0.00392156862745098 -DGAUSSIAN_PARTICLE_MAX_ALPHA=0.99 -DGAUSSIAN_MIN_TRANSMITTANCE_THRESHOLD=0.0001 -DGAUSSIAN_N_ROLLING_SHUTTER_ITERATIONS=5 -DGAUSSIAN_K_BUFFER_SIZE=0 -DGAUSSIAN_GLOBAL_Z_ORDER=true -DGAUSSIAN_UT_ALPHA=1.0 -DGAUSSIAN_UT_BETA=2.0 -DGAUSSIAN_UT_KAPPA=0.0 -DGAUSSIAN_UT_DELTA=1.7320508075688772 -DGAUSSIAN_UT_IN_IMAGE_MARGIN_FACTOR=0.1 -DGAUSSIAN_UT_REQUIRE_ALL_SIGMA_POINTS_VALID=false -DGAUSSIAN_RECT_BOUNDING=true -DGAUSSIAN_TIGHT_OPACITY_BOUNDING=true -DGAUSSIAN_TILE_BASED_CULLING=true -c <DELETED>/3dgrut/threedgut_tracer/src/gutRenderer.cu -o gutRenderer.cuda.o 
<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies/fmt/include/fmt/core.h(288): warning #1675-D: unrecognized GCC pragma

<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(305): warning #174-D: expression has no effect

<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh(89): error: class "gaussianParticle_Parameters_0" has no member "density_1"
          detected during:
            instantiation of "const float &ShRadiativeGaussianVolumetricFeaturesParticles<TDensityParameters, TFeaturesParameters, Params, ExtParams, TDifferentiable>::opacity(const TDensityParameters &) const [with TDensityParameters=gaussianParticle_Parameters_0, TFeaturesParameters=shRadiativeParticle_Parameters_0, Params=model_InternalParams, ExtParams=model_ExternalParams, TDifferentiable=true]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(131): here
            instantiation of "__nv_bool GUTProjector<Particles, Params, UTParams>::unscentedParticleProjection(const tcnn::ivec2 &, const threedgut::TSensorModel &, const tcnn::vec3 &, const tcnn::mat4x3 &, const threedgut::TSensorState &, const Particles &, const Particles::DensityParameters &, tcnn::vec3 &, float &, tcnn::vec2 &, tcnn::vec3 &) [with Particles=model_Particles, Params=TGUTProjectorParams, UTParams=TGUTProjectionParams]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(249): here
            instantiation of "void GUTProjector<Particles, Params, UTParams>::eval(tcnn::uvec2, uint32_t, tcnn::ivec2, threedgut::TSensorModel, tcnn::vec3, tcnn::mat4x3, threedgut::TSensorState, uint32_t *, tcnn::vec2 *, tcnn::vec4 *, tcnn::vec2 *, float *, float *, threedgut::MemoryHandles) [with Particles=model_Particles, Params=TGUTProjectorParams, UTParams=TGUTProjectionParams]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutRenderer.cuh(36): here

<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh(76): error: class "gaussianParticle_Parameters_0" has no member "position_1"
          detected during:
            instantiation of "const tcnn::vec3 &ShRadiativeGaussianVolumetricFeaturesParticles<TDensityParameters, TFeaturesParameters, Params, ExtParams, TDifferentiable>::position(const TDensityParameters &) const [with TDensityParameters=gaussianParticle_Parameters_0, TFeaturesParameters=shRadiativeParticle_Parameters_0, Params=model_InternalParams, ExtParams=model_ExternalParams, TDifferentiable=true]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(136): here
            instantiation of "__nv_bool GUTProjector<Particles, Params, UTParams>::unscentedParticleProjection(const tcnn::ivec2 &, const threedgut::TSensorModel &, const tcnn::vec3 &, const tcnn::mat4x3 &, const threedgut::TSensorState &, const Particles &, const Particles::DensityParameters &, tcnn::vec3 &, float &, tcnn::vec2 &, tcnn::vec3 &) [with Particles=model_Particles, Params=TGUTProjectorParams, UTParams=TGUTProjectionParams]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(249): here
            instantiation of "void GUTProjector<Particles, Params, UTParams>::eval(tcnn::uvec2, uint32_t, tcnn::ivec2, threedgut::TSensorModel, tcnn::vec3, tcnn::mat4x3, threedgut::TSensorState, uint32_t *, tcnn::vec2 *, tcnn::vec4 *, tcnn::vec2 *, float *, float *, threedgut::MemoryHandles) [with Particles=model_Particles, Params=TGUTProjectorParams, UTParams=TGUTProjectionParams]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutRenderer.cuh(36): here

<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh(80): error: class "gaussianParticle_Parameters_0" has no member "scale_1"
          detected during:
            instantiation of "const tcnn::vec3 &ShRadiativeGaussianVolumetricFeaturesParticles<TDensityParameters, TFeaturesParameters, Params, ExtParams, TDifferentiable>::scale(const TDensityParameters &) const [with TDensityParameters=gaussianParticle_Parameters_0, TFeaturesParameters=shRadiativeParticle_Parameters_0, Params=model_InternalParams, ExtParams=model_ExternalParams, TDifferentiable=true]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(142): here
            instantiation of "__nv_bool GUTProjector<Particles, Params, UTParams>::unscentedParticleProjection(const tcnn::ivec2 &, const threedgut::TSensorModel &, const tcnn::vec3 &, const tcnn::mat4x3 &, const threedgut::TSensorState &, const Particles &, const Particles::DensityParameters &, tcnn::vec3 &, float &, tcnn::vec2 &, tcnn::vec3 &) [with Particles=model_Particles, Params=TGUTProjectorParams, UTParams=TGUTProjectionParams]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(249): here
            instantiation of "void GUTProjector<Particles, Params, UTParams>::eval(tcnn::uvec2, uint32_t, tcnn::ivec2, threedgut::TSensorModel, tcnn::vec3, tcnn::mat4x3, threedgut::TSensorState, uint32_t *, tcnn::vec2 *, tcnn::vec4 *, tcnn::vec2 *, float *, float *, threedgut::MemoryHandles) [with Particles=model_Particles, Params=TGUTProjectorParams, UTParams=TGUTProjectionParams]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutRenderer.cuh(36): here

<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh(72): error: class "gaussianParticle_RawParameters_0" has no member "position_0"
          detected during:
            instantiation of "tcnn::vec3 ShRadiativeGaussianVolumetricFeaturesParticles<TDensityParameters, TFeaturesParameters, Params, ExtParams, TDifferentiable>::fetchPosition(uint32_t) const [with TDensityParameters=gaussianParticle_Parameters_0, TFeaturesParameters=shRadiativeParticle_Parameters_0, Params=model_InternalParams, ExtParams=model_ExternalParams, TDifferentiable=true]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutProjector.cuh(415): here
            instantiation of "void GUTProjector<Particles, Params, UTParams>::evalBackward(tcnn::uvec2, uint32_t, tcnn::ivec2, threedgut::TSensorModel, tcnn::vec3, tcnn::mat4x3, const uint32_t *, threedgut::MemoryHandles, const tcnn::vec2 *, const tcnn::vec4 *, const float *, const float *, const float *, threedgut::MemoryHandles) [with Particles=model_Particles, Params=TGUTProjectorParams, UTParams=TGUTProjectionParams]" 
<DELETED>/3dgrut/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutRenderer.cuh(179): here

<DELETED>
.
.
.
<DELETED>

42 errors detected in the compilation of "<DELETED>/3dgrut/threedgut_tracer/src/gutRenderer.cu".
[3/5] /usr/bin/g++-11 -MMD -MF bindings.o.d -DTORCH_EXTENSION_NAME=lib3dgut_cc -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -I<DELETED>/3dgrut/threedgut_tracer/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies/fmt/include -I<DELETED>/.cache/torch_extensions/py311_cu118/lib3dgut_cc -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/torch/csrc/api/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/TH -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/THC -isystem /usr/local/cuda-11.8/include -isystem <DELETED>/.conda/envs/3dgrut/include/python3.11 -D_GLIBCXX_USE_CXX11_ABI=0 -fPIC -std=c++17 -DNVDR_TORCH -DTCNN_MIN_GPU_ARCH=70 -DPARTICLE_RADIANCE_NUM_COEFFS=16 -DGAUSSIAN_PARTICLE_KERNEL_DEGREE=2 -DGAUSSIAN_PARTICLE_MIN_KERNEL_DENSITY=0.0 -DGAUSSIAN_PARTICLE_MIN_ALPHA=0.00392156862745098 -DGAUSSIAN_PARTICLE_MAX_ALPHA=0.99 -DGAUSSIAN_MIN_TRANSMITTANCE_THRESHOLD=0.0001 -DGAUSSIAN_N_ROLLING_SHUTTER_ITERATIONS=5 -DGAUSSIAN_K_BUFFER_SIZE=0 -DGAUSSIAN_GLOBAL_Z_ORDER=true -DGAUSSIAN_UT_ALPHA=1.0 -DGAUSSIAN_UT_BETA=2.0 -DGAUSSIAN_UT_KAPPA=0.0 -DGAUSSIAN_UT_DELTA=1.7320508075688772 -DGAUSSIAN_UT_IN_IMAGE_MARGIN_FACTOR=0.1 -DGAUSSIAN_UT_REQUIRE_ALL_SIGMA_POINTS_VALID=false -DGAUSSIAN_RECT_BOUNDING=true -DGAUSSIAN_TIGHT_OPACITY_BOUNDING=true -DGAUSSIAN_TILE_BASED_CULLING=true -c <DELETED>/3dgrut/threedgut_tracer/bindings.cpp -o bindings.o 
[4/5] /usr/local/cuda-11.8/bin/nvcc  -ccbin /usr/bin/gcc-11 -DTORCH_EXTENSION_NAME=lib3dgut_cc -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -I<DELETED>/3dgrut/threedgut_tracer/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/include -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies -I<DELETED>/3dgrut/thirdparty/tiny-cuda-nn/dependencies/fmt/include -I<DELETED>/.cache/torch_extensions/py311_cu118/lib3dgut_cc -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/torch/csrc/api/include -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/TH -isystem <DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/include/THC -isystem /usr/local/cuda-11.8/include -isystem <DELETED>/.conda/envs/3dgrut/include/python3.11 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_89,code=compute_89 -gencode=arch=compute_89,code=sm_89 --compiler-options '-fPIC' -DNVDR_TORCH -DTCNN_MIN_GPU_ARCH=70 -std=c++17 --extended-lambda --expt-relaxed-constexpr -Xcompiler=-Wno-float-conversion -Xcompiler=-fno-strict-aliasing -U__CUDA_NO_HALF_OPERATORS__ -U__CUDA_NO_HALF_CONVERSIONS__ -U__CUDA_NO_BFLOAT16_CONVERSIONS__ -U__CUDA_NO_HALF2_OPERATORS__ -use_fast_math -DPARTICLE_RADIANCE_NUM_COEFFS=16 -DGAUSSIAN_PARTICLE_KERNEL_DEGREE=2 -DGAUSSIAN_PARTICLE_MIN_KERNEL_DENSITY=0.0 -DGAUSSIAN_PARTICLE_MIN_ALPHA=0.00392156862745098 -DGAUSSIAN_PARTICLE_MAX_ALPHA=0.99 -DGAUSSIAN_MIN_TRANSMITTANCE_THRESHOLD=0.0001 -DGAUSSIAN_N_ROLLING_SHUTTER_ITERATIONS=5 -DGAUSSIAN_K_BUFFER_SIZE=0 -DGAUSSIAN_GLOBAL_Z_ORDER=true -DGAUSSIAN_UT_ALPHA=1.0 -DGAUSSIAN_UT_BETA=2.0 -DGAUSSIAN_UT_KAPPA=0.0 -DGAUSSIAN_UT_DELTA=1.7320508075688772 -DGAUSSIAN_UT_IN_IMAGE_MARGIN_FACTOR=0.1 -DGAUSSIAN_UT_REQUIRE_ALL_SIGMA_POINTS_VALID=false -DGAUSSIAN_RECT_BOUNDING=true -DGAUSSIAN_TIGHT_OPACITY_BOUNDING=true -DGAUSSIAN_TILE_BASED_CULLING=true -c <DELETED>/3dgrut/threedgut_tracer/src/splatRaster.cu -o splatRaster.cuda.o 
ninja: build stopped: subcommand failed.
Error executing job with overrides: ['path=data/nerf_synthetic/lego', 'out_dir=runs', 'experiment_name=lego_3dgut']
Traceback (most recent call last):
  File "<DELETED>/3dgrut/threedgut_tracer/tracer.py", line 41, in load_3dgut_plugin
    from . import lib3dgut_cc as tdgut  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: cannot import name 'lib3dgut_cc' from 'threedgut_tracer' (<DELETED>/3dgrut/threedgut_tracer/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/utils/cpp_extension.py", line 2100, in _run_ninja_build
    subprocess.run(
  File "<DELETED>/.conda/envs/3dgrut/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<DELETED>/3dgrut/train.py", line 39, in main
    trainer = Trainer3DGRUT(conf)
              ^^^^^^^^^^^^^^^^^^^
  File "<DELETED>/.conda/envs/3dgrut/lib/python3.11/contextlib.py", line 81, in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "<DELETED>/3dgrut/threedgrut/trainer.py", line 128, in __init__
    self.init_model(conf, self.scene_extent)
  File "<DELETED>/3dgrut/threedgrut/trainer.py", line 178, in init_model
    self.model = MixtureOfGaussians(conf, scene_extent=scene_extent)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<DELETED>/3dgrut/threedgrut/model/model.py", line 154, in __init__
    self.renderer = threedgut_tracer.Tracer(conf)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<DELETED>/3dgrut/threedgut_tracer/tracer.py", line 289, in __init__
    load_3dgut_plugin(conf)
  File "<DELETED>/3dgrut/threedgut_tracer/tracer.py", line 45, in load_3dgut_plugin
    setup_3dgut(conf)
  File "<DELETED>/3dgrut/threedgut_tracer/setup_3dgut.py", line 163, in setup_3dgut
    torch.utils.cpp_extension.load(
  File "<DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/utils/cpp_extension.py", line 1308, in load
    return _jit_compile(
           ^^^^^^^^^^^^^
  File "<DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/utils/cpp_extension.py", line 1710, in _jit_compile
    _write_ninja_file_and_build_library(
  File "<DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/utils/cpp_extension.py", line 1823, in _write_ninja_file_and_build_library
    _run_ninja_build(
  File "<DELETED>/.conda/envs/3dgrut/lib/python3.11/site-packages/torch/utils/cpp_extension.py", line 2116, in _run_ninja_build
    raise RuntimeError(message) from e
RuntimeError: Error building extension 'lib3dgut_cc'

Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace.

Possible Solution

  • Review the compile op of threedgut.slang

    subprocess.check_call(
    [
    "slangc", "-target", "cuda",
    "-I", os.path.join(os.path.dirname(__file__), "include"),
    "-I", os.path.join(os.path.dirname(__file__), "..", "threedgrt_tracer", "include"),
    "-line-directive-mode", "none",
    "-matrix-layout-row-major", # NB : this is required for cuda target
    "-Wno-41018",
    "-O2",
    *defines,
    f"{os.path.join(slang_build_inc_dir,'threedgut.slang')}",
    "-o", f"{os.path.join(build_dir,'threedgutSlang.cuh')}",
    ],
    env=slang_build_env,
    )

  • Alternatively, if the current definition is intentional, update the usage to align with the definition.
@moennen
Copy link
Collaborator

moennen commented Mar 21, 2025

Could you please :

  • paste the content of the compiled slang (threedgrt_tracer/include/3dgrt/kernels/slang/gaussianParticles.cuh).
  • execute the following script in your conda environment :
import importlib
import os
import subprocess
slang_mod = importlib.import_module("slangtorch")
slang_dir = os.path.dirname(slang_mod.__file__)
slang_build_env = os.environ
slang_build_env["PATH"] += ";" if os.name == "nt" else ":"
slang_build_env["PATH"] += os.path.join(slang_dir, "bin")
slang_build_inc_dir = os.path.join(os.path.dirname(__file__), "include", "3dgut")

subprocess.check_call(["slangc", "-v"])

This will give me the version of the slang compiler setup.
Thanks !

@LeileiChui
Copy link
Author

I'm sorry, due to information security regulations, I am unable to upload files. However, I can confirm that the version of slangc is 2025.6.1. 3dgrt runs well, but 3dgut fails to compile. After manually correcting the usage of gaussianParticle_RawParameters_0 in threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh and threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutKBufferRenderer.cuh, the compilation succeeded and it runs well.

gaussianParticle_RawParameters_0 of threedgrt_tracer/include/3dgrt/kernels/slang/gaussianParticles.cuh

struct gaussianParticle_RawParameters_0
{
    float3  position_1;
    float density_1;
    float4  quaternion_0;
    float3  scale_1;
    float padding_0;
};

patch

diff --git a/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh b/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh
index 3d5c6a8..ab2a45a 100644
--- a/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh
+++ b/threedgut_tracer/include/3dgut/kernels/cuda/models/shRadiativeGaussianParticles.cuh
@@ -69,15 +69,15 @@ struct ShRadiativeGaussianVolumetricFeaturesParticles : Params, public ExtParams
     }
 
     __forceinline__ __device__ tcnn::vec3 fetchPosition(uint32_t particleIdx) const {
-        return *(reinterpret_cast<const tcnn::vec3*>(&m_densityRawParameters.ptr[particleIdx].position_0));
+        return *(reinterpret_cast<const tcnn::vec3*>(&m_densityRawParameters.ptr[particleIdx].position_1));
     }
 
     __forceinline__ __device__ const tcnn::vec3& position(const TDensityParameters& parameters) const {
-        return *(reinterpret_cast<const tcnn::vec3*>(&parameters.position_1));
+        return *(reinterpret_cast<const tcnn::vec3*>(&parameters.position_0));
     }
 
     __forceinline__ __device__ const tcnn::vec3& scale(const TDensityParameters& parameters) const {
-        return *(reinterpret_cast<const tcnn::vec3*>(&parameters.scale_1));
+        return *(reinterpret_cast<const tcnn::vec3*>(&parameters.scale_0));
     }
 
     __forceinline__ __device__ const tcnn::mat3& rotation(const TDensityParameters& parameters) const {
@@ -86,7 +86,7 @@ struct ShRadiativeGaussianVolumetricFeaturesParticles : Params, public ExtParams
     }
 
     __forceinline__ __device__ const float& opacity(const TDensityParameters& parameters) const {
-        return parameters.density_1;
+        return parameters.density_0;
     }
 
     __forceinline__ __device__ bool densityHit(const tcnn::vec3& rayOrigin,
@@ -433,45 +433,45 @@ struct ShRadiativeGaussianVolumetricFeaturesParticles : Params, public ExtParams
             // Perform warp reduction
 #pragma unroll
             for (int mask = 1; mask < warpSize; mask *= 2) {
-                densityRawParameters.position_0.x += __shfl_xor_sync(0xffffffff, densityRawParameters.position_0.x, mask);
-                densityRawParameters.position_0.y += __shfl_xor_sync(0xffffffff, densityRawParameters.position_0.y, mask);
-                densityRawParameters.position_0.z += __shfl_xor_sync(0xffffffff, densityRawParameters.position_0.z, mask);
-                densityRawParameters.density_0 += __shfl_xor_sync(0xffffffff, densityRawParameters.density_0, mask);
+                densityRawParameters.position_1.x += __shfl_xor_sync(0xffffffff, densityRawParameters.position_1.x, mask);
+                densityRawParameters.position_1.y += __shfl_xor_sync(0xffffffff, densityRawParameters.position_1.y, mask);
+                densityRawParameters.position_1.z += __shfl_xor_sync(0xffffffff, densityRawParameters.position_1.z, mask);
+                densityRawParameters.density_1 += __shfl_xor_sync(0xffffffff, densityRawParameters.density_1, mask);
                 densityRawParameters.quaternion_0.x += __shfl_xor_sync(0xffffffff, densityRawParameters.quaternion_0.x, mask);
                 densityRawParameters.quaternion_0.y += __shfl_xor_sync(0xffffffff, densityRawParameters.quaternion_0.y, mask);
                 densityRawParameters.quaternion_0.z += __shfl_xor_sync(0xffffffff, densityRawParameters.quaternion_0.z, mask);
                 densityRawParameters.quaternion_0.w += __shfl_xor_sync(0xffffffff, densityRawParameters.quaternion_0.w, mask);
-                densityRawParameters.scale_0.x += __shfl_xor_sync(0xffffffff, densityRawParameters.scale_0.x, mask);
-                densityRawParameters.scale_0.y += __shfl_xor_sync(0xffffffff, densityRawParameters.scale_0.y, mask);
-                densityRawParameters.scale_0.z += __shfl_xor_sync(0xffffffff, densityRawParameters.scale_0.z, mask);
+                densityRawParameters.scale_1.x += __shfl_xor_sync(0xffffffff, densityRawParameters.scale_1.x, mask);
+                densityRawParameters.scale_1.y += __shfl_xor_sync(0xffffffff, densityRawParameters.scale_1.y, mask);
+                densityRawParameters.scale_1.z += __shfl_xor_sync(0xffffffff, densityRawParameters.scale_1.z, mask);
             }
 
             // First thread in the warp performs the atomic add
             if ((tileThreadIdx & (warpSize - 1)) == 0) {
-                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_0.x, densityRawParameters.position_0.x);
-                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_0.y, densityRawParameters.position_0.y);
-                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_0.z, densityRawParameters.position_0.z);
-                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].density_0, densityRawParameters.density_0);
+                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_1.x, densityRawParameters.position_1.x);
+                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_1.y, densityRawParameters.position_1.y);
+                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_1.z, densityRawParameters.position_1.z);
+                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].density_1, densityRawParameters.density_1);
                 atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.x, densityRawParameters.quaternion_0.x);
                 atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.y, densityRawParameters.quaternion_0.y);
                 atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.z, densityRawParameters.quaternion_0.z);
                 atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.w, densityRawParameters.quaternion_0.w);
-                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_0.x, densityRawParameters.scale_0.x);
-                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_0.y, densityRawParameters.scale_0.y);
-                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_0.z, densityRawParameters.scale_0.z);
+                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_1.x, densityRawParameters.scale_1.x);
+                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_1.y, densityRawParameters.scale_1.y);
+                atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_1.z, densityRawParameters.scale_1.z);
             }
         } else {
-            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_0.x, densityRawParameters.position_0.x);
-            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_0.y, densityRawParameters.position_0.y);
-            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_0.z, densityRawParameters.position_0.z);
-            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].density_0, densityRawParameters.density_0);
+            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_1.x, densityRawParameters.position_1.x);
+            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_1.y, densityRawParameters.position_1.y);
+            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].position_1.z, densityRawParameters.position_1.z);
+            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].density_1, densityRawParameters.density_1);
             atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.x, densityRawParameters.quaternion_0.x);
             atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.y, densityRawParameters.quaternion_0.y);
             atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.z, densityRawParameters.quaternion_0.z);
             atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].quaternion_0.w, densityRawParameters.quaternion_0.w);
-            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_0.x, densityRawParameters.scale_0.x);
-            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_0.y, densityRawParameters.scale_0.y);
-            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_0.z, densityRawParameters.scale_0.z);
+            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_1.x, densityRawParameters.scale_1.x);
+            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_1.y, densityRawParameters.scale_1.y);
+            atomicAdd(&m_densityRawParameters.gradPtr[particleIdx].scale_1.z, densityRawParameters.scale_1.z);
         }
     }
 
diff --git a/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutKBufferRenderer.cuh b/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutKBufferRenderer.cuh
index 23536c5..e38d088 100644
--- a/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutKBufferRenderer.cuh
+++ b/threedgut_tracer/include/3dgut/kernels/cuda/renderers/gutKBufferRenderer.cuh
@@ -340,10 +340,10 @@ struct GUTKBufferRenderer : Params {
                 }
 
                 DensityRawParameters densityRawParametersGrad;
-                densityRawParametersGrad.density_0    = 0.0f;
-                densityRawParametersGrad.position_0   = make_float3(0.0f);
+                densityRawParametersGrad.density_1    = 0.0f;
+                densityRawParametersGrad.position_1   = make_float3(0.0f);
                 densityRawParametersGrad.quaternion_0 = make_float4(0.0f);
-                densityRawParametersGrad.scale_0      = make_float3(0.0f);
+                densityRawParametersGrad.scale_1      = make_float3(0.0f);
 
                 TFeaturesVec featuresGrad = TFeaturesVec::zero();

@moennen
Copy link
Collaborator

moennen commented Mar 24, 2025

Thanks a lot for the feedback.

Slang version installed in the conda environment (through slangtorch) is 2024.17.
With this version the cuda output is
struct gaussianParticle_RawParameters_0 { float3 position_0; float density_0; float4 quaternion_0; float3 scale_0; float padding_0; };

If the Slang version is the issue (to be validated), we should refactor the code to alias this struct.

@zgojcic
Copy link
Collaborator

zgojcic commented Mar 25, 2025

I was able to recreate this error with slangtorch==1.3.7 one solution is to run:

pip uninstall slangtorch
pip install slangtorch==1.3.4

from within the conda environment

@LeileiChui
Copy link
Author

LeileiChui commented Mar 26, 2025

I am now certain that the problem is due to a mismatch of the slangc version. However, the 1.3.4 version of slangtorch does not work for me, as the accompanying slangc version is still 2025.6.1 on my system.

slangtorch-1.3.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants