NVIDIA / VisRTX

NVIDIA OptiX based implementation of ANARI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Compiling failed on Linux with GCC 11.4 and NVCC 11.5

sxsong1207 opened this issue · comments

I have struggled to compile the VisRTX on my Linux computer for days. The GCC error message is very ambiguous that is impossible to locate the issue as the log is shown below. I cannot find template usage in those geometry/*.cu files.

Version

0.7.1 and 0.7.0
Tried NVIDIA-OptiX-SDK-7.6.0-linux64-x86_64 and NVIDIA-OptiX-SDK-8.0.0-linux64-x86_64

Build Environment

$ cmake --version
cmake version 3.22.1

$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

$ nvcc --version 
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0

$ nvidia-smi 
| NVIDIA-SMI 525.147.05   Driver Version: 525.147.05   CUDA Version: 12.0     |
Graphics Processor: NVIDIA GeForce RTX 3060 Ti

$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description:    Linux Mint 21.2
Release:        21.2
Codename:       victoria

Compile Output

[1/8] Building CUDA object devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/space_skipping/UniformGrid.cu.o
FAILED: devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/space_skipping/UniformGrid.cu.o 
/usr/bin/nvcc -forward-unknown-to-host-compiler -DVISRTX_PARALLEL_MODULE_BUILD -DVISRTX_VERSION_MAJOR=0 -DVISRTX_VERSION_MINOR=7 -DVISRTX_VERSION_PATCH=0 -Danari_library_visrtx_EXPORTS -Dvisrtx_EXPORTS -IVisRTX_src/devices/rtx -IVisRTX_build/devices/rtx -IVisRTX_src/devices/rtx/include -isystem include -isystem include/anari/backend -isystem VisRTX_src/external/glm/include -isystem /home/sxs/.local/opt/NVIDIA-OptiX-SDK-7.6.0-linux64-x86_64/include -O3 -DNDEBUG -std=c++17 -Xcompiler=-fPIC -MD -MT devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/space_skipping/UniformGrid.cu.o -MF devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/space_skipping/UniformGrid.cu.o.d -x cu -c VisRTX_src/devices/rtx/scene/volume/space_skipping/UniformGrid.cu -o devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/space_skipping/UniformGrid.cu.o
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                                                                                 ^ 
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                                                                                  ^ 
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
[2/8] Building CUDA object devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/spatial_field/StructuredRegularField.cu.o
FAILED: devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/spatial_field/StructuredRegularField.cu.o 
/usr/bin/nvcc -forward-unknown-to-host-compiler -DVISRTX_PARALLEL_MODULE_BUILD -DVISRTX_VERSION_MAJOR=0 -DVISRTX_VERSION_MINOR=7 -DVISRTX_VERSION_PATCH=0 -Danari_library_visrtx_EXPORTS -Dvisrtx_EXPORTS -IVisRTX_src/devices/rtx -IVisRTX_build/devices/rtx -IVisRTX_src/devices/rtx/include -isystem include -isystem include/anari/backend -isystem VisRTX_src/external/glm/include -isystem /home/sxs/.local/opt/NVIDIA-OptiX-SDK-7.6.0-linux64-x86_64/include -O3 -DNDEBUG -std=c++17 -Xcompiler=-fPIC -MD -MT devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/spatial_field/StructuredRegularField.cu.o -MF devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/spatial_field/StructuredRegularField.cu.o.d -x cu -c VisRTX_src/devices/rtx/scene/volume/spatial_field/StructuredRegularField.cu -o devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/volume/spatial_field/StructuredRegularField.cu.o
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                                                                                 ^ 
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                                                                                  ^ 
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
[3/8] Building CUDA object devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Denoiser.cu.o
FAILED: devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Denoiser.cu.o 
/usr/bin/nvcc -forward-unknown-to-host-compiler -DVISRTX_PARALLEL_MODULE_BUILD -DVISRTX_VERSION_MAJOR=0 -DVISRTX_VERSION_MINOR=7 -DVISRTX_VERSION_PATCH=0 -Danari_library_visrtx_EXPORTS -Dvisrtx_EXPORTS -IVisRTX_src/devices/rtx -IVisRTX_build/devices/rtx -IVisRTX_src/devices/rtx/include -isystem include -isystem include/anari/backend -isystem VisRTX_src/external/glm/include -isystem /home/sxs/.local/opt/NVIDIA-OptiX-SDK-7.6.0-linux64-x86_64/include -O3 -DNDEBUG -std=c++17 -Xcompiler=-fPIC --extended-lambda -MD -MT devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Denoiser.cu.o -MF devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Denoiser.cu.o.d -x cu -c VisRTX_src/devices/rtx/frame/Denoiser.cu -o devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Denoiser.cu.o
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                                                                                 ^ 
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                                                                                  ^ 
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
[4/8] Building CUDA object devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/surface/geometry/Sphere.cu.o
FAILED: devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/surface/geometry/Sphere.cu.o 
/usr/bin/nvcc -forward-unknown-to-host-compiler -DVISRTX_PARALLEL_MODULE_BUILD -DVISRTX_VERSION_MAJOR=0 -DVISRTX_VERSION_MINOR=7 -DVISRTX_VERSION_PATCH=0 -Danari_library_visrtx_EXPORTS -Dvisrtx_EXPORTS -IVisRTX_src/devices/rtx -IVisRTX_build/devices/rtx -IVisRTX_src/devices/rtx/include -isystem include -isystem include/anari/backend -isystem VisRTX_src/external/glm/include -isystem /home/sxs/.local/opt/NVIDIA-OptiX-SDK-7.6.0-linux64-x86_64/include -O3 -DNDEBUG -std=c++17 -Xcompiler=-fPIC --extended-lambda -MD -MT devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/surface/geometry/Sphere.cu.o -MF devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/surface/geometry/Sphere.cu.o.d -x cu -c VisRTX_src/devices/rtx/scene/surface/geometry/Sphere.cu -o devices/rtx/CMakeFiles/anari_library_visrtx.dir/scene/surface/geometry/Sphere.cu.o
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                                                                                 ^ 
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                                                                                  ^ 
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
[5/8] Building CUDA object devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Frame.cu.o
FAILED: devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Frame.cu.o 
/usr/bin/nvcc -forward-unknown-to-host-compiler -DVISRTX_PARALLEL_MODULE_BUILD -DVISRTX_VERSION_MAJOR=0 -DVISRTX_VERSION_MINOR=7 -DVISRTX_VERSION_PATCH=0 -Danari_library_visrtx_EXPORTS -Dvisrtx_EXPORTS -IVisRTX_src/devices/rtx -IVisRTX_build/devices/rtx -IVisRTX_src/devices/rtx/include -isystem include -isystem include/anari/backend -isystem VisRTX_src/external/glm/include -isystem /home/sxs/.local/opt/NVIDIA-OptiX-SDK-7.6.0-linux64-x86_64/include -O3 -DNDEBUG -std=c++17 -Xcompiler=-fPIC --extended-lambda -MD -MT devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Frame.cu.o -MF devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Frame.cu.o.d -x cu -c VisRTX_src/devices/rtx/frame/Frame.cu -o devices/rtx/CMakeFiles/anari_library_visrtx.dir/frame/Frame.cu.o
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                                                                                 ^ 
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                                                                                  ^ 
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
ninja: build stopped: subcommand failed.

Sorry for the delay -- I haven't found a solution for this other than using an older gcc or newer CUDA. The easiest thing would be to use gcc-10 instead, which you can easily get with sudo apt install g++-10 and use it when first configuring your CMake build with:

% cmake -DCMAKE_CUDA_HOST_COMPILER=g++-10 -DCMAKE_CXX_COMPILER=g++-10 /path/to/visrtx/src

Unfortunately this is just a CUDA/gcc incompatibility in std headers and isn't something VisRTX did specifically.

Please reopen if you continue to have problems.