WARP_TIME_SLICING isn't supported in ScatterToStripedGuarded and ScatterToStripedFlagged
- Dominant language
- C++
- Stars
- 2.5k
- Forks
- 487
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 296
Description
`BlockExchange` provides template parameter `WARP_TIME_SLICING`. It reduces the shared memory footprint. Most of the algorithms in the `BlockExchange` have specializations for different `WARP_TIME_SLICING` values. But it isn't the case for `ScatterToStripedGuarded` and `ScatterToStripedFlagged`. Specifying `WARP_TIME_SLICING=true` leads to out of boundary accesses in these algorithms, because `int item_offset = ranks[ITEM]` isn't mapped to a proper indexation. For example, `ScatterToBlocked` perform this kind of mapping in a specialization for `WARP_TIME_SLICING=true`:
```
int item_offset = ranks[ITEM] - SLICE_OFFSET;
```
By the way, there are no tests for these algorithms.
Contributor guide
Assessment
This issue has not been assessed yet.