我试图在CUDA中编写一个代码,以便为给定的一组数字找到最大值。
假设您有20个数字,并且内核运行在由5个线程组成的两个块上。现在假设10个线程同时比较前10个值,线程2找到一个最大值,所以线程2在全局内存中更新最大值变量。当线程2正在更新时,使用旧值进行比较的剩余线程(1,3-10)会发生什么情况?
如果我使用atomicCAS()锁定全局变量,那么线程(1,3-10)会使用旧的最大值进行比较吗?我怎样才能克服这个问题?
发布于 2011-03-10 06:12:04
这纯粹是一个约简问题。这是一个很好的介绍性由NVIDIA为优化减少GPU。您可以使用相同的技术来查找所有元素的最小值、最大值或和。
发布于 2017-08-11 08:30:48
发布于 2011-03-10 07:42:13
除非您试图编写一个精简内核,否则最简单的方法就是使用古布拉斯。
https://stackoverflow.com/questions/5255962
复制相似问题