-
Notifications
You must be signed in to change notification settings - Fork 41
Description
Recently while testing SmithWaterman I've encountered inconsistent result between two machines - one of them is 12th Gen Intel(R) Core(TM) i7-12700 and the other is Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz.
First, I comfirmed that invoking SmithWaterman i7 CPU flows into AVX2 and Xeon CPU flows into AVX512.
And I tried various optimization level through CMake build type such as debug/release/releasewithdebinfo.
Then found giving -O2+ optimization option for AVX512 on Xeon CPU breaks result consitency.
(I'm using GCC 10.2.1 on CentOS 7)
Below comparison result among platform / instruction / optimization:
i7 AVX2 with -O0 == i7 AVX2 with -O2
i7 AVX2 with -O0 == Xeon AVX2 with -O0 (Xeon forced to use AVX2)
i7 AVX2 with -O0 == Xeon AVX2 with -O2 (Xeon forced to use AVX2)
i7 AVX2 with -O0 == Xeon AVX512 with -O0
but
i7 AVX2 with -O0 != Xeon AVX512 with -O2
I wander if this is known issue so optimization should be avoided, or I'm missing something.
Thank in advnace.