MultiGPU中的原子交换排序算法

时间:2014-04-24 02:14:56

标签: sorting multi-gpu

如何在MultiGPU中实现原子交换排序算法?有参考资料吗?

1 个答案:

答案 0 :(得分:0)

如果您指出可能使用的算法,作为帮助回答此问题的指南,将会有所帮助。

所以,我从http://www.codingunit.com/exchange-sort-algorithm

中提取了一个算法

这是基本算法:

int main(void)
{
    int array[5];       // An array of integers.
    int length = 5;     // Lenght of the array.
    int i, j;
    int temp;

        //Some input
    for (i = 0; i < 5; i++)
    {
        cout << "Enter a number: ";
        cin >> array[i];
    }

    //Algorithm
    for(i = 0; i < (length -1); i++)
    {
        for (j=(i + 1); j < length; j++)
        {
            if (array[i] < array[j])
            {
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }
    //Some output
    for (i = 0; i < 5; i++)
    {
        cout << array[i] << endl;
    }
}

您可能需要查看此页面以获取可能有用的一些源代码:

http://www.bealto.com/gpu-sorting.html

但是,如果你使用OpenCL和上面的等式,你可能想要做这样的事情:

打开与每张卡的连接。

然后,在他们有外环的地方,将每一个,也许以循环方式发送到每张卡片。

然后,您需要在一个GPU上进行最终排序才能完成,但您可能希望使用不同的算法,因为此算法最适合单线程CPU。