2011-08-23 221 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遍。