@@ -40,41 +40,25 @@ notebook.
40
40
Overview
41
41
--------
42
42
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.
78
62
79
63
Downloads
80
64
---------
@@ -84,33 +68,21 @@ Please see our [Releases] page.
84
68
Compatibility
85
69
-------------
86
70
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.
97
74
98
75
Prerequisites
99
76
-------------
100
77
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 .
108
85
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] .
114
86
115
87
Installation
116
88
------------
@@ -136,10 +108,7 @@ A list of open issues can be viewed on the
136
108
Support
137
109
-------
138
110
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.
143
112
144
113
Acknowledgements
145
114
----------------
0 commit comments