我正在尝试在 CUDA 中编写代码来查找最大值
对于给定的一组数字。
假设您有 20 个数字,并且内核在 2 个块(每块 5 个线程)上运行。现在假设 10 个线程同时比较前 10 个值,并且thread 2找到最大值,因此线程 2 正在更新全局内存中的最大值变量。当线程 2 正在更新时,将使用旧值进行比较的剩余线程 (1,3-10) 会发生什么情况?
如果我使用atomicCAS()锁定全局变量,线程(1,3-10)是否会使用旧的最大值进行比较?我怎样才能克服这个问题?
这纯粹是一个减少问题。这里有一个好的推介会 http://www.cuvilib.com/Reduction.pdf由 NVIDIA 开发,用于优化 GPU 上的缩减。您可以使用相同的技术来查找所有元素的最小值、最大值或总和。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)