Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Looking for an IPP function

Christopher_A_1
Beginner
309 Views

I have the following loop that I would like to optimize. Are there any IPP function for each of these statements in the for loop?

double fast_product_sum(int n, double *a, int* indexes, double* b, double* c)
{

    double sum = 0.0;
    for (int i = 0; i < n; i++)
    {
        c = a + b[indexes];
        sum += a + b[indexes];
    }

    return sum;
}

I apprieciate any help in this matter.

Regards

Chris

0 Kudos
2 Replies
SergeyKostrov
Valued Contributor II
309 Views
Please look at a subset of IPP functions called as Vector Math functions. These functions allow to do add, subtract and multiply operations for every element of the source vector and highly optimized.
0 Kudos
SergeyKostrov
Valued Contributor II
309 Views
Chris, you're calculating the sum of a + b[ indexes ] twice: ... for (int i = 0; i < n; i++) { c = a + b[ indexes ]; sum += a + b[ indexes ]; } ... and if input arrays are very large ( for example, greater than 4MB ), indexes array has unordered/random values and all input arrays don't fit into L3 cache line then a performance of calculations will be affected.
0 Kudos
Reply