-qassert

Category

Optimization and tuning

Purpose

Provides information about the characteristics of your code that can help the compiler fine-tune optimizations.

Syntax

Read syntax diagramSkip visual syntax diagram
Option:

>>- -q--assert--+-----------------------------+----------------><
                |    .-:--------------------. |   
                |    V     .-deps---.       | |   
                '-=------+-+-nodeps-+---+---+-'   
                         +-itercnt=n----+         
                         +-minitercnt=n-+         
                         +-maxitercnt=n-+         
                         +-CONTIGuous---+         
                         +-NOCONTIGuous-+         
                         +-refalign-----+         
                         '-norefalign---'         

@PROCESS:

@PROCESS ASSERT(suboptions)

Defaults

-qassert=deps:norefalign:nocontig

Parameters

deps | nodeps
Specifies whether or not any loop-carried dependencies exist.
itercnt=n
Specifies a value for loop iteration counts for the optimizer to use when it cannot statically determine the loop iteration count. n must be a positive integer.
minitercnt=n
Specifies the expected minimum iteration count of the loops in the program. n must be a positive integer.
maxitercnt=n
Specifies the expected maximum iteration count of the loops in the program. n must be a positive integer.
CONTIGuous | NOCONTIGuous
Specifies the following contiguity for all compilation units:
  • All array pointers are pointer associated with contiguous targets.
  • All assumed-shape arrays are argument associated with contiguous actual arguments.

When -qassert=contig is specified, the compiler can perform optimizations according to the memory layout of the objects occupying contiguous blocks of memory.

Using -qassert=contig does not have the same effect as specifying the CONTIGUOUS attribute for array pointers and assumed-shape arrays. -qassert=contig does not validate contiguity assertion. Fortran 2008 beginsTo ensure Fortran 2008 semantics, use the CONTIGUOUS attribute.Fortran 2008 ends

Notes:
  • -qassert=contig is not supported through the ASSERT directive.
  • Using this suboption might produce unexpected results without warning.
refalign | norefalign
Specifies that all pointers inside the compilation unit only point to data that is naturally aligned according to the length of the pointer types. With this assertion, the compiler might generate more efficient code. This assertion is particularly useful when you target a SIMD architecture with -qhot=level=0 or -qhot=level=1 with -qsimd=auto.

Usage

The itercnt, minitercnt, and maxitercnt values are not required to be accurate. The values only affect performance, never correctness. Specify the values following the rule minitercnt <= itercnt <= maxitercnt. Otherwise, messages are issued to indicate that the values are inconsistent and the inconsistent value is ignored.

Related information