一千萬個為什麽

搜索

在CUDA中查找最大值

我正在嘗試在CUDA中編寫代碼以查找最大值 對於給定的數字集。

假設您有20個數字,並且內核在2個5個線程的塊上運行。現在假設10個線程同時比較前10個值,線程2 找到最大值,因此線程2正在更新全局內存中的最大值變量。當線程2正在更新時,將使用舊值進行比較的剩余線程(1,3-10)會發生什麽?

如果我使用atomicCAS()鎖定全局變量,線程(1,3-10)將使用舊的最大值進行比較嗎?我怎樣才能克服這個問題?

最佳答案

這純粹是一個減少問題。這是NVIDIA優化的演示文稿,用於優化GPU的減少。您可以使用相同的技術來查找所有元素的最小值,最大值或總和。

轉載註明原文: 在CUDA中查找最大值