[
HPF Home
|
Versions
|
Compilers
|
Projects
|
Publications
|
Applications
|
Benchmarks
|
Events
|
Contact
]
Next:
Acknowledgments
Up:
High Performance Fortran Language
Previous:
High Performance Fortran Language
Contents
Introduction
Overview
Goals and Scope of High Performance Fortran
HPF Language Model
Data Mapping Directives
Overview of HPF 2.0 Language Features
HPF 2.0 Language Features
Data Distribution Features (Sections and )
Data Parallel Execution Features (Section )
Extrinsic Program Units (Section )
Intrinsic Functions and Standard Library (Section )
HPF 2.0 Approved Extensions
Extensions for Data Mapping (Section )
Extensions for Data and Task Parallelism (Section )
Extensions for Asynchronous I/O (Section )
Extensions to Intrinsic and Library Procedures (Section )
Approved Extensions for HPF Extrinsics (Section )
Changes from HPF 1.1
Repartitioning of the Language
Features Now in Standard Fortran
Features Removed or Restricted in HPF 2.0
Features Moved to Approved Extensions
New Features of HPF 2.0
New Approved Extensions
Recognized Externally-Supported HPF Extrinsics
Notation and Syntax
Notation
Syntax of Directives
High Performance Fortran Language
Data Mapping
Model
Syntax of Data Alignment and Distribution Directives
The DISTRIBUTE Directive
The ALIGN Directive
Allocatable Arrays and Pointers
The PROCESSORS Directive
The TEMPLATE Directive
Storage and Sequence Association
Storage Association
Definitions
Examples of Definitions
The SEQUENCE Directive
Storage Association Rules
Storage Association Discussion
Data Mapping in Subprogram Interfaces
Introduction
What Remapping Is Required and Who Does It
Distributions and Processor Arrangements
Examples
What Happens When a Clause Is Omitted
Alignment
The Template of the Dummy Argument
The INHERIT Directive
Examples
Descriptive ALIGN Directives
Example
Equivalence and Partial Order on the Set of Mappings
Conditions for Omitting Explicit Interfaces
Characteristics of Procedures
Argument Passing and Sequence Association
Sequence Association Rules
Discussion of Sequence Association
Examples of Sequence Association
INDEPENDENT and Related Directives
The INDEPENDENT Directive
Visualization of INDEPENDENT Directives
Examples of INDEPENDENT
NEW Variables
Examples of NEW
REDUCTION Variables and Statements
Semantics and Implementation of Reduction
Further Examples of INDEPENDENT Directives
Extrinsic Program Units
Overview
Declaration of Extrinsic Program Units
Function and Subroutine Statements
Program, Module, and Block Data Statements
The EXTRINSIC Prefix
Calling HPF Extrinsic Subprograms
Access to Types, Procedures, and Data
Types
Procedures
Data
The Effect of a Call
Examples of Extrinsic Procedures
Intrinsic and Library Procedures
Notation
System Inquiry Intrinsic Functions
Computational Intrinsic Functions
Library Procedures
Mapping Inquiry Subroutines
Bit Manipulation Functions
Array Reduction Functions
Array Combining Scatter Functions
Array Prefix and Suffix Functions
Array Sorting Functions
Generic Intrinsic and Library Procedures
System Inquiry Intrinsic Functions
Mapping Inquiry Subroutines
Bit Manipulation Functions
Array Reduction Functions
Array Combining Scatter Functions
Array Prefix and Suffix Functions
Array Sort Functions
Specifications of Intrinsic Procedures
ILEN(I)
NUMBER_OF_PROCESSORS(DIM)
PROCESSORS_SHAPE()
Specifications of Library Procedures
ALL_PREFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
ALL_SCATTER(MASK,BASE,INDX1, ..., INDXn)
ALL_SUFFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
ANY_PREFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
ANY_SCATTER(MASK,BASE,INDX1, ..., INDXn)
ANY_SUFFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
COPY_PREFIX(ARRAY, DIM, SEGMENT)
COPY_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
COPY_SUFFIX(ARRAY, DIM, SEGMENT)
COUNT_PREFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
COUNT_SCATTER(MASK,BASE,INDX1, ..., INDXn)
COUNT_SUFFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
GRADE_DOWN(ARRAY,DIM)
GRADE_UP(ARRAY,DIM)
HPF_ALIGNMENT(ALIGNEE, LB, UB, STRIDE, AXIS_MAP, IDENTITY_MAP, NCOPIES)
HPF_DISTRIBUTION(DISTRIBUTEE, AXIS_TYPE,
AXIS_INFO, PROCESSORS_RANK, PROCESSORS_SHAPE)
HPF_TEMPLATE(ALIGNEE, TEMPLATE_RANK, LB, UB,
AXIS_TYPE, AXIS_INFO, NUMBER_ALIGNED)
IALL(ARRAY, DIM, MASK)
IALL_PREFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
IALL_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
IALL_SUFFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
IANY(ARRAY, DIM, MASK)
IANY_PREFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
IANY_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
IANY_SUFFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
IPARITY(ARRAY, DIM, MASK)
IPARITY_PREFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
IPARITY_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
IPARITY_SUFFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
LEADZ(I)
MAXVAL_PREFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
MAXVAL_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
MAXVAL_SUFFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
MINVAL_PREFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
MINVAL_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
MINVAL_SUFFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
PARITY(MASK, DIM)
PARITY_PREFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
PARITY_SCATTER(MASK,BASE,INDX1, ..., INDXn)
PARITY_SUFFIX(MASK, DIM, SEGMENT, EXCLUSIVE)
POPCNT(I)
POPPAR(I)
PRODUCT_PREFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
PRODUCT_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
PRODUCT_SUFFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
SORT_DOWN(ARRAY,DIM)
SORT_UP(ARRAY,DIM)
SUM_PREFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
SUM_SCATTER(ARRAY,BASE,INDX1, ..., INDXn, MASK)
SUM_SUFFIX(ARRAY, DIM, MASK, SEGMENT, EXCLUSIVE)
HPF Approved Extensions
Approved Extensions for Data Mapping
Extended Model
Syntax of Attributed Forms of Extended Data Mapping Directives
The REDISTRIBUTE Directive
The REALIGN Directive
The DYNAMIC Directive
Remapping and Subprogram Interfaces
Mapping to Processor Subsets
Pointers
Mapped Pointers
Pointers and Subprograms
Restrictions on Pointers and Targets
Mapping of Derived Type Components
New Distribution Formats
The RANGE Directive
The SHADOW Directive
Equivalence and Partial Order on the Set of Mappings
Conditions for Omitting Explicit Interfaces
Characteristics of Procedures
Approved Extensions for Data and Task Parallelism
Active Processor Sets
The SUBSET Directive
Mapping Local Objects and Dummy Arguments
Other Restrictions on Active Processors
The ON Directive
Syntax of the ON Directive
Semantics of the ON Directive
Examples of ON Directives
ON Directives Applied to Subprogram Invocations
The RESIDENT Clause, Directive, and Construct
Examples of RESIDENT Clauses
RESIDENT Directives Applied to Procedure Reference
The TASK_REGION Construct
Syntax of the TASK_REGION Construct
Semantics of the TASK_REGION Construct
Execution Model and Usage
Implementation
Localized computation and communication
Replicated computations
Implications for I/O
SPMD or MIMD code generation
Example: 2-D FFT
Approved Extension for Asynchronous I/O
The WAIT Statement
Approved Extensions for HPF Extrinsics
Alternative Extrinsic Models: LOCAL and SERIAL
The LOCAL Model
Conventions for Calling LOCAL Subprograms
LOCAL Calling Sequence
Information Available to the Local Procedure
The SERIAL Model
SERIAL Calling Sequence
Extrinsic Language Bindings
Control of Arguments
HPF Bindings
Additional Special Considerations for HPF_LOCAL
Argument Association
Special Considerations for HPF_SERIAL
C Language Bindings
Specification of Interfaces to Procedures Defined in C
Specification of Data Type Mappings for C
Examples of Data Type Mappings
Fortran Language Bindings
Fortran 77 Language Bindings
Special Considerations for F77_LOCAL
Argument Passing to F77_LOCAL Procedures
F77_LOCAL Programming Examples
LAYOUT(
"0D
F77_ARRAY
"0D
) and PASS_BY(
"0D
*
"0D
)
LAYOUT(
"0D
HPF_ARRAY
"0D
) and PASS_BY(
"0D
HPF_HANDLE
"0D
)
The Extrinsic Library
HPF Local Routine Library
Accessing Dummy Arguments by Blocks
GLOBAL_ALIGNMENT(ARRAY, ...)
GLOBAL_DISTRIBUTION(ARRAY, ...)
GLOBAL_TEMPLATE(ARRAY, ...)
GLOBAL_SHAPE(SOURCE)
GLOBAL_SIZE(ARRAY, DIM)
ABSTRACT_TO_PHYSICAL(ARRAY, INDEX, PROC)
PHYSICAL_TO_ABSTRACT(ARRAY, PROC, INDEX)
LOCAL_TO_GLOBAL(ARRAY, L_INDEX, G_INDEX)
GLOBAL_TO_LOCAL(ARRAY, G_INDEX, L_INDEX,
LOCAL, NCOPIES, PROCS)
MY_PROCESSOR()
LOCAL_BLKCNT(ARRAY, DIM, PROC)
LOCAL_LINDEX(ARRAY, DIM, PROC)
LOCAL_UINDEX(ARRAY, DIM, PROC)
Library Access from Serial Extrinsics
Approved Extensions to the HPF Intrinsic and Library Procedures
Specifications of Extended Intrinsic Procedures
ACTIVE_NUM_PROCS(DIM)
ACTIVE_PROCS_SHAPE()
TRANSPOSE(ARRAY,ORDER)
Specifications of Extended Library Procedures
HPF_ALIGNMENT(ALIGNEE, LB, UB, STRIDE, AXIS_MAP, IDENTITY_MAP, DYNAMIC, NCOPIES)
HPF_DISTRIBUTION(DISTRIBUTEE, AXIS_TYPE,
AXIS_INFO, PROCESSORS_RANK, PROCESSORS_SHAPE,
PLB, PUB, PSTRIDE, LOW_SHADOW, HIGH_SHADOW)
HPF_TEMPLATE(ALIGNEE, TEMPLATE_RANK, LB, UB,
AXIS_TYPE, AXIS_INFO, NUMBER_ALIGNED, DYNAMIC)
HPF_MAP_ARRAY(ARRAY, TEMPLATE_DIM, MAP_ARRAY)
HPF_NUMBER_MAPPED(ARRAY, PROCESSORS_DIM,
NUMBER_MAPPED)
Annexes
Syntax Rules
Notation and Syntax
Syntax of Directives
Data Mapping
Syntax of Data Alignment and Distribution Directives
The DISTRIBUTE Directive
The ALIGN Directive
The PROCESSORS Directive
The TEMPLATE Directive
Storage and Sequence Association
Data Mapping in Subprogram Interfaces
Alignment
INDEPENDENT and Related Directives
The INDEPENDENT Directive
Extrinsic Program Units
Declaration of Extrinsic Program Units
Approved Extensions for Data Mapping
Syntax of Attributed Forms of Extended Data Mapping Directives
The REDISTRIBUTE Directive
The REALIGN Directive
The DYNAMIC Directive
Mapping to Processor Subsets
Mapping of Derived Type Components
New Distribution Formats
The RANGE Directive
The SHADOW Directive
Approved Extensions for Data and Task Parallelism
Active Processor Sets
The ON Directive
The RESIDENT Clause, Directive, and Construct
The TASK_REGION Construct
Approved Extension for Asynchronous I/O
The WAIT Statement
Approved Extensions for HPF Extrinsics
Extrinsic Language Bindings
Syntax Cross-reference
Nonterminal Symbols That Are Defined
Nonterminal Symbols That Are Not Defined
Terminal Symbols
HPF 1.1 Subset
Fortran 90 Features in the HPF 1.1 Subset
HPF 1.1 Directives and Language Extensions in the HPF 1.1 Subset
Previous HPFF Acknowledgments
HPFF Acknowledgments
HPFF94 Acknowledgments
References
Policy and Mechanism for Recognized Extrinsic Interfaces
Extrinsic Policy
Extrinsic Interface Mechanism
HPF_CRAFT
Introduction
Examples of Use
External Interface
Execution Model
HPF_CRAFT Functional Summary
Data Mapping Features
Subprogram Interfaces
The INDEPENDENT Directive
The ON Clause
Array Syntax
Treatment of FORALL and WHERE Statements
Synchronization Primitives
Barrier Removal
Serial Regions
Libraries
Parallel Inquiry Intrinsics
Task Identity
Parallelism Specification Directives
The SYMMETRIC Directive
The RESIDENT Directive
The ATOMIC UPDATE Directive
The GEOMETRY Directive
The FORTRAN 77 Local Library
Introduction
Summary
Global HPF Subgrid Inquiry Routine
Subgrid Inquiries Involving Embedding Arrays
Local FORTRAN 77 Inquiry Routines
Programming Example Using HPF_SUBGRID_INFO
HPF Caller
FORTRAN 77 Callee
Programming Example Using F77-Callable Inquiry Subroutines
HPF Caller
FORTRAN 77 Callee
About this document ...
©2000-2006
Rice University
[
Contact Us
|
HiPerSoft
|
Computer Science
]