减少的输出大小取决于输入数据,并且在减少之前通常不知道该值.但是,根据您的问题,有时您会知道这个尺寸.
合理的实现只需要至少数量的键跨度元素用于输出.并且thrust::reduce_by_key
似乎包含在此列表中.
输出大小很难预测
keys 2 2 2 3 3 2 1
values 1 1 1 1 1 1 1
|----------|------|----|---|
4 spans
reduced 3 2 1 1
Run Code Online (Sandbox Code Playgroud)
输出大小等于唯一键的数量
keys 1 2 2 2 2 3 3
values 1 1 1 1 1 1 1
|--|---------------|------|
3 spans
reduced 1 4 2
Run Code Online (Sandbox Code Playgroud)
输出大小等于输入大小
keys 1 2 3 1 2 3 1
values 1 1 1 1 1 1 1
|--|---|---|---|---|---|--|
7 spans
reduced 1 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
另一件事是,如果你不需要按键输出,你可以用放弃他们thrust::discard_iterator
和节省一些额外的空间,如所描述这里.