- 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