opencv / opencv_contrib

Repository for OpenCV's extra modules
Apache License 2.0
9.32k stars 5.74k forks source link

CUDA 12.6 build errors #3773

Closed ghfue closed 3 days ago

ghfue commented 1 month ago
System information (version)
Detailed description

The build breaks when upgrading from CUDA 12.5 to CUDA 12.6.

Here is the full build error:

[  9%] Building NVCC (Device) object modules/cudaarithm/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_polar_cart.cu.o
/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp(518): error: incomplete type "cuda::std::__4::tuple_size<cv::cudev::PtrTraitsBase<cv::cudev::ZipPtrSz<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>, cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>>::ptr_type>" (aka "cuda::std::__4::tuple_size<cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>>") is not allowed
          Unroll<tuple_size<DstPtrTuple>::value>::transform(srcVal, dst, op, y, x);
                 ^
          detected during:
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp(492): error: incomplete type "cuda::std::__4::tuple_element<<error-constant>, cv::cudev::PtrTraitsBase<cv::cudev::ZipPtrSz<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>, cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>>::ptr_type>" (aka "cuda::std::__4::tuple_element<<error-constant>, cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>>") is not allowed
              typedef typename tuple_element<count - 1, DstPtrTuple>::type dst_ptr_type;
                               ^
          detected during:
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/../ptr2d/traits.hpp(61): error: a class or namespace qualified name is required
      typedef typename Ptr2D::value_type value_type;
                       ^
          detected during:
            instantiation of class "cv::cudev::PtrTraitsBase<Ptr2DSz, Ptr2D> [with Ptr2DSz=<error-type>, Ptr2D=<error-type>]" at line 80
            instantiation of class "cv::cudev::PtrTraits<Ptr2DSz> [with Ptr2DSz=<error-type>]" at line 493 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/../ptr2d/traits.hpp(61): error: global-scope qualifier (leading "::") is not allowed
      typedef typename Ptr2D::value_type value_type;
                            ^
          detected during:
            instantiation of class "cv::cudev::PtrTraitsBase<Ptr2DSz, Ptr2D> [with Ptr2DSz=<error-type>, Ptr2D=<error-type>]" at line 80
            instantiation of class "cv::cudev::PtrTraits<Ptr2DSz> [with Ptr2DSz=<error-type>]" at line 493 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/../ptr2d/traits.hpp(61): error: expected a ";"
      typedef typename Ptr2D::value_type value_type;
                                         ^
          detected during:
            instantiation of class "cv::cudev::PtrTraitsBase<Ptr2DSz, Ptr2D> [with Ptr2DSz=<error-type>, Ptr2D=<error-type>]" at line 80
            instantiation of class "cv::cudev::PtrTraits<Ptr2DSz> [with Ptr2DSz=<error-type>]" at line 493 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/../ptr2d/traits.hpp(62): error: a class or namespace qualified name is required
      typedef typename Ptr2D::index_type index_type;
                       ^
          detected during:
            instantiation of class "cv::cudev::PtrTraitsBase<Ptr2DSz, Ptr2D> [with Ptr2DSz=<error-type>, Ptr2D=<error-type>]" at line 80
            instantiation of class "cv::cudev::PtrTraits<Ptr2DSz> [with Ptr2DSz=<error-type>]" at line 493 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/../ptr2d/traits.hpp(62): error: global-scope qualifier (leading "::") is not allowed
      typedef typename Ptr2D::index_type index_type;
                            ^
          detected during:
            instantiation of class "cv::cudev::PtrTraitsBase<Ptr2DSz, Ptr2D> [with Ptr2DSz=<error-type>, Ptr2D=<error-type>]" at line 80
            instantiation of class "cv::cudev::PtrTraits<Ptr2DSz> [with Ptr2DSz=<error-type>]" at line 493 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/../ptr2d/traits.hpp(62): error: expected a ";"
      typedef typename Ptr2D::index_type index_type;
                                         ^
          detected during:
            instantiation of class "cv::cudev::PtrTraitsBase<Ptr2DSz, Ptr2D> [with Ptr2DSz=<error-type>, Ptr2D=<error-type>]" at line 80
            instantiation of class "cv::cudev::PtrTraits<Ptr2DSz> [with Ptr2DSz=<error-type>]" at line 493 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp(493): error: class "cv::cudev::PtrTraits<<error-type>>" has no member "value_type"
              typedef typename PtrTraits<dst_ptr_type>::value_type dst_type;
                                                        ^
          detected during:
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 518
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 527
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, true>>]" at line 167 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp(518): error: incomplete type "cuda::std::__4::tuple_size<cv::cudev::PtrTraitsBase<cv::cudev::ZipPtrSz<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>, cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>>::ptr_type>" (aka "cuda::std::__4::tuple_size<cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>>") is not allowed
          Unroll<tuple_size<DstPtrTuple>::value>::transform(srcVal, dst, op, y, x);
                 ^
          detected during:
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>, MaskPtr=cv::cudev::WithOutMask]" at line 527
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 177 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp(492): error: incomplete type "cuda::std::__4::tuple_element<<error-constant>, cv::cudev::PtrTraitsBase<cv::cudev::ZipPtrSz<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>, cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat_<float>, cv::cudev::GlobPtr<float>>::ptr_type>>>::ptr_type>" (aka "cuda::std::__4::tuple_element<<error-constant>, cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>>") is not allowed
              typedef typename tuple_element<count - 1, DstPtrTuple>::type dst_ptr_type;
                               ^
          detected during:
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 518
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>, MaskPtr=cv::cudev::WithOutMask]" at line 527
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 177 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

/opencv_contrib/modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp(493): error: class "cv::cudev::PtrTraits<<error-type>>" has no member "value_type"
              typedef typename PtrTraits<dst_ptr_type>::value_type dst_type;
                                                        ^
          detected during:
            instantiation of "void cv::cudev::grid_transform_detail::Unroll<count>::transform(const SrcVal &, DstPtrTuple &, const OpTuple &, int, int) [with count=<error-constant>, SrcVal=float2, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 518
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple(SrcPtr, DstPtrTuple, OpTuple, MaskPtr, int, int) [with SrcPtr=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>, MaskPtr=cv::cudev::WithOutMask]" at line 527
            instantiation of "void cv::cudev::grid_transform_detail::transform_tuple<Policy,SrcPtrTuple,DstPtrTuple,OpTuple,MaskPtr>(const SrcPtrTuple &, const DstPtrTuple &, const OpTuple &, const MaskPtr &, int, int, cudaStream_t) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtrTuple=cv::cudev::GlobPtr<float2>, DstPtrTuple=cv::cudev::ZipPtr<thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GlobPtr<float>, cv::cudev::GlobPtr<float>>>, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>, MaskPtr=cv::cudev::WithOutMask]" at line 280 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple_<Policy,SrcPtr,D0,D1,OpTuple>(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with Policy=cv::cudev::DefaultTransformPolicy, SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 576 of /opencv_contrib/modules/cudev/include/opencv2/cudev/grid/transform.hpp
            instantiation of "void cv::cudev::gridTransformTuple(const SrcPtr &, const thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::GpuMat_<D0> &, cv::cudev::GpuMat_<D1> &> &, const OpTuple &, cv::cuda::Stream &) [with SrcPtr=cv::cudev::GlobPtrSz<float2>, D0=float, D1=float, OpTuple=thrust::THRUST_200500_500_520_600_610_700_750_800_860_890_900_NS::tuple<cv::cudev::magnitude_interleaved_func<float2>, cv::cudev::direction_interleaved_func<float2, false>>]" at line 177 of /opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu

12 errors detected in the compilation of "/opencv_contrib/modules/cudaarithm/src/cuda/polar_cart.cu".
CMake Error at cuda_compile_1_generated_polar_cart.cu.o.Release.cmake:280 (message):
  Error generating file
  /opencv/build/modules/cudaarithm/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_polar_cart.cu.o

make[2]: *** [modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/build.make:18983: modules/cudaarithm/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_polar_cart.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3606: modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/all] Error 2
make: *** [Makefile:166: all] Error 2
Steps to reproduce

Build OpenCV with CUDA and cudnn with CUDA 12.6.

Issue submission checklist
cudawarped commented 1 month ago

I can observe the same issue on Windows 11 with Visual Studio 2022 going from CUDA 12.5 to 12.6.

miscco commented 1 month ago

That is really strange, it seems that <cuda/std/tuple> is not properly included

cudawarped commented 1 month ago

That is really strange, it seems that <cuda/std/tuple> is not properly included

Is it related to the namespace clach referenced in https://github.com/opencv/opencv_contrib/pull/3744?

Added branch with std::array instead of std::tuple in split-merge and grid operations. The new branch got rid of namespace clash: cv::cuda in OpenCV and ::cuda in CUDA standard library (injected by Thrust). Old tuple branches presumed for compatibility with old code and CUDA versions before 12.4.

heartlove commented 1 month ago

I have the same issue on Windows 11 with Visual Studio 2022 ,openCV 5.x and CUDA 12.6

Severity Code Description Project File Line Suppression State Details Error incomplete type "cuda::std::4::tuple_size<cv::cudev::PtrTraitsBase<cv::cudev::ZipPtrSz<thrust::THRUST_200500_860_890_900NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat, cv::cudev::GlobPtr>::ptrtype, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat, cv::cudev::GlobPtr>::ptr_type>>, cv::cudev::ZipPtr<thrust::THRUST_200500_860_890_900NS::tuple<cv::cudev::PtrTraitsBase<cv::cudev::GpuMat, cv::cudev::GlobPtr>::ptrtype, cv::cudev::PtrTraitsBase<cv::cudev::GpuMat, cv::cudev::GlobPtr>::ptr_type>>>::ptr_type>" (aka "cuda::std::4::tuple_size<cv::cudev::ZipPtr<thrust::THRUST_200500_860_890_900_NS::tuple<cv::cudev::GlobPtr, cv::cudev::GlobPtr>>>") is not allowed opencv_cudaarithm D:\OpenSDK\opencv_contrib\modules\cudev\include\opencv2\cudev\grid\detail\transform.hpp 518

nacer1986 commented 3 weeks ago

same prob here

Bethexone commented 3 weeks ago

me too

aws-tec commented 2 weeks ago

same issue here. Windows11 + CUDA 12.6 + opencv/opencv_contrib 4.x + VS 2022

kmodexc commented 1 week ago

same problem here. Ubuntu 22 CUDA 12.6

smoxy commented 1 week ago

Any news @asmorkalov? Do you suggest to wait or to downgrade to cuda 12.5?

asmorkalov commented 1 week ago

Please downgrade for now.

asmorkalov commented 1 week ago

ZipPtr is inherited from tuple. Since CUDA 12.6 template magic with tuple_size<cv::cudev::ZipPtr<> stops working.

miscco commented 1 week ago

I am missing the include for cuda/std/tuple in the source file, can you verify that you did not accidentally relied on transitive includes