You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
M_t_1_y should not be an exact copy of M_t_1, but instead it should be a copy prior to the vector shift. That means it should be initialized to VEC_SET1_VAL(zero) at the start of the stripe.
See this code:
https://github.com/Intel-HLS/GKL/blob/51580c453003bc60e082fa8aaafc97457e0f6057/src/main/native/pairhmm/avx-pairhmm-template.h#L201
M_t_1_y
should not be an exact copy ofM_t_1
, but instead it should be a copy prior to the vector shift. That means it should be initialized toVEC_SET1_VAL(zero)
at the start of the stripe.Background:
I have ported this code to Rust (https://github.com/philipc/gkl-rs), and I have been investigating why the values differ from the scalar implementation. In addition to this bug, there is also a difference due to use of approximations for the match-to-match probability. After addressing both of these, the Rust implementation produces values that very closely match the expected results in https://github.com/Intel-HLS/GKL/blob/master/src/test/resources/pairhmm-testdata.txt
The text was updated successfully, but these errors were encountered: