Your application calls serialized versions of math functions when you use the strict floating point model. To fix: Do one of the following:
- Use the fast floating point model to enable more aggressive optimizations or the precise floating point model to disable optimizations that are not value-safe on fast transcendental functions.
Windows* OS Linux* OS /fp:fast -fp-model fast /fp:precise /Qfast-transcendentals -fp-model precise -fast-transcendentals CAUTION: This may reduce floating point accuracy.
- Use the precise floating point model and enforce vectorization of the source loop using a directive: #pragma omp simd
gcc program.c -O2 -fopenmp -fp-model precise -fast-transcendentals#pragma omp simd collapse(2)
for (i=0; i<N; i++)
...gcc program.c -O2 -fopenmp -fp-model precise -fast-transcendentals#pragma omp simd collapse(2)
for (i=0; i<N; i++)
{
a[i] = b[i] * c[i];
for (i=0; i<N; i++)
{
d[i] = e[i] * f[i];
}
}