【发布时间】:2011-07-15 13:52:52
【问题描述】:
我正在使用 CUDA 实现简单的冒泡排序算法,我有一个问题。
我执行以下代码以交换数组中的 2 个连续元素:
if(a[threadIdx.x]>a[threadIdx.x + 1])
Swap(a[threadIdx.x] , a[threadIdx.x + 1]);
请注意,块中的线程数是数组大小的一半。这是一个很好的实现吗?即使有分支,单个warp中的线程是否会并行执行?因此实际上需要 N 次迭代才能对数组进行排序?
还请注意,我知道我可以实现更好的排序算法,我可以使用 Thrust、CUDPP 或 SDK 中的示例排序算法,但就我而言,我只需要一个简单的算法即可实现。
【问题讨论】:
标签: sorting cuda bubble-sort