PolyOpt/C offer numerous tuning possibilities, use --polyopt-help
for a comprehensive list. We distinguish two main categories of
options that impact how the program will be transformed: (1) options
that control how SCoP are extracted; and (2) options that control how
each individual SCoP is transformed.
The following options are available to control how SCoP extraction is being performed, and in particular how non-compliant features are handled.
--polyopt-safe-math-func
: Consider function calls whose prototype is declared in math.h (e.g., round, sqrt, etc.) as side-effect free functions, meaning a call to one of these functions will not break the SCoP.
--polyopt-approximate-scop-extractor
: Over-approximate non-affine array accesses to scalars (all array cells are approximated to be read/written for each array reference).
--polyopt-scop-extractor-verbose=1
: Verbosity option. Reports which functions have been analyzed.
--polyopt-scop-extractor-verbose=2
: Verbosity option. Reports which SCoPs have been detected.
--polyopt-scop-extractor-verbose=3
: Verbosity option. Reports which SCoPs have been detected.
--polyopt-scop-extractor-verbose=4
: Verbosity option. Reports which SCoPs have been detected, print their polyhedral representation, print all nodes that broke the SCoP.
The following options are available to control PoCC, the polyhedral
engine. In particular, those control the Pluto module that is
responsible for computing the loop transformation to be applied to the
SCoP.
--polyopt-pocc-verbose
:
--polyopt-pluto
: Activate the Pluto module.
--polyopt-pluto-tile
: Activate polyhedral tiling.
--polyopt-pluto-parallel
: Activate coarse-grain parallelization.
--polyopt-pluto-prevector
: Activate fine-grain parallelization.
--polyopt-pluto-fuse-<maxfuse,smartfuse,nofuse>
: Control which fusion heuristic to use (default is smartfuse).
--polyopt-pluto-rar
: Consider Read-After-Read dependences for improved data locality.