Skip to content

SmithWaterman result inconsistency by optimization level #202

@wook-choi

Description

@wook-choi

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions