Skip to content

Commit 746869b

Browse files
wrong order of histogram traversal and a typecasting typo
1 parent f9cc17d commit 746869b

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

include/nbl/core/algorithm/radix_sort.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,11 @@ struct RadixSorter
7676
// prefix sum
7777
std::inclusive_scan(histogram,histogram+histogram_size,histogram);
7878
// scatter
79-
for (histogram_t i=0u; i<rangeSize; i++)
79+
for (histogram_t i=rangeSize; i!=0u;)
80+
{
81+
i--;
8082
output[--histogram[comp.operator()<shift,radix_mask>(input[i])]] = input[i];
83+
}
8184

8285
if constexpr (pass_ix != last_pass)
8386
return pass<RandomIt,KeyAccessor,pass_ix+1ull>(output,input,rangeSize,comp);
@@ -98,7 +101,7 @@ inline RandomIt radix_sort(RandomIt input, RandomIt scratch, const size_t rangeS
98101
if (rangeSize<static_cast<decltype(rangeSize)>(0x1ull<<16ull))
99102
return impl::RadixSorter<KeyAccessor::key_bit_count,uint16_t>()(input,scratch,static_cast<uint16_t>(rangeSize),comp);
100103
if (rangeSize<static_cast<decltype(rangeSize)>(0x1ull<<32ull))
101-
return impl::RadixSorter<KeyAccessor::key_bit_count,uint32_t>()(input,scratch,static_cast<uint16_t>(rangeSize),comp);
104+
return impl::RadixSorter<KeyAccessor::key_bit_count,uint32_t>()(input,scratch,static_cast<uint32_t>(rangeSize),comp);
102105
else
103106
return impl::RadixSorter<KeyAccessor::key_bit_count,size_t>()(input,scratch,rangeSize,comp);
104107
}

0 commit comments

Comments
 (0)