0

我需要使用(快速排序)解决排序问题,所以我的问题是当我尝试运行代码时出现许多错误,但主要错误是当我回忆内核快速排序时,因为内核调用自身两次,所以我该如何解决这个问题,在我的代码下面,所以任何人都可以帮助我。

注意:我是 cuda 编程的新手。

__global__ void QuickSort(int p, int r,char *c)
{
    if (p < r)

    {   int q = Partition(p, r, c);
                QuickSort<<<5,5>>>(p, q-1,c); 
                QuickSort<<<5,5>>>(q+1, r,c);   

    }
}

4

1 回答 1

1

您的 GPU 卡(计算能力 3.0)不支持动态并行,它需要计算能力 3.5 或更高。动态并行是在 GPU 中支持新分配资源的递归方法。此处显示了具有 cuda 实现和动态并行信息的快速排序算法http://blogs.nvidia.com/2012/09/how-tesla-k20-speeds-up-quicksort-a-familiar-comp-sci-code/ .

但是,在您的 GPU 中,我建议采用不同的方式来实现快速排序,因为上面链接中的实现只是为了展示动态并行的好处,而不是展示具有最佳性能的算法。您可以参考这篇论文“GPU-Quicksort A Practical Quicksort Algorithm for Graphics Processors”以获得更好的显卡性能。

于 2012-12-29T14:35:48.107 回答