Merge pull request #29586 from taosdata/fix/TS-5907-main

fix(query)[TS-5907]: skip some decompressTest sub-cases on machines without AVX2 support
This commit is contained in:
Shengliang Guan 2025-01-16 18:17:41 +08:00 committed by GitHub
commit b3a6db96a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 16 deletions

View File

@ -142,10 +142,6 @@ target_include_directories(
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../inc" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../inc"
) )
IF(COMPILER_SUPPORT_AVX2)
MESSAGE(STATUS "AVX2 instructions is ACTIVATED")
set_source_files_properties(decompressTest.cpp PROPERTIES COMPILE_FLAGS -mavx2)
ENDIF()
add_executable(decompressTest "decompressTest.cpp") add_executable(decompressTest "decompressTest.cpp")
target_link_libraries(decompressTest os util common gtest_main) target_link_libraries(decompressTest os util common gtest_main)
add_test( add_test(

View File

@ -524,23 +524,20 @@ static void decompressBasicTest(size_t dataSize, const CompF& compress, const De
decltype(origData) decompData(origData.size()); decltype(origData) decompData(origData.size());
// test simple implementation without SIMD instructions // test simple implementation without SIMD instructions
tsSIMDEnable = 0; tsAVX2Supported = 0;
cnt = decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(), cnt = decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(),
ONE_STAGE_COMP, nullptr, 0); ONE_STAGE_COMP, nullptr, 0);
ASSERT_EQ(cnt, compData.size() - 1); ASSERT_EQ(cnt, compData.size() - 1);
EXPECT_EQ(origData, decompData); EXPECT_EQ(origData, decompData);
#ifdef __AVX2__ taosGetSystemInfo();
if (DataTypeSupportAvx<T>::value) { if (DataTypeSupportAvx<T>::value && tsAVX2Supported) {
// test AVX2 implementation // test AVX2 implementation
tsSIMDEnable = 1;
tsAVX2Supported = 1;
cnt = decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(), cnt = decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(),
ONE_STAGE_COMP, nullptr, 0); ONE_STAGE_COMP, nullptr, 0);
ASSERT_EQ(cnt, compData.size() - 1); ASSERT_EQ(cnt, compData.size() - 1);
EXPECT_EQ(origData, decompData); EXPECT_EQ(origData, decompData);
} }
#endif
} }
template <typename T, typename CompF, typename DecompF> template <typename T, typename CompF, typename DecompF>
@ -557,7 +554,7 @@ static void decompressPerfTest(const char* typname, const CompF& compress, const
<< "; Compression ratio: " << 1.0 * (compData.size() - 1) / cnt << "\n"; << "; Compression ratio: " << 1.0 * (compData.size() - 1) / cnt << "\n";
decltype(origData) decompData(origData.size()); decltype(origData) decompData(origData.size());
tsSIMDEnable = 0; tsAVX2Supported = 0;
auto ms = measureRunTime( auto ms = measureRunTime(
[&]() { [&]() {
decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(), decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(),
@ -567,10 +564,8 @@ static void decompressPerfTest(const char* typname, const CompF& compress, const
std::cout << "Decompression of " << NROUND * DATA_SIZE << " " << typname << " without SIMD costs " << ms std::cout << "Decompression of " << NROUND * DATA_SIZE << " " << typname << " without SIMD costs " << ms
<< " ms, avg speed: " << NROUND * DATA_SIZE * 1000 / ms << " tuples/s\n"; << " ms, avg speed: " << NROUND * DATA_SIZE * 1000 / ms << " tuples/s\n";
#ifdef __AVX2__ taosGetSystemInfo();
if (DataTypeSupportAvx<T>::value) { if (DataTypeSupportAvx<T>::value && tsAVX2Supported) {
tsSIMDEnable = 1;
tsAVX2Supported = 1;
ms = measureRunTime( ms = measureRunTime(
[&]() { [&]() {
decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(), decompress(compData.data(), compData.size(), decompData.size(), decompData.data(), decompData.size(),
@ -580,7 +575,6 @@ static void decompressPerfTest(const char* typname, const CompF& compress, const
std::cout << "Decompression of " << NROUND * DATA_SIZE << " " << typname << " using AVX2 costs " << ms std::cout << "Decompression of " << NROUND * DATA_SIZE << " " << typname << " using AVX2 costs " << ms
<< " ms, avg speed: " << NROUND * DATA_SIZE * 1000 / ms << " tuples/s\n"; << " ms, avg speed: " << NROUND * DATA_SIZE * 1000 / ms << " tuples/s\n";
} }
#endif
} }
#define RUN_PERF_TEST(typname, comp, decomp, min, max) \ #define RUN_PERF_TEST(typname, comp, decomp, min, max) \