gpt4 book ai didi

c++ - CUDA Thrust reduce_by_key 使用更少的内存

转载 作者:搜寻专家 更新时间:2023-10-31 00:32:06 26 4
gpt4 key购买 nike

我正在尝试减少为我的用例计算 reduce_by_key 所需的内存。与值的数量(大约 1600 万)相比,我有相对较少的唯一键(大约 100-150)。按键减少 example显示分配用于包含结果的 device_vectors 与输入的大小相同。总是有必要这样做吗?是否可以只分配包含正确输出所需的内存?

最佳答案

reduction 的输出大小取决于输入数据,并且这个值在 reduction 之前通常是未知的。但是,根据您的问题,有时您知道这个大小。

合理的实现只需要至少键跨度数 的输出元素。和 thrust::reduce_by_key seems to be included in this list .


例子:

未排序(常见情况)

输出大小很难预测

keys        2   2   2   3   3   2   1
values 1 1 1 1 1 1 1
|----------|------|----|---|
4 spans

reduced 3 2 1 1

已排序(最佳情况)

输出大小等于唯一键的数量

keys        1   2   2   2   2   3   3
values 1 1 1 1 1 1 1
|--|---------------|------|
3 spans

reduced 1 4 2

交错,没有相邻的键重复(最坏情况)

输出大小等于输入大小

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

另一件事是,如果您不需要输出 key ,您可以使用thrust::discard_iterator 丢弃它们并节省一些额外空间,如here 所述。 .

关于c++ - CUDA Thrust reduce_by_key 使用更少的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com