Intel® Advisor Help
Inlining is disabled by compiler option. To fix: When using the Ob or inline-level compiler option to control inline expansion, replace the 0 argument with the 1 argument to enable inlining when an inline keyword or attribute is specified or the 2 argument to enable inlining of any function at compiler discretion.
Windows* OS | Linux* OS |
---|---|
/Ob1 or /Ob2 | -inline-level=1 or -inline-level=2 |
Alternatively use #include <mathimf.h> header instead of the standard #include <math.h> header to call highly optimized and accurate mathematical functions commonly used in applications that rely heaving on floating point computations.
Read More:
Your application calls scalar instead of vectorized versions of math functions. To fix: Do all of the following:
Example:
gcc program.c -O2 -ftree-vectorize -funsafe-math-optimizations -mveclibabi=svml -L/opt/intel/lib/intel64 -lm -lsvml -Wl,-rpath=/opt/intel/lib/intel64
#include "math.h" #include "stdio.h" #define N 100000 int main() { double angles[N], results[N]; int i; srand(86456); for (i = 0; i < N; i++) { angles[i] = rand(); } // the loop will be auto-vectorized for (i = 0; i < N; i++) { results[i] = cos(angles[i]); } return 0; }
Read More:
Your application calls scalar instead of vectorized versions of math functions. To fix: Do all of the following:
Note : Also use the -I/path/to/glibc/install/include and -L/path/to/glibc/install/lib compiler options if you have multiple Glibc libraries installed on the host.
Example:
gcc program.c -O2 -fopenmp -ffast-math -lrt -lm -mavx2 -I/opt/glibc-2.22/include -L/opt/glibc-2.22/lib -Wl,--dynamic-linker=/opt/glibc-2.22/lib/ld-linux-x86-64.so.2
#include "math.h" #include "stdio.h" #define N 100000 int main() { double angles[N], results[N]; int i; srand(86456); for (i = 0; i < N; i++) { angles[i] = rand(); } #pragma omp simd for (i = 0; i < N; i++) { results[i] = cos(angles[i]); } return 0; }
Read More:
Your application calls serialized versions of math functions when you use the precise floating point model. To fix: Do one of the following:
Windows* OS | Linux* OS |
---|---|
/Qfast-transcendentals | -fast-transcendentals |
CAUTION: This may reduce floating point accuracy.
Example:
void add_floats(float *a, float *b, float *c, float *d, float *e, int n) { int i; #pragma omp simd for (i=0; i<n; i++) { a[i] = a[i] + b[i] + c[i] + d[i] + e[i]; } }
Read More:
Your application calls serialized versions of math functions when you use the strict floating point model. To fix: Do one of the following:
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.
Example:
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]; } }
Read More: