内核召回中的CUDA快速排序

内核召回中的CUDA快速排序,cuda,quicksort,Cuda,Quicksort,我需要使用(快速排序)来解决排序问题,所以我的问题是当我尝试运行代码时,我会出现很多错误,但主要的错误是当我调用内核快速排序时,因为内核调用了自己两次,所以我如何解决这个问题,在我的代码下面,任何人都可以帮助我 注:我是cuda编程新手 __global__ void QuickSort(int p, int r,char *c) { if (p < r) { int q = Partition(p, r, c); QuickSort&

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

注:我是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);   

    }
}

\uuuu全局\uuuuu无效快速排序(int p,int r,char*c)
{
if(p
您的GPU卡(计算能力3.0)不支持动态并行,这需要计算能力3.5或更高版本。动态并行是在GPU中支持新分配资源的递归方法。本文介绍了一种具有cuda实现和动态并行信息的快速排序算法


但是,在您的GPU中,我建议使用不同的方法来实现快速排序,因为上面链接中的实现只是为了演示动态并行的好处,而不是展示具有最高性能的算法。您可以参考本文“GPU快速排序—一种适用于图形处理器的实用快速排序算法”,以获得更好的卡性能

您使用的是哪个GPU?您正在尝试的是称为动态并行(在内核中调用内核),仅在Compute Capability 3.5设备上可用(目前仅限于NVIDIA Tesla K20和K20x)。如果您是CUDA编程新手,请从比并行排序更简单的方法开始。你写的东西不起作用,毫无意义。我的nvidia卡是GEFORCE(GT 650M*2GB)。我如何在cuda中解决此设备上的快速排序问题。谢谢你的重播。