facebookincubator / velox

A C++ vectorized database acceleration library aimed to optimizing query engines and data processing systems.
https://velox-lib.io/
Apache License 2.0
3.47k stars 1.14k forks source link

Compile error when build velox with -mavx512f flag #4267

Open zhejiangxiaomai opened 1 year ago

zhejiangxiaomai commented 1 year ago

Problem description

Here is my CMAKE_CXX_FLAGS opinion. Setting CMAKE_CXX_FLAGS=-mavx2 -mfma -mavx -mf16c -mlzcnt -std=c++17 -mbmi2 -mavx512f

FAILED: velox/common/base/tests/CMakeFiles/velox_base_test.dir/SimdUtilTest.cpp.o
ccache /usr/bin/c++  -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_CONTEXT_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFMT_LOCALE -DGFLAGS_IS_A_DLL=0 -DVELOX_ENABLE_PARQUET -I../../. -I../../velox/external/xxhash -I../../third_party/xsimd/include -isystem ../../velox -isystem ../../velox/external -isystem ../../velox/external/duckdb -isystem ../../velox/external/duckdb/tpch/dbgen/include -isystem /usr/include/libdwarf -isystem /usr/include/libiberty -isystem ../../third_party/googletest/googletest/include -isystem ../../third_party/googletest/googletest -mavx2 -mfma -mavx -mf16c -mlzcnt -std=c++17 -mbmi2 -mavx512f -D USE_VELOX_COMMON_BASE -D HAS_UNCAUGHT_EXCEPTIONS -Werror -Wall -Wextra -Wno-unused        -Wno-unused-parameter        -Wno-sign-compare        -Wno-ignored-qualifiers        -Wno-implicit-fallthrough          -Wno-empty-body          -Wno-class-memaccess          -Wno-comment          -Wno-int-in-bool-context          -Wno-redundant-move          -Wno-array-bounds          -Wno-maybe-uninitialized          -Wno-unused-result          -Wno-format-overflow          -Wno-strict-aliasing          -Wno-type-limits          -Wno-stringop-overflow -g -fPIE   -std=gnu++17 -MD -MT velox/common/base/tests/CMakeFiles/velox_base_test.dir/SimdUtilTest.cpp.o -MF velox/common/base/tests/CMakeFiles/velox_base_test.dir/SimdUtilTest.cpp.o.d -o velox/common/base/tests/CMakeFiles/velox_base_test.dir/SimdUtilTest.cpp.o -c ../../velox/common/base/tests/SimdUtilTest.cpp
In file included from ../.././velox/common/base/SimdUtil.h:419,
                 from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../.././velox/common/base/SimdUtil-inl.h: In instantiation of ‘int32_t facebook::velox::simd::indicesOfSetBits(const uint64_t*, int32_t, int32_t, int32_t*, const A&) [with A = xsimd::avx512f; int32_t = int; uint64_t = long unsigned int]’:
../../velox/common/base/tests/SimdUtilTest.cpp:65:70:   required from here
../.././velox/common/base/SimdUtil-inl.h:222:39: error: static assertion failed
  222 |             static_assert(Batch::size == 4);
      |                                  ~~~~~^~~~
In file included from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../.././velox/common/base/SimdUtil.h: In instantiation of ‘xsimd::batch<T, A> facebook::velox::simd::getHalf(xsimd::batch<From, A>, const A&) [with To = long unsigned int; bool kSecond = true; From = int; A = xsimd::avx512f]’:
../../velox/common/base/tests/SimdUtilTest.cpp:280:50:   required from here
../.././velox/common/base/SimdUtil.h:333:63: error: no matching function for call to ‘facebook::velox::simd::detail::GetHalf<long unsigned int, int, xsimd::avx512f>::apply<true>(xsimd::batch<int>&, const xsimd::avx512f&)’
  333 |   return detail::GetHalf<To, From, A>::template apply<kSecond>(data, arch);
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from ../.././velox/common/base/SimdUtil.h:419,
                 from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../.././velox/common/base/SimdUtil-inl.h:907:36: note: candidate: ‘static xsimd::batch<long unsigned int, A> facebook::velox::simd::detail::GetHalf<long unsigned int, int, A>::apply(xsimd::batch<int, A>, const xsimd::avx2&) [with bool kSecond = true; A = xsimd::avx512f]’
  907 |   static xsimd::batch<uint64_t, A> apply(
      |                                    ^~~~~
../.././velox/common/base/SimdUtil-inl.h:909:7: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::avx2&’
  909 |       const xsimd::avx2&) {
      |       ^~~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:916:36: note: candidate: ‘static xsimd::batch<long unsigned int, A> facebook::velox::simd::detail::GetHalf<long unsigned int, int, A>::apply(xsimd::batch<int, A>, const xsimd::sse4_1&) [with bool kSecond = true; A = xsimd::avx512f]’
  916 |   static xsimd::batch<uint64_t, A> apply(
      |                                    ^~~~~
../.././velox/common/base/SimdUtil-inl.h:918:7: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::sse4_1&’
  918 |       const xsimd::sse4_1&) {
      |       ^~~~~~~~~~~~~~~~~~~~
In file included from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../.././velox/common/base/SimdUtil.h: In instantiation of ‘uint32_t facebook::velox::simd::crc32U64(uint32_t, uint64_t, const A&) [with A = xsimd::avx512f; uint32_t = unsigned int; uint64_t = long unsigned int]’:
../../velox/common/base/tests/SimdUtilTest.cpp:317:41:   required from here
../.././velox/common/base/SimdUtil.h:344:43: error: no matching function for call to ‘facebook::velox::simd::detail::Crc32<long unsigned int, xsimd::avx512f>::apply(uint32_t&, uint64_t&, const xsimd::avx512f&)’
  344 |   return detail::Crc32<uint64_t, A>::apply(checksum, value, arch);
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
In file included from ../.././velox/common/base/SimdUtil.h:419,
                 from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../.././velox/common/base/SimdUtil-inl.h:1020:3: note: candidate: ‘static uint32_t facebook::velox::simd::detail::Crc32<long unsigned int, A>::apply(uint32_t, uint64_t, const xsimd::sse4_2&) [with A = xsimd::avx512f; uint32_t = unsigned int; uint64_t = long unsigned int]’
 1020 |   apply(uint32_t checksum, uint64_t value, const xsimd::sse4_2&) {
      |   ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1020:44: note:   no known conversion for argument 3 from ‘const xsimd::avx512f’ to ‘const xsimd::sse4_2&’
 1020 |   apply(uint32_t checksum, uint64_t value, const xsimd::sse4_2&) {
      |                                            ^~~~~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1026:19: note: candidate: ‘static uint32_t facebook::velox::simd::detail::Crc32<long unsigned int, A>::apply(uint32_t, uint64_t, const xsimd::avx&) [with A = xsimd::avx512f; uint32_t = unsigned int; uint64_t = long unsigned int]’
 1026 |   static uint32_t apply(uint32_t checksum, uint64_t value, const xsimd::avx&) {
      |                   ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1026:60: note:   no known conversion for argument 3 from ‘const xsimd::avx512f’ to ‘const xsimd::avx&’
 1026 |   static uint32_t apply(uint32_t checksum, uint64_t value, const xsimd::avx&) {
      |                                                            ^~~~~~~~~~~~~~~~~
In file included from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../.././velox/common/base/SimdUtil.h: In substitution of ‘template<class T, class A> using HalfBatch = typename facebook::velox::simd::detail::HalfBatchImpl<T, A>::Type [with T = int; A = xsimd::avx512f]’:
../.././velox/common/base/SimdUtil-inl.h:991:26:   required from ‘struct facebook::velox::simd::detail::Filter<int, xsimd::avx512f, 4>’
../.././velox/common/base/SimdUtil.h:309:37:   required from ‘xsimd::batch<U, A> facebook::velox::simd::filter(xsimd::batch<U, A>, BitMaskType, const A&) [with T = int; BitMaskType = int; A = xsimd::avx512f]’
../../velox/common/base/tests/SimdUtilTest.cpp:218:29:   required from ‘void {anonymous}::{anonymous}::testFilter(std::initializer_list<_Tp>) [with T = int]’
../../velox/common/base/tests/SimdUtilTest.cpp:251:73:   required from here
../.././velox/common/base/SimdUtil.h:85:7: error: invalid use of incomplete type ‘struct facebook::velox::simd::detail::HalfBatchImpl<int, xsimd::avx512f, void>’
   85 | using HalfBatch = typename detail::HalfBatchImpl<T, A>::Type;
      |       ^~~~~~~~~
../.././velox/common/base/SimdUtil.h:78:8: note: declaration of ‘struct facebook::velox::simd::detail::HalfBatchImpl<int, xsimd::avx512f, void>’
   78 | struct HalfBatchImpl;
      |        ^~~~~~~~~~~~~
../.././velox/common/base/SimdUtil.h: In substitution of ‘template<class T, class A> using HalfBatch = typename facebook::velox::simd::detail::HalfBatchImpl<T, A>::Type [with T = float; A = xsimd::avx512f]’:
../.././velox/common/base/SimdUtil-inl.h:991:26:   required from ‘struct facebook::velox::simd::detail::Filter<float, xsimd::avx512f, 4>’
../.././velox/common/base/SimdUtil.h:309:37:   required from ‘xsimd::batch<U, A> facebook::velox::simd::filter(xsimd::batch<U, A>, BitMaskType, const A&) [with T = float; BitMaskType = int; A = xsimd::avx512f]’
../../velox/common/base/tests/SimdUtilTest.cpp:218:29:   required from ‘void {anonymous}::{anonymous}::testFilter(std::initializer_list<_Tp>) [with T = float]’
../../velox/common/base/tests/SimdUtilTest.cpp:260:68:   required from here
../.././velox/common/base/SimdUtil.h:85:7: error: invalid use of incomplete type ‘struct facebook::velox::simd::detail::HalfBatchImpl<float, xsimd::avx512f, void>’
   85 | using HalfBatch = typename detail::HalfBatchImpl<T, A>::Type;
      |       ^~~~~~~~~
../.././velox/common/base/SimdUtil.h:78:8: note: declaration of ‘struct facebook::velox::simd::detail::HalfBatchImpl<float, xsimd::avx512f, void>’
   78 | struct HalfBatchImpl;
      |        ^~~~~~~~~~~~~
In file included from ../.././velox/common/base/SimdUtil.h:419,
                 from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../.././velox/common/base/SimdUtil-inl.h: In instantiation of ‘xsimd::batch<U, A> facebook::velox::simd::reinterpretBatch(xsimd::batch<T, A>, const A&) [with T = unsigned char; U = signed char; A = xsimd::avx512f]’:
../../velox/common/base/tests/SimdUtilTest.cpp:360:42:   required from ‘void {anonymous}::validateReinterpretBatch() [with T = signed char]’
../../velox/common/base/tests/SimdUtilTest.cpp:373:36:   required from here
../.././velox/common/base/SimdUtil-inl.h:1253:50: error: no matching function for call to ‘facebook::velox::simd::detail::ReinterpretBatch<unsigned char, signed char, xsimd::avx512f>::apply(xsimd::batch<signed char, xsimd::avx512f>&, const xsimd::avx512f&)’
 1253 |   return detail::ReinterpretBatch<T, U, A>::apply(data, arch);
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::sse2&) [with T = unsigned char; U = signed char; A = xsimd::avx512f]’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::sse2&’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                                                            ^~~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::avx&) [with T = unsigned char; U = signed char; A = xsimd::avx512f]’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::avx&’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                                                            ^~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h: In instantiation of ‘xsimd::batch<U, A> facebook::velox::simd::reinterpretBatch(xsimd::batch<T, A>, const A&) [with T = short unsigned int; U = short int; A = xsimd::avx512f]’:
../../velox/common/base/tests/SimdUtilTest.cpp:360:42:   required from ‘void {anonymous}::validateReinterpretBatch() [with T = short int]’
../../velox/common/base/tests/SimdUtilTest.cpp:374:37:   required from here
../.././velox/common/base/SimdUtil-inl.h:1253:50: error: no matching function for call to ‘facebook::velox::simd::detail::ReinterpretBatch<short unsigned int, short int, xsimd::avx512f>::apply(xsimd::batch<short int>&, const xsimd::avx512f&)’
 1253 |   return detail::ReinterpretBatch<T, U, A>::apply(data, arch);
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::sse2&) [with T = short unsigned int; U = short int; A = xsimd::avx512f]’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::sse2&’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                                                            ^~~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::avx&) [with T = short unsigned int; U = short int; A = xsimd::avx512f]’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::avx&’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                                                            ^~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h: In instantiation of ‘xsimd::batch<U, A> facebook::velox::simd::reinterpretBatch(xsimd::batch<T, A>, const A&) [with T = unsigned int; U = int; A = xsimd::avx512f]’:
../../velox/common/base/tests/SimdUtilTest.cpp:360:42:   required from ‘void {anonymous}::validateReinterpretBatch() [with T = int]’
../../velox/common/base/tests/SimdUtilTest.cpp:375:37:   required from here
../.././velox/common/base/SimdUtil-inl.h:1253:50: error: no matching function for call to ‘facebook::velox::simd::detail::ReinterpretBatch<unsigned int, int, xsimd::avx512f>::apply(xsimd::batch<int>&, const xsimd::avx512f&)’
 1253 |   return detail::ReinterpretBatch<T, U, A>::apply(data, arch);
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::sse2&) [with T = unsigned int; U = int; A = xsimd::avx512f]’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::sse2&’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                                                            ^~~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::avx&) [with T = unsigned int; U = int; A = xsimd::avx512f]’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::avx&’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                                                            ^~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h: In instantiation of ‘xsimd::batch<U, A> facebook::velox::simd::reinterpretBatch(xsimd::batch<T, A>, const A&) [with T = long unsigned int; U = long int; A = xsimd::avx512f]’:
../../velox/common/base/tests/SimdUtilTest.cpp:360:42:   required from ‘void {anonymous}::validateReinterpretBatch() [with T = long int]’
../../velox/common/base/tests/SimdUtilTest.cpp:376:37:   required from here
../.././velox/common/base/SimdUtil-inl.h:1253:50: error: no matching function for call to ‘facebook::velox::simd::detail::ReinterpretBatch<long unsigned int, long int, xsimd::avx512f>::apply(xsimd::batch<long int>&, const xsimd::avx512f&)’
 1253 |   return detail::ReinterpretBatch<T, U, A>::apply(data, arch);
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::sse2&) [with T = long unsigned int; U = long int; A = xsimd::avx512f]’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1074:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::sse2&’
 1074 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::sse2&) {
      |                                                            ^~~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:29: note: candidate: ‘static xsimd::batch<U, A> facebook::velox::simd::detail::ReinterpretBatch<T, U, A>::apply(xsimd::batch<T, A>, const xsimd::avx&) [with T = long unsigned int; U = long int; A = xsimd::avx512f]’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                             ^~~~~
../.././velox/common/base/SimdUtil-inl.h:1080:60: note:   no known conversion for argument 2 from ‘const xsimd::avx512f’ to ‘const xsimd::avx&’
 1080 |   static xsimd::batch<T, A> apply(xsimd::batch<U, A> data, const xsimd::avx&) {
      |                                                            ^~~~~~~~~~~~~~~~~
../.././velox/common/base/SimdUtil-inl.h: In instantiation of ‘xsimd::batch_bool<T, A> facebook::velox::simd::detail::fromBitMaskImpl(int) [with T = int; A = xsimd::avx512f]’:
../.././velox/common/base/SimdUtil-inl.h:137:61:   required from ‘static xsimd::batch_bool<T, A> facebook::velox::simd::detail::BitMask<T, A, 4>::fromBitMask(int, const A&) [with T = int; A = xsimd::avx512f]’
../.././velox/common/base/SimdUtil.h:289:44:   required from ‘xsimd::batch_bool<T_out, A> facebook::velox::simd::fromBitMask(BitMaskType, const A&) [with T = int; BitMaskType = int; A = xsimd::avx512f]’
../../velox/common/base/tests/SimdUtilTest.cpp:294:48:   required from here
../.././velox/common/base/SimdUtil-inl.h:48:21: error: static assertion failed
   48 |     static_assert(N <= 8);
      |                   ~~^~~~
In file included from ../../third_party/xsimd/include/xsimd/xsimd.hpp:61,
                 from ../.././velox/common/base/SimdUtil.h:24,
                 from ../../velox/common/base/tests/SimdUtilTest.cpp:17:
../../third_party/xsimd/include/xsimd/types/xsimd_batch.hpp:122:22: error: inline function ‘xsimd::batch<int> xsimd::operator+(const xsimd::batch<int>&, const xsimd::batch<int>&)’ used but never defined [-Werror]
  122 |         friend batch operator+(batch const& self, batch const& other) noexcept
      |                      ^~~~~~~~
cc1plus: all warnings being treated as errors

System information

Velox System Info v0.0.2 Commit: 94644c62f34daf966d32dadb5a0e059530eeaff9 CMake Version: 3.16.3 System: Linux-5.4.0-144-generic Arch: x86_64 C++ Compiler: /usr/bin/c++ C++ Compiler Version: 9.4.0 C Compiler: /usr/bin/cc C Compiler Version: 9.4.0 CMake Prefix Path: /usr/local;/usr;/;/usr;/usr/local;/usr/X11R6;/usr/pkg;/opt

Conda Env

``` # packages in environment at /mnt/DP_disk1/zzh/miniconda3: # # Name Version Build Channel _libgcc_mutex 0.1 main defaults _openmp_mutex 4.5 1_gnu defaults alabaster 0.7.13 pypi_0 pypi babel 2.11.0 pypi_0 pypi brotlipy 0.7.0 py39h27cfd23_1003 defaults ca-certificates 2022.3.29 h06a4308_1 defaults certifi 2021.10.8 py39h06a4308_2 defaults cffi 1.15.0 py39hd667e15_1 defaults charset-normalizer 2.0.4 pyhd3eb1b0_0 defaults click 8.1.3 pypi_0 pypi colorama 0.4.4 pyhd3eb1b0_0 defaults conda 4.12.0 py39h06a4308_0 defaults conda-content-trust 0.1.1 pyhd3eb1b0_0 defaults conda-package-handling 1.8.1 py39h7f8727e_0 defaults cryptography 36.0.0 py39h9ce1e76_0 defaults docutils 0.19 pypi_0 pypi duckdb 0.6.2.dev623 pypi_0 pypi idna 3.3 pyhd3eb1b0_0 defaults imagesize 1.4.1 pypi_0 pypi importlib-metadata 6.0.0 pypi_0 pypi jdot 0.5 pypi_0 pypi jinja2 3.1.2 pypi_0 pypi ld_impl_linux-64 2.35.1 h7274673_9 defaults libffi 3.3 he6710b0_2 defaults libgcc-ng 9.3.0 h5101ec6_17 defaults libgomp 9.3.0 h5101ec6_17 defaults libstdcxx-ng 9.3.0 hd4cf53a_17 defaults markupsafe 2.1.1 pypi_0 pypi ncurses 6.3 h7f8727e_2 defaults numpy 1.23.5 pypi_0 pypi openssl 1.1.1n h7f8727e_0 defaults packaging 23.0 pypi_0 pypi pip 21.2.4 py39h06a4308_0 defaults protobuf 3.20.2 pypi_0 pypi pycosat 0.6.3 py39h27cfd23_0 defaults pycparser 2.21 pyhd3eb1b0_0 defaults pygments 2.14.0 pypi_0 pypi pyopenssl 22.0.0 pyhd3eb1b0_0 defaults pysocks 1.7.1 py39h06a4308_0 defaults python 3.9.12 h12debd9_0 defaults pytz 2022.7 pypi_0 pypi pyyaml 6.0 pypi_0 pypi readline 8.1.2 h7f8727e_1 defaults regex 2022.10.31 pypi_0 pypi requests 2.27.1 pyhd3eb1b0_0 defaults ruamel_yaml 0.15.100 py39h27cfd23_0 defaults setuptools 61.2.0 py39h06a4308_0 defaults six 1.16.0 pyhd3eb1b0_1 defaults snowballstemmer 2.2.0 pypi_0 pypi sphinx 6.1.3 pypi_0 pypi sphinx-rtd-theme 0.5.1 pypi_0 pypi sphinxcontrib-applehelp 1.0.3 pypi_0 pypi sphinxcontrib-devhelp 1.0.2 pypi_0 pypi sphinxcontrib-htmlhelp 2.0.0 pypi_0 pypi sphinxcontrib-jsmath 1.0.1 pypi_0 pypi sphinxcontrib-qthelp 1.0.3 pypi_0 pypi sphinxcontrib-serializinghtml 1.1.5 pypi_0 pypi sqlite 3.38.2 hc218d9a_0 defaults substrait-validator 0.0.8 pypi_0 pypi tk 8.6.11 h1ccaba5_0 defaults tqdm 4.63.0 pyhd3eb1b0_0 defaults tzdata 2022a hda174b7_0 defaults urllib3 1.26.8 pyhd3eb1b0_0 defaults wheel 0.37.1 pyhd3eb1b0_0 defaults xz 5.2.5 h7b6447c_0 defaults yaml 0.2.5 h7b6447c_0 defaults zipp 3.11.0 pypi_0 pypi zlib 1.2.12 h7f8727e_1 defaults ```

CMake log

No response

zhejiangxiaomai commented 1 year ago

Did velox make some changes that caused the compilation to fail? cc: @oerling @mbasmanova

mbasmanova commented 1 year ago

CC: @Yuhta @kgpai @majetideepak

Yuhta commented 1 year ago

This is by design, some code is not adapted to AVX512. You can add some individual compilation unit to be compiled with AVX512 enabled, but adding it globally requires some work.

Mionsz commented 1 year ago

@Yuhta @mbasmanova @majetideepak Are there plans for implementing full AVX512 support? I just can tell that the gain seems massive as compared with ARROW - instructions execute at least an order of magnitude faster so it would be kind of game-changer - having in mind that engines like Presto won't utilize the Java 18: Vector API soon, as there is no special effort put in porting it for Java higher then version 11, Spark seems closer to this - theoretically supports JAVA 17.

This speed-up can be achieved in most data-centers running on Intel Xeons for example :-).

edit: xsimd and xxHash have full support for avx512 currently so there is also a question - how big the effort would be to add this to Velox?

Yuhta commented 1 year ago

@Mionsz We did some experiments back a while and AVX512 was exhibiting downclocking behavior on our servers, making the overall gain very little. That is why we deprioritize adopting of AVX512. You can try add support for it if you have time, it should not be too hard but it's also not trivial.

oerling commented 1 year ago

We have not seen any great win from avx512 over avx2. Maybe 1.3x is the highest we have been notified about. Gather for example, last time we checked, did worse than avx2. But could have changed since. Most but not all servers have this. AMD Milan does not.

So, where is there an order of magnitude? What about dropping clock frequency for avx512?

Thanks

Orri

From: Miłosz Linkiewicz @.> Sent: Saturday, March 18, 2023 7:37 PM To: facebookincubator/velox @.> Cc: oerling @.>; Mention @.> Subject: Re: [facebookincubator/velox] Compile error when build velox with -mavx512f flag (Issue #4267)

@Yuhta https://github.com/Yuhta @mbasmanova https://github.com/mbasmanova @majetideepak https://github.com/majetideepak Are there plans for implementing full AVX512 support? I just can tell that the gain seems massive as compared with ARROW - instructions execute at least an order of magnitude faster so it would be kind of game-changer - having in mind that engines like Presto won't utilize the Java 18: Vector API soon, as there is no special effort put in porting it for Java higher then version 11, Spark seems closer to this - theoretically supports JAVA 17.

This speed-up can be achieved in most data-centers running on Intel Xeons for example :-).

— Reply to this email directly, view it on GitHub https://github.com/facebookincubator/velox/issues/4267#issuecomment-1475077902 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AKPPPT4RSQE3UDELN2HGR5DW4ZWLDANCNFSM6AAAAAAVYVKP6A . You are receiving this because you were mentioned.Message ID: @.***>