Recommendation: Specify the expected loop trip count | Confidence: | Low |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma loop_count | !DIR$ LOOP COUNT |
Recommendation: Disable unrolling | Confidence: | Medium |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma nounroll #pragma unroll | !DIR$ NOUNROLL !DIR$ UNROLL |
Recommendation: Use a smaller vector length | Confidence: | Medium |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma simd vectorlength | !DIR$ SIMD VECTORLENGTH |
Recommendation: Align data | Confidence: | Medium |
Recommendation: Add data padding | Confidence: | Medium |
Windows* OS | Linux* OS |
---|---|
/Qopt-assume-safe-padding | -qopt-assume-safe-padding |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma loop_count | !DIR$ LOOP COUNT |
Recommendation: Collect trip counts data | Confidence: | Need more data |
Recommendation: Use the smallest data type | Confidence: | Low |
Recommendation: Enable inline expansion | Confidence: | Low |
Windows* OS | Linux* OS | ||
---|---|---|---|
ICL Option | IFORT Option | ICC/ICPC Option | IFORT Option |
/Ob1 or /Ob2 | Ob1 or Ob2 | -inline-level=1 or -inline-level=2 | -inline-level=1 or -inline-level=2 |
Recommendation: Vectorize user function(s) inside loop | Confidence: | Low |
Target | ICL/ICC/ICPC Directive | IFORT Directive |
---|---|---|
Source Loop | #pragma simd or #pragma omp simd | !DIR$ SIMD or !$OMP SIMD |
Inner function definition or declaration | #pragma omp declare simd | !$OMP DECLARE SIMD |
Recommendation: Enable inline expansion | Confidence: | Low |
Windows* OS | Linux* OS | ||
---|---|---|---|
ICL Option | IFORT Option | ICC/ICPC Option | IFORT Option |
/Ob1 or /Ob2 | Ob1 or Ob2 | -inline-level=1 or -inline-level=2 | -inline-level=1 or -inline-level=2 |
Recommendation: Vectorize serialized function(s) inside loop | Confidence: | Medium |
Target | ICL/ICC/ICPC Directive | IFORT Directive |
---|---|---|
Source Loop | #pragma simd or #pragma omp simd | !DIR$ SIMD or !$OMP SIMD |
Inner function definition or declaration | #pragma omp declare simd | !$OMP DECLARE SIMD |
Recommendation: Enable inline expansion | Confidence: | Low |
Windows* OS | Linux* OS | ||
---|---|---|---|
ICL Option | IFORT Option | ICC/ICPC Option | IFORT Option |
/Ob1 or /Ob2 | Ob1 or Ob2 | -inline-level=1 or -inline-level=2 | -inline-level=1 or -inline-level=2 |
Recommendation: Vectorize math function calls inside loops | Confidence: | Medium |
Windows* OS | Linux* OS |
---|---|
/Qfast-transcendentals | -fast-transcendentals |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma simd or #pragma omp simd | !DIR$ SIMD or !$OMP SIMD |
Recommendation: Change the floating point model | Confidence: | Medium |
Windows* OS | Linux* OS |
---|---|
/fp:fast | -fp-model fast |
/fp:precise /Qfast-transcendentals | -fp-model precise -fast-transcendentals |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma simd or #pragma omp simd | !DIR$ SIMD or !$OMP SIMD |
Recommendation: Remove system function call(s) inside loop | Confidence: | Low |
Recommendation: Confirm dependency is real | Confidence: | Need More Data |
Recommendation: Remove dependency | Confidence: | Low |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma simd vectorlength(k) | !DIR$ SIMD VECTORLENGTH(k) |
Recommendation: Enable vectorization | Confidence: | Low |
ICL/ICC/ICPC Directive | IFORT Directive | Outcome |
---|---|---|
#pragma simd or #pragma omp simd | !DIR$ SIMD or !$OMP SIMD | Ignores all dependencies in the loop |
#pragma ivdep | !DIR$ IVDEP | Ignores only vector dependencies (which is safest) |
Recommendation: Decrease unroll factor | Confidence: | Low |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma nounroll #pragma unroll | !DIR$ NOUNROLL !DIR$ UNROLL |
Recommendation: Split loop into smaller loops | Confidence: | Low |
ICL/ICC/ICPC Directive | IFORT Directive |
---|---|
#pragma distribute_point | !DIR$ DISTRIBUTE POINT |
Recommendation: Confirm inefficient memory access patterns | Confidence: | Need More Data |
Recommendation: Use SoA instead of AoS | Confidence: | Low |
Recommendation: Reorder loops | Confidence: | Low |
Recommendation: Use the Fortran 2008 CONTIGUOUS attribute | Confidence: | Low |
Intel, and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others. © 2015 Intel Corporation