-2
我正在CUDA中编写一个函数,该函数将三维网格中的未排序点集分开。基于点集的边界,我可以找到每个点的坐标并将其写入网格单元格内的数组中。如何避免CUDA中不同块的竞争条件
我使用线程数等于点数的方式启动内核,方法是将它们分为不同的块以获得最大线程数。
现在每个线程找到它的坐标并在单元格中写入点,但同一块或不同块中的其他线程也可以同时计算相同的坐标。由于竞争条件,代码在这里失败。
我读了关于原子,锁和关键部分,但这些同步仅在一个线程块内使用,这在我的情况中不太可能。
有什么建议吗?
我最初的猜测是,我需要根据网格单元尺寸的距离的点进行排序,并启动籽粒每一块等于网格单元