-1

How can atomic exchange sorting algorithm can be implemented in MultiGPU? Is there references available??

1 Answers1

0

It would help if you point out an algorithm that may be used, as a guideline to help answer this question.

So, I pulled an algorithm from: http://www.codingunit.com/exchange-sort-algorithm

Here is the basic 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;
    }
}

You may want to look at this page for some source code that may help:

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

But, if you use OpenCL and the equation above, you may want to do something like this:

Open a connection to each card.

Then, where they have the outer loop, send each of those, perhaps in a round-robin to each card.

You will need to then do a final sort on one GPU to finish, but you may want to use a different algorithm, as this algorithm is best on a single-threaded CPU.

James Black
  • 41,583
  • 10
  • 86
  • 166