Я использую conan для создания библиотеки, использующей стрелочный паркет. Я построил стрелу сам, потому что не смог найти версии в conan center, включающие паркет:
В моем conanfile.txt
[options]
arrow:shared=True # I tried both shared and static
arrow:parquet=True
arrow:with_snappy=True
conan install .. --build=arrow
Он правильно строится и выполняется на моей машине, но не проходит тесты на сервере Jenkins с
SIGILL - Illegal instruction signal
Из этого и это сообщение, похоже, что может быть конфликт архитектуры. И действительно, есть отличия:
Дженкинс сервер
AVX supported
AVX2 not supported
мой компьютер
AVX supported
AVX2 supported
Кроме того, код стрелки оптимизирован до уровня avx. Например, в 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
Поскольку я не добавил поддержку AVX2, как мне сообщить Conan собрать стрелу без поддержки AVX2 или любой другой минимальной общей конфигурации?
Или есть что-то совершенно другое, на что я должен смотреть?