Parallel prefix sum - fastest Implementation

algorithm, c++

Solution

Following piece of code will do the job

void prfxSum()
{
    int *x=0;
    int *y=0;
    int sum=0;
    int num=0;
    int i=0;

    cout << "Enter the no. of elements in input array : ";
    cin >> num;

    x = new int[num];
    y = new int[num];

    while(i < num)
    {
        cout << "Enter element " << i+1 << " : ";
        cin >> x[i++];
    }

    cout << "Output array :- " << endl;
    i = 0;
    while(i < num)
    {
        sum += x[i];
        y[i] = sum;
        cout << y[i++] << ", ";
    }

    delete [] x;
    delete [] y;
}

Following is the output on execution

Enter the no. of elements in input array : 8
Enter element 1 : 1
Enter element 2 : 2
Enter element 3 : 3
Enter element 4 : 4
Enter element 5 : 5
Enter element 6 : 6
Enter element 7 : 7
Enter element 8 : 8
Output array :- 
1, 3, 6, 10, 15, 21, 28, 36

You can avoid the user input of 1000 elements of array x[] by feeding it from file or so.

Problem

I want to implement the parallel prefix sum algorithm using C++. My program should take the input array `x[1....N]`,and it should display the output in the array `y[N]`. (Note the maximum value of N is 1000.) So far, I went through many research papers and even the algorithm in Wikipedia. But my program should also display the output, the steps and also the operations/instructions of each step. I want the fastest implementation like I want to minimise the number of operations as well as the steps. For example:: ``` x = {1, 2, 3, 4, 5, 6, 7, 8 } - Input y = ( 1, 3, 6, 10, 15, 21, 28, 36) - Output ``` But along with displaying the y array as output, my program should also display the operations of each step. I also refer this thread calculate prefix sum ,but could get much help from it.

Original source