@@ -40,41 +40,25 @@ notebook.
4040Overview
4141--------
4242
43- [ OpenCoarrays] is an open-source software project
44- that supports the coarray Fortran (CAF) parallel programming features
45- of the Fortran 2008 standard and several features proposed for Fortran
46- 2015 in the draft Technical Specification [ TS 18508] _ Additional
47- Parallel Features in Fortran_ .
48-
49- OpenCoarrays provides a compiler wrapper (named ` caf ` ), a runtime
50- library (named ` libcaf_mpi.a ` by default), and an executable file
51- launcher (named ` cafrun ` ). With OpenCoarrays-aware compilers, the
52- compiler wrapper passes the provided source code to the chosen
53- compiler (` mpifort ` by default). For non-OpenCoarrays-aware compilers,
54- the wrapper transforms CAF syntax into OpenCoarrays procedure calls
55- before invoking the chosen compiler on the transformed code. The
56- runtime library supports compiler communication and synchronization
57- requests by invoking a lower-level communication library--the Message
58- Passing Interface ([ MPI] ) by default. The launcher passes execution
59- to the chosen communication library's parallel program launcher
60- (` mpiexec ` by default).
61-
62- OpenCoarrays defines an application binary interface ([ ABI] ) that
63- translates high-level communication and synchronization requests into
64- low-level calls to a user-specified communication library. This
65- design decision liberates compiler teams from hardwiring
66- communication-library choice into their compilers and it frees Fortran
67- programmers to express parallel algorithms once and reuse identical
68- CAF source with whichever communication library is most efficient for
69- a given hardware platform. The communication substrate for
70- OpenCoarrays built with the preferred build system, CMake, is the
71- Message Passing Interface ([ MPI] ).
72-
73- OpenCoarrays enables CAF application developers to express parallel
74- algorithms without hardwiring a particular version of a particular
75- communication library or library version into their codes. Such
76- abstraction makes application code less sensitive to the evolution of
77- the underlying communication libraries and hardware platforms.
43+ [ OpenCoarrays] supports [ Fortran 2018] compilers by providing a
44+ parallel application binary interface (ABI) that abstracts away the
45+ underlying parallel programming model, which can be the Message
46+ Passing Interface ([ MPI] ) or [ OpenSHMEM] . Parallel Fortran 2018
47+ programs may be written and compiled into object files once, and
48+ then linked or relinked to either MPI or OpenSHMEM without modifying
49+ or recompiling the Fortran source. Not a single line of source code
50+ need change to switch parallel programming models. The default MPI,
51+ which we expect to provide the broadest support for Fortran 2018 for
52+ the foreseeable future. However, having the option to parallel
53+ programming models at link-time aids portability and performance
54+ (see [ Rouson et al. 2017] and [ Rasmussen et al. 2018] ).
55+
56+ OpenCoarrays provides a compiler wrapper (` caf ` ), parallel runtime
57+ libraries (` libcaf_mpi ` and ` libcaf_openshmem ` ), and a parallel
58+ executable file launcher (` cafrun ` ). The wrapper and launcher
59+ provide a uniform abstraction for compiling and executing parallel
60+ Fortran 2018 programs without direct reference to the underlying
61+ parallel programming model.
7862
7963Downloads
8064---------
@@ -84,33 +68,21 @@ Please see our [Releases] page.
8468Compatibility
8569-------------
8670
87- The GNU Compiler Collection ([ GCC] ) Fortran front end ([ gfortran] ) is
88- OpenCoarrays-aware for release versions 5.1.0 and higher. Users of
89- other compilers, including earlier versions of gfortran, can access a
90- limited subset of CAF features via the provided [ opencoarrays module] .
91- After installation, please execute the ` caf ` script (which is
92- installed in the ` bin ` directory of the installation path) with no
93- arguments to see a list of the corresponding limitations. Please also
94- notify the corresponding compiler vendor and the OpenCoarrays team
95- that you would like for a future version of the compiler to be
96- OpenCoarrays-aware.
71+ The GNU Compiler Collection ([ GCC] ) Fortran front end ([ gfortran] ) has
72+ used OpenCoarrays since the GCC 5.1.0 release . Discussions are under
73+ way around incorporating OpenCoarrays into other compilers.
9774
9875Prerequisites
9976-------------
10077
101- We expect our LIBCAF_MPI library to be the default OpenCoarrays
102- library. LIBCAF_MPI is the most straightforward to install and use,
103- the most robust in terms of its internal complexity, and the most
104- frequently updated and maintained. Building LIBCAF_MPI requires prior
105- installation of an MPI implementation. We recommend [ MPICH ] generally
106- or, if available, [ MVAPICH ] for better performance. [ OpenMPI ] is
107- another option .
78+ Buildin OpenCoarrays requires the following packages:
79+ * MPI
80+ * CMake
81+ * A Fortran 2018 compiler (currently only GCC is supported).
82+ * _ Optional _ : OpenSHMEM
83+ If you use a package manager or the OpenCoarrays installer, any
84+ missing prerequisites will be built for you .
10885
109- We offer an unsupported LIBCAF_GASNet alternative. We intend for
110- LIBCAF_GASNet to be an "expert" alternative capable of outperforming
111- MPI for some applications on some platforms. LIBCAF_GASNet requires
112- greater care to configure and use and building LIBCAF_GASNet requires
113- prior installation of [ GASNet] .
11486
11587Installation
11688------------
@@ -136,10 +108,7 @@ A list of open issues can be viewed on the
136108Support
137109-------
138110
139- * Please submit bug reports and feature requests via our [ Issues] page.
140- * Please submit questions regarding installation and use via our
141- [ Google Group] by signing into [ Google Groups] or [ subscribing] and
142- sending email to
[ [email protected] ] .
111+ Please submit bug reports and feature requests via our [ Issues] page.
143112
144113Acknowledgements
145114----------------
0 commit comments