Fix rare failure in match sort kernel #31
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The sort kernel uses Parallel Bubble Sort and switches between even and odd phases. In the rare case where every even pair is sorted but not the whole sequence, no swap will be performed during the initial even phase. Therefore, the sequence is considered sorted, the loop stops and no odd phase is triggered. This case becomes more likely for short sequences like this one here:
1 2 5 6 3 4
Even phase checks : 1 < 2, 5 < 6, 3 < 4 --> no swap performed
This issue is fixed by enforcing that at least one even and odd phase is performed.