Illegal instruction signal for arrow parquet. How to build with Conan without AVX2

  apache-arrow, avx2, c++, conan

I’m using conan to build a library that uses arrow parquet. I built arrow myself because I couldn’t find versions in conan center that included parquet:

In my conanfile.txt

[options]
arrow:shared=True  # I tried both shared and static
arrow:parquet=True
arrow:with_snappy=True
conan install .. --build=arrow

It builds and executes properly in my machine, but fails the tests in the Jenkins server with

 SIGILL - Illegal instruction signal

From this and this posts, it seems like there could be an architecture conflict. And indeed, there are differences:

Jenkins server

AVX supported
AVX2 not supported

my computer

AVX supported
AVX2 supported

Furthermore, the arrow code has optimizations up to the avx level. For example, in byte_stream_split.h:

#if defined(ARROW_HAVE_AVX2)
template <typename T>
void ByteStreamSplitDecodeAvx2(const uint8_t* data, int64_t num_values, int64_t stride,
                               T* out)
// Code

Since I didn’t add support for AVX2, how do I tell conan to build arrow without AVX2 support, or whatever the minimum common configuration might be?

Or is there something entirely different I should be looking at?

Source: Windows Questions C++

LEAVE A COMMENT