2011-08-23 219 views
3

我是新来的cuda编程,并且有兴趣实现一种算法,当编码从一个向量通过一个向量连续计算两个或多个平均值时。在cuda做这样的事情会有什么效果?计算条件平均值

存在两个长度为N的向量,元素值和标识每个元素属于哪个子集的指示符值。

有没有一种有效的方法来做到这一点,或者这应该在M遍中完成,其中M是要计算的方法的数量,并使用索引键的向量作为每个子集的元素值?

回答

3

您可以通过一次调用thrust::reduce_by_key来实现此功能。特别是,看看"summary statistics" example,它一次计算单个向量的几个统计特性。您可以将此方法推广到reduce_by_key,该方法可并行计算多个子向量的减少量。您的“指标值”将提供用于确定每个元素属于哪个子矢量的“键”reduce_by_key

+0

非常好。那么你如何建议处理只有连续密钥被减少的要求?你应该尝试以某种方式预处理密钥,或者处理reduce_by_key关闭设备的结果? – darckeen

+1

在调用reduce_by_key之前,您应该对键进行排序(推挤:: sort_by_key)。 –

2

将每个向量分隔成更小的向量,并使用线程将每个子向量的必需元素相加。然后结合总和并生成全局手段。我会尝试同时生成M方法,而不是执行M遍。