pipeline

Date:

01-09-2012

NAME

pipeline, nopipeline - enables or disables software—based vector pipelining

SYNOPSIS

#pragma _CRI pipeline
#pragma _CRI nopipeline
!DIR$ PIPELINE
!DIR$ NOPIPELINE

IMPLEMENTATION

Cray Linux Environment (CLE)

DESCRIPTION

Software-based vector pipelining (software vector pipelining) provides additional optimization beyond the normal hardware-based vector pipelining. In software vector pipelining, the compiler analyzes all vector loops and automatically attempts to pipeline a loop if doing so can be expected to produce a significant performance gain. This optimization also performs any necessary loop unrolling.

In some cases the compiler either does not pipeline a loop that could be pipelined, or pipelines a loop without producing performance gains. In these situations, you can use the pipeline or nopipeline directive to advise the compiler to pipeline or not pipeline the loop immediately following the directive.

Software vector pipelining is valid only for the innermost loop of a loop nest.

The pipeline and nopipeline directives are advisory only. While you can use the nopipeline directive to inhibit automatic pipelining, and you can use the pipeline directive to attempt to override the compiler’s decision not to pipeline a loop, you cannot force the compiler to pipeline a loop that cannot be pipelined.

Loops that have been pipelined are so noted in loopmark listing messages.

SEE ALSO

intro_directives(1)