xtensor-stack / xsimd

C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, AVX512, NEON, SVE))
https://xsimd.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
2.22k stars 258 forks source link

Error compiling xtensor tests with latest xsimd on MSVC 2019 v16.11.5 #625

Open emmenlau opened 3 years ago

emmenlau commented 3 years ago

I get a number of errors when building latest xtensor tests against xsimd 8.0.3 on MSVC with latest Visual Studio v16.11.5. The problem is here reported for test_xdatesupport, but appears in other sources too.

The error is

FAILED: test/CMakeFiles/test_xdatesupport.dir/test_xdatesupport.cpp.obj
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\cl.exe   /TP -DDISABLE_VS2017 -DXSIMD_ENABLE_XTL_COMPLEX -DXTENSOR_ENABLE_ASSERT -DXTENSOR_USE_XSIMD -D_CRT_SECURE_NO_WARNINGS -D_ITERATOR_DEBUG_LEVEL=0 -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -IC:\data\xtensor\include -IC:\data\Debug\include /MDd /Zi /arch:AVX2  /D_ITERATOR_DEBUG_LEVEL=0 /DWINVER=0x0603 /D_WIN32_WINNT=0x0603 /DDEBUG     /D_CRT_SECURE_NO_DEPRECATE /D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS     /wd4127 /wd4324    /DWIN32 /D_WINDOWS /W3 /GR /EHsc -DXSIMD_ENABLE_XTL_COMPLEX=1 /std:c++17 /MP /bigobj /EHsc /MDd /Zi /Ob0 /Od /RTC1 -std:c++17 /showIncludes /Fotest\CMakeFiles\test_xdatesupport.dir\test_xdatesupport.cpp.obj /Fdtest\CMakeFiles\test_xdatesupport.dir\ /FS -c C:\data\xtensor\test\test_xdatesupport.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30136 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.
C:\data\Debug\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): error C2504: 'xsimd::types::simd_register<T,xsimd::avx>': base class undefined
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>
        ]
C:\data\Debug\include\xsimd\types\./xsimd_batch.hpp(36): note: see reference to class template instantiation 'xsimd::types::simd_register<T,A>' being compiled
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
C:\data\xtensor\include\xtensor\xtensor_simd.hpp(254): note: see reference to class template instantiation 'xsimd::batch<T2,A>' being compiled
        with
        [
            T2=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
C:\data\xtensor\include\xtensor\xtensor_simd.hpp(265): note: see reference to class template instantiation 'xt::detail::has_simd_interface_impl<E,T,true>' being compiled
        with
        [
            E=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(346): note: see reference to class template instantiation 'xt::has_simd_interface<E1,std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>>' being compiled
        with
        [
            E1=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(346): note: while compiling class template member function 'bool xt::xassign_traits<E1,E2>::simd_interface(void)'
        with
        [
            E1=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            E2=xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(354): note: see reference to function template instantiation 'bool xt::xassign_traits<E1,E2>::simd_interface(void)' being compiled
        with
        [
            E1=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            E2=xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(378): note: see reference to class template instantiation 'xt::xassign_traits<E1,E2>' being compiled
        with
        [
            E1=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            E2=xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(414): note: see reference to function template instantiation 'void xt::xexpression_assigner_base<xt::xtensor_expression_tag>::assign_data<D,xt::xfunction<F,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>(xt::xexpression<D> &,const xt::xexpression<xt::xfunction<F,const xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>> &,bool)' being compiled
        with
        [
            D=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            F=xt::detail::plus,
            T=xt::tp
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(205): note: see reference to function template instantiation 'void xt::xexpression_assigner<tag>::assign_xexpression<xt::xexpression<D>,xt::xexpression<xt::xfunction<F,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>>(E1 &,const E2 &)' being compiled
        with
        [
            D=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            F=xt::detail::plus,
            T=xt::tp,
            E1=xt::xexpression<xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>>,
            E2=xt::xexpression<xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(205): note: see reference to function template instantiation 'void xt::xexpression_assigner<tag>::assign_xexpression<xt::xexpression<D>,xt::xexpression<xt::xfunction<F,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>>(E1 &,const E2 &)' being compiled
        with
        [
            D=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            F=xt::detail::plus,
            T=xt::tp,
            E1=xt::xexpression<xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>>,
            E2=xt::xexpression<xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>
        ]
C:\data\Debug\include\xtl/xmeta_utils.hpp(597): note: see reference to function template instantiation 'void xt::assign_xexpression::<lambda_f923507e095d7947555df898b327287b>::operator ()<xtl::identity>(xtl::identity) const' being compiled
C:\data\Debug\include\xtl/xmeta_utils.hpp(603): note: see reference to function template instantiation 'void xtl::mpl::static_if<TF,FF>(std::false_type,const TF &,const FF &)' being compiled
        with
        [
            TF=xt::assign_xexpression::<lambda_9fdc0c7f61ae999a5b2a9d69ab4f54e1>,
            FF=xt::assign_xexpression::<lambda_f923507e095d7947555df898b327287b>
        ]
C:\data\xtensor\include\xtensor\xassign.hpp(206): note: see reference to function template instantiation 'void xtl::mpl::static_if<false,xt::assign_xexpression::<lambda_9fdc0c7f61ae999a5b2a9d69ab4f54e1>,xt::assign_xexpression::<lambda_f923507e095d7947555df898b327287b>>(const TF &,const FF &)' being compiled
        with
        [
            TF=xt::assign_xexpression::<lambda_9fdc0c7f61ae999a5b2a9d69ab4f54e1>,
            FF=xt::assign_xexpression::<lambda_f923507e095d7947555df898b327287b>
        ]
C:\data\xtensor\include\xtensor\xsemantic.hpp(623): note: see reference to function template instantiation 'void xt::assign_xexpression<D,xt::xfunction<F,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>(xt::xexpression<D> &,const xt::xexpression<xt::xfunction<F,const xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>> &)' being compiled
        with
        [
            D=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            F=xt::detail::plus,
            T=xt::tp
        ]
C:\data\xtensor\include\xtensor\xsemantic.hpp(489): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &xt::xcontainer_semantic<xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag>>::assign_xexpression<D>(const xt::xexpression<D> &)' being compiled
        with
        [
            T=xt::tp,
            D=xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>
        ]
C:\data\xtensor\include\xtensor\xsemantic.hpp(489): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &xt::xcontainer_semantic<xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag>>::assign_xexpression<D>(const xt::xexpression<D> &)' being compiled
        with
        [
            T=xt::tp,
            D=xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>
        ]
C:\data\xtensor\include\xtensor/xarray.hpp(482): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &xt::xsemantic_base<D>::assign<xt::xfunction<F,const xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>(const xt::xexpression<xt::xfunction<F,const xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>> &)' being compiled
        with
        [
            T=xt::tp,
            D=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            F=xt::detail::plus
        ]
C:\data\xtensor\include\xtensor/xarray.hpp(482): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &xt::xsemantic_base<D>::assign<xt::xfunction<F,const xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>>(const xt::xexpression<xt::xfunction<F,const xt::xarray_container<xt::uvector<T,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>> &)' being compiled
        with
        [
            T=xt::tp,
            D=xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
            F=xt::detail::plus
        ]
C:\data\xtensor\test\test_xdatesupport.cpp(79): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag>::xarray_container<D>(const xt::xexpression<D> &)' being compiled
        with
        [
            T=xt::tp,
            D=xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>
        ]
C:\data\xtensor\test\test_xdatesupport.cpp(79): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag>::xarray_container<D>(const xt::xexpression<D> &)' being compiled
        with
        [
            T=xt::tp,
            D=xt::xfunction<xt::detail::plus,const xt::xarray_container<xt::uvector<xt::tp,xsimd::aligned_allocator<xt::tp,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &,xt::xscalar<const std::chrono::duration<int,std::ratio<3600,1>> &>>
        ]
C:\data\Debug\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): error C2027: use of undefined type 'xsimd::types::simd_register<T,xsimd::avx>'
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>
        ]
C:\data\Debug\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): note: see declaration of 'xsimd::types::simd_register<T,xsimd::avx>'
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>
        ]
C:\data\Debug\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): error C2061: syntax error: identifier 'register_type'
C:\data\Debug\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): error C2061: syntax error: identifier 'register_type'
C:\data\Debug\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): error C2535: 'xsimd::types::simd_register<T,A>::simd_register(void)': member function already defined or declared
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
C:\data\Debug\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): note: see declaration of 'xsimd::types::simd_register<T,A>::simd_register'
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
C:\data\Debug\include\xsimd\types\./xsimd_batch.hpp(43): error C2039: 'register_type': is not a member of 'xsimd::types::simd_register<T,A>'
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
C:\data\Debug\include\xsimd\types\./xsimd_batch.hpp(35): note: see declaration of 'xsimd::types::simd_register<T,A>'
        with
        [
            T=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
C:\data\Debug\include\xsimd\types\./xsimd_batch.hpp(43): error C2061: syntax error: identifier 'register_type'
C:\data\Debug\include\xsimd\types\./xsimd_batch.hpp(51): error C2061: syntax error: identifier 'register_type'
C:\data\Debug\include\xsimd\types\./xsimd_batch.hpp(51): error C2535: 'xsimd::batch<T2,A>::batch(void)': member function already defined or declared
        with
        [
            T2=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
C:\data\Debug\include\xsimd\types\./xsimd_batch.hpp(47): note: see declaration of 'xsimd::batch<T2,A>::batch'
        with
        [
            T2=std::chrono::time_point<std::chrono::system_clock,std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>>,
            A=xsimd::default_arch
        ]
nunupeke commented 3 years ago

Same here. Does this only happen for the latest vs2019 version (v16.11.5)?

emmenlau commented 3 years ago

I did not try older Visual Studio with latest xsimd. I can only say that older xsimd (<= 7.x) used to work.

emmenlau commented 2 years ago

Kindly pinging on this issue again. This is currently blocking us from moving to xsimd 8.x series (and in turn blocking the latest xtensor and xtensor-python, oh my).

serge-sans-paille commented 2 years ago

I have a small reproducer here:

https://godbolt.org/z/fdeGnzWEa

basically the type parameter of the batch doesn't look like a supported scalar type (It's a chrono time_point). I can improve the error message, but that's probably not what you expect. My understanding is that this comes from xtensor, @JohanMabille any hint?

serge-sans-paille commented 2 years ago

@emmenlau can you confirm that with https://github.com/xtensor-stack/xsimd/pull/665 you at least get a decent error message?

emmenlau commented 2 years ago

Thanks a lot for the PR, I think it looks good. But I can not test it easily right now because our Windows build is currently being upgraded to VS2022. It may take a few days before I get back to this, is it ok?

JohanMabille commented 2 years ago

I can reproduce the bug on a local Windows machine, now investigating it, but that looks like a compiler bug that will require some cargo kulting workaround :/

emmenlau commented 2 years ago

I see, very annoying... if its really a compiler bug then maybe I can try with Visual Studio 2022. If its fixed there then I'm fine, we can always flee forward...

JohanMabille commented 2 years ago

I tried in the CI with VS 2022, same issue.

hxhc commented 1 year ago

same here with VS2022. I have to remove xtensor::use_simd to compile successfully. Wondering how the performance will degrade without xsimd.

brccabral commented 1 month ago

Maybe it is related with this issue https://github.com/xtensor-stack/xtensor/issues/2736