error in brigand.hpp VTKm

Hi,

When I try to build ParaView 5.6.0 from source, I am getting following error related with VTKm. Is it known problem? If yes, is there any fix for it?

[ 14%] Building CUDA object VTK/ThirdParty/vtkm/vtk-m/vtkm/cont/CMakeFiles/vtkm_cont.dir/ArrayRangeCompute.cu.o
/glade/work/turuncu/COP_CL/progs/paraview-5.6.0/src/VTK/ThirdParty/vtkm/vtk-m/vtkm/internal/brigand.hpp:534:87: error: expansion pattern ‘typename brigand::detail::apply<Pred, brigand::list<Args …> >::type::type:: value’ contains no argument packs
static constexpr bool s_v[] = { ::brigand::apply<Pred, Ts>::type::value… };
^
/glade/work/turuncu/COP_CL/progs/paraview-5.6.0/src/VTK/ThirdParty/vtkm/vtk-m/vtkm/internal/brigand.hpp:1560:193: error: expansion pattern ‘typename std::conditional<typename brigand::detail::apply<Pred, brigand::list<Args …> >::type:: value, brigand::list<>, brigand::list<Args …> >::type’ contains no argument packs
struct remove_if<L<Ts…>, Pred>
^
/glade/work/turuncu/COP_CL/progs/paraview-5.6.0/src/VTK/ThirdParty/vtkm/vtk-m/vtkm/internal/brigand.hpp:1560:196: error: template argument 2 is invalid
struct remove_if<L<Ts…>, Pred>
^
/glade/work/turuncu/COP_CL/progs/paraview-5.6.0/src/VTK/ThirdParty/vtkm/vtk-m/vtkm/internal/brigand.hpp:1594:190: error: expansion pattern ‘typename std::conditional<typename brigand::detail::apply<Pred, brigand::list<Args …> >::type:: value, brigand::list<Args …>, brigand::list<> >::type’ contains no argument packs
struct filter<L<Ts…>, Pred>
^
/glade/work/turuncu/COP_CL/progs/paraview-5.6.0/src/VTK/ThirdParty/vtkm/vtk-m/vtkm/internal/brigand.hpp:1594:193: error: template argument 2 is invalid
struct filter<L<Ts…>, Pred>
^
make[2]: *** [VTK/ThirdParty/vtkm/vtk-m/vtkm/cont/CMakeFiles/vtkm_cont.dir/ArrayRangeCompute.cu.o] Error 1
make[1]: *** [VTK/ThirdParty/vtkm/vtk-m/vtkm/cont/CMakeFiles/vtkm_cont.dir/all] Error 2

@robert.maynard

@uturuncoglu What version of CUDA are you using?

Hi Robert,

nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

When I deactivate CUDA and keep VTKm it pass. It is probably related with CUDA.

The error message is coming from line ( brigand.hpp:534 ) which should only be encountered when compiling C++ files with clang or gcc. This means that for some reason your CUDA compiler is not defining the __CUDACC__ or __CUDACC_VER_MAJOR__ correctly.

Out of curiosity what c++ compiler are you building with?

I am using Intel compiler and version is 2018u4 and the operating system is Centos

Okay I now understand what happened. This isn’t related to your host compiler but is a bug in the older version of VTK-m that is shipped with ParaView 5.6.

What you can do is apply these two VTK-m commits to your version to support CUDA 10.

Hi Robert,

As you suggested, I applied patches and install again. Now, it compiles without any problem. Thanks for your help.

–ufuk