xtensor icon indicating copy to clipboard operation
xtensor copied to clipboard

Xtensor use_xsimd incompatible with xtensor-fftw

Open james-mxr opened this issue 3 years ago • 1 comments

vcpkg.json

{
    "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
    "name": "jsdfgksdjf",
    "version": "0.0.1",
    "builtin-baseline": "b49b2bdf22559c89eddbf29a29621a1dc6929320",
    "dependencies": [
        "xtensor",
        "xsimd",
        "xtensor-fftw"
    ]
}

cmake:

cmake_minimum_required(VERSION 3.1)
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
    project(xsimd-examples)

    find_package(xsimd REQUIRED CONFIG)
    find_package(xtensor CONFIG REQUIRED)
    find_package(xtensor-fftw CONFIG   REQUIRED)
endif ()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX /arch:AVX2 /bigobj")

message ("HEADERS BELLLOW")
message ("${CMAKE_CXX_FLAGS}")
message ("${XSIMD_HEADERS}")


add_executable(mandelbrot mandelbrot.cpp ${XSIMD_HEADERS})
set_property(TARGET mandelbrot PROPERTY CXX_STANDARD 14)
target_link_libraries(mandelbrot PRIVATE xsimd xtensor xtensor::use_xsimd xtensor::optimize)
if(xtensor-fftw_FOUND)
    find_path(XTENSOR_FFTW_INCLUDE_DIRS "xtensor-fftw/basic.hpp")
    target_include_directories(mandelbrot PRIVATE ${XTENSOR_FFTW_INCLUDE_DIRS})
endif()

add_custom_target(xmandelbrot COMMAND mandelbrot DEPENDS mandelbrot) 


mandelbrot.cpp

#include <xsimd/xsimd.hpp>
#include <xtensor/xtensor.hpp>

#include <xtensor-fftw/basic.hpp>

int main()
{
#ifdef __AVX2__
    std::cout << "AVX2 enabled" << std::endl;
#endif

#ifdef __AVX__
    std::cout << "AVX enabled" << std::endl;
#endif

#ifdef __FMA__
    std::cout << "FMA enabled" << std::endl;
#endif
    xsimd::batch<double, xsimd::avx2> a = { 1.5, 2.5, 3.5, 4.5 };
    xsimd::batch<double, xsimd::avx2> b = { 2.5, 3.5, 4.5, 5.5 };
    auto mean = (a + b) / 2;
    std::cout << mean << std::endl;

    return 0;
}

Yields a lot of issues,

>------ Build started: Project: CMakeLists, Configuration: Debug ------
  [1/2] Building CXX object CMakeFiles\mandelbrot.dir\mandelbrot.cpp.obj
  FAILED: CMakeFiles/mandelbrot.dir/mandelbrot.cpp.obj 
  C:\PROGRA~1\MICROS~3\2022\COMMUN~1\VC\Tools\MSVC\1433~1.316\bin\Hostx64\x64\cl.exe  /nologo /TP -DXTENSOR_USE_XSIMD -external:IC:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include -external:W0 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /arch:AVX /arch:AVX2 /bigobj /MDd /Zi /Ob0 /Od /RTC1 -std:c++14 /showIncludes /FoCMakeFiles\mandelbrot.dir\mandelbrot.cpp.obj /FdCMakeFiles\mandelbrot.dir\ /FS -c C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\mandelbrot.cpp
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_register.hpp(31): error C2338: static_assert failed: 'usage of simd_register with unsupported type'
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): note: see reference to class template instantiation 'xsimd::types::simd_register<T,xsimd::avx>' being compiled
          with
          [
              T=long double
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\../types/xsimd_fma3_avx2_register.hpp(40): note: see reference to class template instantiation 'xsimd::types::simd_register<T,xsimd::avx2>' being compiled
          with
          [
              T=long double
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\./xsimd_batch.hpp(47): note: see reference to class template instantiation 'xsimd::types::simd_register<T,A>' being compiled
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\./xsimd_batch.hpp(294): note: see reference to class template instantiation 'xsimd::batch<T,A>' being compiled
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor\xtensor_simd.hpp(254): note: see reference to class template instantiation 'xsimd::batch<std::complex<long double>,A>' being compiled
          with
          [
              A=xsimd::default_arch
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              T=std::complex<long double>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor\xassign.hpp(346): note: see reference to class template instantiation 'xt::has_simd_interface<E1,std::complex<long double>>' being compiled
          with
          [
              E1=xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              E2=xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              E2=xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              E2=xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,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::xexpression<D> &,const xt::xexpression<xt::xfunction<functor,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> &>> &,bool)' being compiled
          with
          [
              D=xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              T=std::complex<long double>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &>>>(E1 &,const E2 &)' being compiled
          with
          [
              D=xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              T=std::complex<long double>,
              E1=xt::xexpression<xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,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<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<T,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &>>>(E1 &,const E2 &)' being compiled
          with
          [
              D=xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              T=std::complex<long double>,
              E1=xt::xexpression<xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,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<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtl\xmeta_utils.hpp(597): note: see reference to function template instantiation 'void xt::assign_xexpression::<lambda_6ac52c7e38e5c5b4f9bbf0acb877c204>::operator ()<xtl::identity>(xtl::identity) const' being compiled
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\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_f5a9d2043f74498d66b6691f42365659>,
              FF=xt::assign_xexpression::<lambda_6ac52c7e38e5c5b4f9bbf0acb877c204>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor\xassign.hpp(206): note: see reference to function template instantiation 'void xtl::mpl::static_if<false,xt::assign_xexpression::<lambda_f5a9d2043f74498d66b6691f42365659>,xt::assign_xexpression::<lambda_6ac52c7e38e5c5b4f9bbf0acb877c204>>(const TF &,const FF &)' being compiled
          with
          [
              TF=xt::assign_xexpression::<lambda_f5a9d2043f74498d66b6691f42365659>,
              FF=xt::assign_xexpression::<lambda_6ac52c7e38e5c5b4f9bbf0acb877c204>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor\xsemantic.hpp(623): note: see reference to function template instantiation 'void xt::assign_xexpression<D,xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,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::xexpression<D> &,const xt::xexpression<xt::xfunction<functor,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> &>> &)' being compiled
          with
          [
              D=xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>,
              T=std::complex<long double>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor\xsemantic.hpp(489): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<std::complex<long double>,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=std::complex<long double>,
              D=xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor\xsemantic.hpp(489): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<std::complex<long double>,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=std::complex<long double>,
              D=xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor/xarray.hpp(482): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<std::complex<long double>,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<functor,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> &>>(const xt::xexpression<xt::xfunction<functor,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> &>> &)' being compiled
          with
          [
              T=std::complex<long double>,
              D=xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor/xarray.hpp(482): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<std::complex<long double>,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<functor,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> &>>(const xt::xexpression<xt::xfunction<functor,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> &>> &)' being compiled
          with
          [
              T=std::complex<long double>,
              D=xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor-fftw/basic.hpp(445): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<std::complex<long double>,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=std::complex<long double>,
              D=xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor-fftw/basic.hpp(445): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<std::complex<long double>,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=std::complex<long double>,
              D=xt::xfunction<functor,const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<size_t>,true>,xt::xtensor_expression_tag> &>
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xtensor-fftw/basic.hpp(812): note: see reference to function template instantiation 'xt::xarray_container<xt::uvector<long double,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::fftw::_hfft_<std::complex<long double>,long double,1,0,true,false,true,fftwl_plan fftwl_plan_dft_c2r_1d(int,fftwl_complex (*),long double *,unsigned int),void fftwl_execute(const fftwl_plan),void fftwl_destroy_plan(fftwl_plan),void>(const xt::xarray_container<xt::uvector<std::complex<long double>,xsimd::aligned_allocator<std::complex<long double>,32>>,xt::layout_type::row_major,xt::svector<size_t,4,std::allocator<unsigned __int64>,true>,xt::xtensor_expression_tag> &)' being compiled
          with
          [
              T=long double
          ]
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_avx2_register.hpp(35): error C2039: 'register_type': is not a member of 'xsimd::types::simd_register<T,xsimd::avx>'
          with
          [
              T=long double
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): note: see declaration of 'xsimd::types::simd_register<T,xsimd::avx>'
          with
          [
              T=long double
          ]
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_avx2_register.hpp(35): error C2061: syntax error: identifier 'register_type'
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_avx2_register.hpp(35): error C2061: syntax error: identifier 'register_type'
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_avx2_register.hpp(35): error C2382: 'xsimd::types::simd_register<T,xsimd::avx2>::simd_register': redefinition; different exception specifications
          with
          [
              T=long double
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\../types/xsimd_avx2_register.hpp(35): note: see declaration of 'xsimd::types::simd_register<T,xsimd::avx2>::simd_register'
          with
          [
              T=long double
          ]
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_fma3_avx2_register.hpp(40): error C2039: 'register_type': is not a member of 'xsimd::types::simd_register<T,xsimd::avx2>'
          with
          [
              T=long double
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\../types/xsimd_fma3_avx2_register.hpp(40): note: see declaration of 'xsimd::types::simd_register<T,xsimd::avx2>'
          with
          [
              T=long double
          ]
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_fma3_avx2_register.hpp(40): error C2061: syntax error: identifier 'register_type'
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_fma3_avx2_register.hpp(40): error C2061: syntax error: identifier 'register_type'
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_fma3_avx2_register.hpp(40): error C2382: 'xsimd::types::simd_register<T,A>::simd_register': redefinition; different exception specifications
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\../types/xsimd_fma3_avx2_register.hpp(40): note: see declaration of 'xsimd::types::simd_register<T,A>::simd_register'
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_batch.hpp(53): error C2039: 'register_type': is not a member of 'xsimd::types::simd_register<T,A>'
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\./xsimd_batch.hpp(46): note: see declaration of 'xsimd::types::simd_register<T,A>'
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_batch.hpp(53): error C2061: syntax error: identifier 'register_type'
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_batch.hpp(61): error C2061: syntax error: identifier 'register_type'
C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\xsimd_batch.hpp(61): error C2382: 'xsimd::batch<T,A>::batch': redefinition; different exception specifications
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
  C:\Users\James\Documents\Projects\C++\Research\xsimd\examples\out\build\x64-debug\vcpkg_installed\x64-windows\include\xsimd\types\./xsimd_batch.hpp(57): note: see declaration of 'xsimd::batch<T,A>::batch'
          with
          [
              T=long double,
              A=xsimd::default_arch
          ]
  ninja: build stopped: subcommand failed.

Build failed.

james-mxr avatar Aug 23 '22 14:08 james-mxr

I'm working on 2514 to resolve some of these issues. I'm trying to get it out the door almost there. Using fftw the way it is currently implemented is paying for the complexity of fftw without getting the speed up because the plans are not saved. using xsimd with fftw is not going to result in a speed up either because FFTW is optimized with its own vectorization framework. Best option for max speed is calling "xt::xarray::data()" on the object to get the linear data storage pointer in row or column major format.

spectre-ns avatar Oct 23 '22 20:10 spectre-ns