Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
High Performance Fortran
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
'''High Performance Fortran''' ('''HPF''') is an extension of [[Fortran 90]] designed to support [[parallel computing]], developed by the ''High Performance Fortran Forum'' (HPFF). The HPFF was convened and chaired by [[Ken Kennedy (computer scientist)|Ken Kennedy]] of [[Rice University]]. The first version of the HPF Report was published in 1993. Building on the array syntax introduced in Fortran 90, HPF employs a [[data parallelism|data-parallel]] model of computation, enabling the distribution of array computations across multiple processors. This design facilitates efficient execution on both [[Single instruction, multiple data|SIMD]] and [[Multiple instruction, multiple data|MIMD]] architectures. Key features of HPF include: * New Fortran constructs, such as <code>FORALL</code>, and the ability to define <code>PURE</code> (side-effect-free) procedures * Compiler directives for recommended array data alignment and distribution, influenced by prior efforts such as Fortran D<ref>{{Cite web|url=https://www.researchgate.net/publication/2391612|title=Fortran D Language Specification|accessdate=29 March 2023}}</ref><ref>[http://softlib.rice.edu/pub/CRPC-TRs/reports/CRPC-TR91121.pdf An overview of Fortran D] Retrieved 29 March 2023</ref> and Vienna Fortran * Directives for specifying processor arrangements (e.g., rank, extent) * Directives for asserting loop iteration independence to enable parallel execution * An ''extrinsic procedure'' interface, allowing integration with non-HPF parallel code such as message-passing libraries * Additional library routines, including: ** Environmental inquiry functions ** Parallel prefix and suffix operations (e.g., [[prefix sum|scan]], [[segmented scan]]) ** Data scattering and gathering ** [[Sorting]] operations Some HPF capabilities were incorporated into the [[Fortran 95]] standard. Subsequently, the HPFF reconvened and released the HPF 2.0 Report, which removed features already standardized in Fortran 95 and revised other sections based on implementation experience with HPF 1.0. Although several vendors implemented HPF compilers in the 1990s, adoption was limited due to the complexity of implementation and limited practical benefit for some applications. Since then, most developers have transitioned to using [[OpenMP]] for parallel programming.{{citation needed|date=March 2007}} Nonetheless, HPF has had a lasting influence on the evolution of parallel programming in Fortran. For instance, the <code>BIT</code> data type proposal for the [[Fortran#Fortran 2008|Fortran 2008]] standard included several intrinsic functions derived from HPF. ==See also== * [[Partitioned global address space]] ==External links== * [http://hpff.rice.edu HPFF] - [[Rice University]] HPF Forum * [http://wotug.org/parallel/standards/hpf Internet Parallel Computing Archive : Standards : Hpf] * [ftp://ftp.fhg.de/archive/gmd/adaptor/ ADAPTOR]- An open-source HPF compilation system * [http://www.par.univie.ac.at/project/hpf+/ HPF+] - HPF for advanced applications * [http://portal.acm.org/citation.cfm?id=1238844.1238851 The rise and fall of High Performance Fortran: an historical object lesson] ==References== {{reflist}} [[Category:Concurrent programming languages]] [[Category:Fortran programming language family]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Reflist
(
edit
)