google / highway

Performance-portable, length-agnostic SIMD with runtime dispatch
Apache License 2.0
3.95k stars 305 forks source link

SortTestGroup/SortTest.TestAllFloatInf/EMU128 # GetParam() = 2305843009213693952 (Subprocess aborted) #2259

Open malaterre opened 1 week ago

malaterre commented 1 week ago

I must admit I fail to understand the gdb backtrace... Anyway here it goes:

$ gdb --args obj-*/tests/sort_test "--gtest_filter=SortTestGroup/SortTest.TestAllFloatInf/EMU128" 
[...]
[ RUN      ] SortTestGroup/SortTest.TestAllFloatInf/EMU128
Abort at vqsort_f64a.cc:35: Assert 0
[...]
(gdb) list
30      #if HWY_HAVE_FLOAT64
31        return VQSortStatic(keys, num, SortAscending());
32      #else
33        (void)keys;
34        (void)num;
35        HWY_ASSERT(0);
36      #endif
37      }
38
39      void PartialSortF64Asc(double* HWY_RESTRICT keys, const size_t num,
(gdb) up
#7  hwy::VQSort (keys=keys@entry=0x23, n=n@entry=6) at ./hwy/contrib/sort/vqsort_f64a.cc:76
76        HWY_DYNAMIC_DISPATCH(SortF64Asc)(keys, n);
(gdb) 
#8  0x004676f0 in hwy::N_EMU128::(anonymous namespace)::TestFloatInf::operator()<double, hwy::N_EMU128::Simd<double, 2u, 0> >(double, hwy::N_EMU128::Simd<double, 2u, 0>) [clone .constprop.0] (d=..., 
    this=<optimized out>) at ./hwy/contrib/sort/sort_test.cc:124
124         VQSort(in.get(), num, SortAscending());
(gdb) 
#9  0x004082dc in hwy::N_EMU128::detail::ForeachCappedR<double, 2, 1, hwy::N_EMU128::(anonymous namespace)::TestFloatInf, 0>::Do (min_lanes=1, max_lanes=2) at ./hwy/tests/test_util-inl.h:251
251       static void Do(size_t min_lanes, size_t max_lanes) {
(gdb) 
#10 hwy::N_EMU128::ForExtendableVectors<hwy::N_EMU128::(anonymous namespace)::TestFloatInf, 0>::operator()<double> (this=<optimized out>) at ./hwy/tests/test_util-inl.h:405
405         detail::ForeachCappedR<T, kMul, kMinArg, Test, -kPow2>::Do(1, max_lanes);
(gdb) up
#11 hwy::N_EMU128::ForPartialVectors<hwy::N_EMU128::(anonymous namespace)::TestFloatInf>::operator()<double> (t=0, this=<optimized out>) at ./hwy/tests/test_util-inl.h:629
629         ForExtendableVectors<Test, 0>()(t);
(gdb) up
#12 hwy::N_EMU128::ForFloat64TypesDynamic<hwy::N_EMU128::ForPartialVectors<hwy::N_EMU128::(anonymous namespace)::TestFloatInf> > (func=...) at ./hwy/tests/test_util-inl.h:734
734         func(double());
(gdb) list -
729
730     template <class Func>
731     void ForFloat64TypesDynamic(const Func& func) {
732     #if HWY_HAVE_FLOAT64
733       if (hwy::HaveFloat64()) {
734         func(double());
735       }
736     #else
737       (void)func;
738     #endif

System it Debian/armhf (which is a armv7/neon wo aes). Compiler is GCC-13/O3

ref: