Hello,
This might sound a bit too basic but I need some clarification about the specific behavior in my system for -fast. The command nvfortran -help -fast
is returning:
Reading rcfile /opt/nvidia/hpc_sdk/Linux_x86_64/20.9/compilers/bin/.nvfortranrc -fast Common optimizations; includes -O2 -Munroll=c:1 -Mlre -Mautoinline == -Mvect=simd -Mflushz -Mcache_align -M[no]vect[=[no]altcode|[no]assoc|cachesize:<c>|[no]fuse|[no]gather|[no]idiom|levels:<n>|nocond|[no]partial|prefetch|[no]short|[no]simd[:{128|256}]|[no]simdresidual|[no]sizelimit[:n]|[no]sse|[no]tile] Control automatic vector pipelining [no]altcode Generate appropriate alternative code for vectorized loops [no]assoc Allow [disallow] reassociation cachesize:<c> Optimize for cache size c [no]fuse Enable [disable] loop fusion [no]gather Enable [disable] vectorization of indirect array references [no]idiom Enable [disable] idiom recognition levels:<n> Maximum nest level of loops to optimize nocond Disable vectorization of loops with conditionals [no]partial Enable [disable] partial loop vectorization via inner loop distribution prefetch Generate prefetch instructions [no]short Enable [disable] short vector operations [no]simd[:{128|256}] Generate [don't generate] SIMD instructions 128 Use 128-bit SIMD instructions 256 Use 256-bit SIMD instructions 512 Use 512-bit SIMD instructions [no]simdresidual Enable [disable] vectorization of the residual loop of a vectorized loop [no]sizelimit[:n] Limit size of vectorized loops [no]sse The [no]sse option is deprecated, use [no]simd instead. [no]tile Enable [disable] loop tiling -M[no]flushz Set SSE to flush-to-zero mode -Mcache_align Align large objects on cache-line boundaries
The use of the brackets is somewhat confusing and I need to know what is active and what is not active when -fast is invoked. Are level-2 optimization, unrolling loops, loop-carried redundancy elimination, inlining, cache aligning and prefetching enabled, whereas association, fusing, vectorization and others are disabled? Or is everything enabled and I’m just reading too much into the brackets?
Thanks.