gpt4 book ai didi

cuda - 使用 Thrust 计算直方图

转载 作者:行者123 更新时间:2023-12-01 03:59:14 25 4
gpt4 key购买 nike

i是像下面这样的随机游走(每个索引不是唯一的),并且有一个设备向量A充满零。

{0, 1, 0, 2, 3, 3,  ....}

推力有没有可能使 A[i]自动递增,操作后 A可能看起来像
//2 means appears count of 0's
//1 means appears count of 1's
//1 means appears count of 2's
//2 means appears count of 3's
{2, 1, 1, 2}

我尝试了几种情况,但这些情况仅在 A 时才有效是一个宿主向量,我猜是因为推力是平行的,所以以前的结果不能影响新的结果,结果可能看起来像
//不管索引出现多少次都只计算一次
{1, 1, 1, 1}

推力可以通过设备向量 A 和随机游走索引向量实现我的目标吗?

最佳答案

如果您正在寻求通过 Thrust 进行直方图计算,那么您可能希望注意到有一个 Thrust documentation example提供两种不同的算法:

  • 密集直方图,使用 sort对数组进行排序,然后使用 upper_bound确定一个累积直方图,最后使用 adjacent_difference计算直方图;
  • 稀疏直方图,使用 sort对数组进行排序,然后 reduce_by_key ,正如@Eric 在他的评论中提到的那样。

  • 从这两个线程
  • histogram or count_by_key ;
  • How to obtain a histogram from a sorted sequence .

  • 我想说的是,以上是使用 Thrust 实现直方图的仅有的两种方法。我已经在 Kepler K20c 卡上对这两种方法进行了计时,这些是时机:
  • N=1024*16 ; # bins = 16*16 ;密集 = 2.0ms ;稀疏 = 2.4ms ;
  • N=1024*128 ; # bins = 16*128 ;密集 = 3.4ms ;稀疏 = 3.1ms ;

  • 考虑到时间确实取决于输入数组的事实,我会说结果似乎没有显着不同。

    需要注意的是,CUDA 样本提供了直方图计算示例,但针对 64 进行了优化。或 256 bins,因此它与上述推力代码不同。

    关于cuda - 使用 Thrust 计算直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14642442/

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