Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 9/08/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Guided Auto Parallelism Messages

NOTE:
This feature is only available for ifort.

The Guided Auto Parallelism (GAP) messages provide advice that should improve optimizations.

The messages provide suggestions for:

  • Automatic parallelization of loop nests

  • Automatic vectorization of inner loops

  • Data transformation

You must decide whether to follow a particular suggestion. For example, if the advice is to apply a particular directive, you must understand the semantics of the directive and carefully consider whether it can be safely applied to the loop (or loop nest) in question.

If you apply the directive improperly, the compiler may generate incorrect code, causing the application to execute incorrectly.

If you do not fully understand the suggested advice, please refer to the relevant topics in the compiler documentation before applying that advice.

Once you apply the suggested advice, the compiler assumes that it is correct and it does not perform any checks or issue any warnings.

In general, messages that relate to loops tend to target vectorization and/or parallelization of loops. If you are not familiar with loop optimizations, please refer to the compiler documentation on this kind of optimization.

Optimizations can be helped or hindered when data is fetched from or stored to memory. Sometimes these fetch and store operations are referred to as reads and writes, but do not confuse these with READ and WRITE input/output statements. A READ statement (input) is only one of many ways to cause a store to memory, and a WRITE statement (output) is only one of many ways to cause a fetch from memory. Values in an expression must be fetched from (read from) memory before the expression can be evaluated. Variables on the left-hand side of an assignment will be the target of a store to (write to) memory. Actual arguments passed to called procedures can be fetched from and stored to memory.