Cray Fortran CompilerTM Commands and Directives Reference Manual


Table of Contents
Preface
Accessing Cray Documentation
Error Message Explanations
Typographical Conventions
Ordering Documentation
Reader Comments
1. Introduction
1.1. Related Fortran Publications
1.2. The Cray Fortran Programming Environment
1.3. The Trigger Environment
1.3.1. Preparing the Trigger Environment
1.3.2. Working in the Programming Environment
1.4. Related Cray Fortran Publications
2. Invoking the Cray Fortran Compiler
2.1. (Deferred implementation) -a taskcommon
2.2. -A module_name[, module_name] ...
2.3. -b bin_obj_file
2.4. -c
2.5. -C cifopts
2.6. -d disable and -e enable
2.7. -D identifier[=value][,identifier[=value]]...
2.8. -f source_form
2.9. -F
2.10. -g
2.11. -G debug_lvl
2.12. -I incldir
2.13. -J dir_name
2.14. -l lib_file
2.15. -L dir
2.16. -m msg_lvl
2.17. -M msgs
2.18. -N col
2.19. -O opt[,opt] ...
2.19.1. -O n
2.19.2. -O aggress, -O noaggress
2.19.3. -O clonen
2.19.4. -O command
2.19.5. -O fpn
2.19.6. -O fusionn
2.19.7. -O gen_private_callee
2.19.8. -O infinitevl, -O noinfinitevl
2.19.9. -O inlinen, -O inlinefrom=source[:source] ...
2.19.10. -O modinline, -O nomodinline
2.19.11. -O msgs, -O nomsgs
2.19.12. -O msp
2.19.13. -O negmsgs, -O nonegmsgs
2.19.14. -O nointerchange
2.19.15. -O overindex, -O nooverindex
2.19.16. -O pattern, -O nopattern
2.19.17. -O recurrence, -O norecurrence
2.19.18. -O scalarn
2.19.19. -O shortcircuitn
2.19.20. -O ssp
2.19.21. -O streamn
2.19.22. -O task0, -O task1
2.19.23. (Deferred implementation) -O threshold, -O nothreshold
2.19.24. -O unrolln
2.19.25. -O vectorn
2.19.26. -O vsearch, -O novsearch
2.19.27. -O zeroinc, -O nozeroinc
2.20. -o out_file
2.21. -p module_site
2.22. -Q path
2.23. -r list_opt
2.24. -R runchk
2.25. -s size
2.26. -S asm_file
2.27. -T
2.28. -U identifier[,identifier] ...
2.29. -v
2.30. -V
2.31. -Wa"assembler_opt"
2.32. -Wl"loader_opt"
2.33. -Wr"lister_opt"
2.34. -x dirlist
2.35. -X npes
2.36. -Z
2.37. --
2.38. sourcefile.suffix [sourcefile.suffix ...]
3. Environment Variables
3.1. Compile Time Environment Variables
3.1.1. CRAY_FTN_OPTIONS
3.1.2. FORMAT_TYPE_CHECKING
3.1.3. FORTRAN_MODULE_PATH
3.1.4. LISTIO_PRECISION
3.1.5. NLSPATH
3.1.6. NPROC
3.1.7. (Deferred implementation) TARGET
3.1.8. TMPDIR
3.2. Run Time Environment Variables
3.2.1. CRAY_AUTO_APRUN_OPTIONS
3.2.2. OMP_DYNAMIC
3.2.3. OMP_NESTED
3.2.4. OMP_NUM_THREADS
3.2.5. OMP_SCHEDULE
3.2.6. OMP_THREAD_STACK_SIZE
3.2.7. X1_DYNAMIC_COMMON_SIZE
3.2.8. ZERO_WIDTH_PRECISION
3.2.9. Stack and Heap Environment Variables
4. Cray Fortran Compiler Directives
4.1. Using Directives
4.1.1. Directive Lines
4.1.2. Range and Placement of Directives
4.1.3. Interaction of Directives with the -x Command Line Option
4.1.4. Command Line Options and Directives
4.2. Vectorization and Tasking Directives
4.2.1. Copy Arrays to Temporary Storage: COPY_ASSUMED_SHAPE
4.2.2. Ignore Vector Dependencies: IVDEP
4.2.3. Specify Scalar Processing: NEXTSCALAR
4.2.4. Request Pattern Matching: PATTERN and NOPATTERN
4.2.5. Declare an Array with No Repeated Values: PERMUTATION
4.2.6. Designate Loop Nest for Vectorization: PREFERVECTOR
4.2.7. Designate Reduction Loops: RECURRENCE, NORECURRENCE
4.2.8. Allow Speculative Execution of Memory References Within Loops: SAFE_ADDRESS
4.2.9. Designate Loops with Low Trip Counts: SHORTLOOP, SHORTLOOP128
4.2.10. Unroll Loops: UNROLL and NOUNROLL
4.2.11. Enable and Disable Vectorization: VECTOR and NOVECTOR
4.2.12. (Deferred implementation) Specify a Vectorizable Function: VFUNCTION
4.2.13. Vectorize Search Loops: VSEARCH and NOVSEARCH
4.3. Multistreaming Processor (MSP) Directives
4.3.1. Specify Loop to be Optimized for MSP: PREFERSTREAM
4.3.2. Optimize Loops Containing Procedural Calls: SSP_PRIVATE
4.3.3. Enable MSP Optimization: STREAM and NOSTREAM
4.4. Cray Streaming Directives (CSDs)
4.4.1. CSD Parallel Regions
4.4.2. Start and End Multistreaming: PARALLEL and END PARALLEL
4.4.3. Do Loops: DO and END DO
4.4.4. Parallel Do Loops: PARALLEL DO and END PARALLEL DO
4.4.5. Synchronize SSPs: SYNC
4.4.6. Specify Critical Regions: CRITICAL and END CRITICAL
4.4.7. Define Order of SSP Execution: ORDERED and END ORDERED
4.4.8. Suppress CSDs: [NO]CSD
4.4.9. Nested CSDs within Cray Parallel Programming Models
4.4.10. CSD Placement
4.4.11. Protection of Shared Data
4.4.12. Dynamic Memory Allocation for CSD Parallel Regions
4.4.13. Compiler Options Affecting CSDs
4.5. Inlining Directives
4.5.1. Disable or Enable Cloning for a Block of Code: CLONE and NOCLONE
4.5.2. Disable or Enable Inlining for a Block of Code: INLINE and NOINLINE
4.5.3. Specify Inlining for a Procedure: INLINEALWAYS and INLINENEVER
4.5.4. Create Inlinable Templates for Module Procedures: MODINLINE and NOMODINLINE
4.6. Scalar Optimization Directives
4.6.1. Control Loop Interchange: INTERCHANGE and NOINTERCHANGE
4.6.2. Determine Register Storage: NOSIDEEFFECTS
4.6.3. Suppress Scalar Optimization: SUPPRESS
4.7. Local Use of Compiler Features
4.7.1. Check Array Bounds: BOUNDS and NOBOUNDS
4.7.2. Specify Source Form: FREE and FIXED
4.8. Storage Directives
4.8.1. Permit Cache Blocking: BLOCKABLE Directive
4.8.2. Declare Cache Blocking: BLOCKINGSIZE and NOBLOCKING Directives
4.8.3. (Deferred implementation) Declare Common Blocks Global to All Tasks: COMMON
4.8.4. Request Stack Storage: STACK
4.8.5. (Deferred implementation) Declare Common Blocks Local to Each Task: TASKCOMMON
4.9. Miscellaneous Directives
4.9.1. Specify Array Dependencies: CONCURRENT
4.9.2. Fuse Loops: FUSION and NOFUSION
4.9.3. Create Identification String: ID
4.9.4. Disregard Dummy Argument Type, Kind, and Rank: IGNORE_TKR
4.9.5. External Name Mapping: NAME
4.9.6. Avoid Placing Object into Cache: NO_CACHE_ALLOC
4.9.7. Preprocess Include File: PREPROCESS
4.9.8. Specify Weak Procedure Reference: WEAK
5. OpenMP Fortran API Directives
5.1. Using Directives
5.1.1. Comments Inside OpenMP Directives
5.2. Conditional Compilation
5.3. Parallel Region Constructs (PARALLEL and END PARALLEL Directives)
5.4. Work-sharing Constructs
5.4.1. Specify Parallel Execution: DO and END DO Directives
5.4.2. Mark Code for Specific Threads: SECTION, SECTIONS and END SECTIONS Directives
5.4.3. Request Single-thread Execution: SINGLE and END SINGLE Directives
5.4.4. Execute Code Once But Share Execution among Team: WORKSHARE and END WORKSHARE Directives
5.5. Combined Parallel Work-sharing Constructs
5.5.1. Declare a Parallel Region: PARALLEL DO and END PARALLEL DO Directives
5.5.2. Declare Sections within a Parallel Region: PARALLEL SECTIONS and END PARALLEL SECTIONS Directives
5.5.3. Declare a WORKSHARE Area within a Parallel Region: PARALLEL WORKSHARE and END PARALLEL WORKSHARE Directives
5.6. Synchronization Constructs
5.6.1. Request Execution by the Master Thread: MASTER and END MASTER Directives
5.6.2. Request Execution by a Single Thread: CRITICAL and END CRITICAL Directives
5.6.3. Synchronize All Threads in a Team: BARRIER Directive
5.6.4. Protect a Location from Multiple Updates: ATOMIC Directive
5.6.5. Read and Write Variables to Memory: FLUSH Directive
5.6.6. Request Sequential Ordering: ORDERED and END ORDERED Directives
5.7. Data Environment Constructs
5.7.1. Declare Common Blocks Private to a Thread: THREADPRIVATE Directive
5.7.2. Data Scope Attribute Clauses
5.7.3. Data Environment Rules
5.8. Directive Binding
5.9. Directive Nesting
5.10. Work Quantum
5.11. Compiling Code for OpenMP
5.12. Executing Programs Using OpenMP
5.13. Deferred OpenMP Features
5.14. Cray Implementation Differences
6. Source Preprocessing
6.1. General Rules
6.2. Directives
6.2.1. #include Directive
6.2.2. #define Directive
6.2.3. #undef Directive
6.2.4. # (Null) Directive
6.2.5. Conditional Directives
6.3. Predefined Macros
6.4. Command Line Options
Glossary
Index
List of Tables
2-1. Floating-point Optimization Levels
2-2. Automatic Inlining Specifications
2-3. Scaling Factor in Pointer Arithmetic
4-1. Directives
4-2. Compiler-calculated Chunk Size
5-1. Initialization Values
List of Figures
1-1. ftn Command Example
2-1. Optimization Values