Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

Looking for an IPP function

Christopher_A_1
Beginner
104 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
104 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.
SergeyKostrov
Valued Contributor II
104 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.
Reply