@@ -29,52 +29,33 @@ OpenCoarrays
29
29
30
30
News
31
31
----
32
-
33
- You can now [ try OpenCoarrays online] as a [ Jupyter] [ notebook kernel]
34
- using [ Binder] ! No downloads, configuration or installation required!
35
- Please note: the default [ index.ipynb] notebook is read only. You can
36
- execute it, but if you want to make changes you should create a copy
37
- of it or create an entirely new [ CAF kernel] [ notebook kernel ]
38
- notebook.
32
+ ### Upcoming events ###
33
+ * Nov. 5-8, 2018: "[ Writing Fortran 2018 Today] " course by OpenCoarrays contributors Damian Rouson and Izaak Beekman.
34
+ * Nov. 13, 2018: [ Intel Speakerships at SC18] presentation by Damian Rouson and Sameer Shende
35
+ * Nov. 16, 2018: SC18 [ PAW-ATM Workshop] presentation by OpenCoarrays contributor Soren Rasmussen.
39
36
40
37
Overview
41
38
--------
42
39
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.
40
+ [ OpenCoarrays] supports [ Fortran 2018] compilers by providing a
41
+ parallel application binary interface (ABI) that abstracts away the
42
+ underlying parallel programming model, which can be the Message
43
+ Passing Interface ([ MPI] ) or [ OpenSHMEM] . Parallel Fortran 2018
44
+ programs may be written and compiled into object files once, and
45
+ then linked or relinked to either MPI or [ OpenSHMEM] without modifying
46
+ or recompiling the Fortran source. Not a single line of source code
47
+ need change to switch parallel programming models. The default MPI,
48
+ which we expect to provide the broadest support for Fortran 2018 for
49
+ the foreseeable future. However, having the option to parallel
50
+ programming models at link-time aids portability and performance
51
+ (see [ Rouson et al. (2017)] and [ Rasmussen et al. (2018)] ).
52
+
53
+ OpenCoarrays provides a compiler wrapper (` caf ` ), parallel runtime
54
+ libraries (` libcaf_mpi ` and ` libcaf_openshmem ` ), and a parallel
55
+ executable file launcher (` cafrun ` ). The wrapper and launcher
56
+ provide a uniform abstraction for compiling and executing parallel
57
+ Fortran 2018 programs without direct reference to the underlying
58
+ parallel programming model.
78
59
79
60
Downloads
80
61
---------
@@ -84,39 +65,35 @@ Please see our [Releases] page.
84
65
Compatibility
85
66
-------------
86
67
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.
68
+ The GNU Compiler Collection ([ GCC] ) Fortran front end ([ gfortran] ) has
69
+ used OpenCoarrays since the GCC 5.1.0 release . Discussions are under
70
+ way around incorporating OpenCoarrays into other compilers.
97
71
98
72
Prerequisites
99
73
-------------
100
74
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.
75
+ Building OpenCoarrays requires
76
+
77
+ * An MPI implementation (default: [ MPICH] ).
78
+ * CMake.
79
+ * A Fortran compiler (default: [ GCC] ).
80
+ * _ Optional_ : An [ OpenSHMEM] implementation.
81
+
82
+ If you use a package manager or the OpenCoarrays installer, any
83
+ missing prerequisites will be built for you.
108
84
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
85
115
86
Installation
116
87
------------
117
88
118
89
Please see the [ INSTALL.md] file.
119
90
91
+ Or [ try OpenCoarrays online] as a [ Jupyter] [ notebook kernel]
92
+ using [ Binder] with no downloads, configuration or installation required.
93
+ The default [ index.ipynb] notebook is read only, but you can
94
+ execute it, copy it to make changes, or create an entirely
95
+ new [ CAF kernel] [ notebook kernel ] notebook.
96
+
120
97
Getting Started
121
98
---------------
122
99
@@ -136,16 +113,14 @@ A list of open issues can be viewed on the
136
113
Support
137
114
-------
138
115
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] ] .
116
+ Please submit bug reports and feature requests via our [ Issues] page.
143
117
144
118
Acknowledgements
145
119
----------------
146
120
147
121
We gratefully acknowledge support from the following institutions:
148
122
123
+ * [ Arm] for approving compiler engineer contributions of code.
149
124
* [ National Center for Atmospheric Research] for access to the
150
125
Yellowstone/Caldera supercomputers and for logistics support during
151
126
the initial development of OpenCoarrays.
@@ -191,6 +166,15 @@ to aid in development efforts.
191
166
[ Contributing ] : #contributing
192
167
[ Acknowledgements ] : #acknowledgements
193
168
169
+ [ Fortran 2018 ] : http://isotc.iso.org/livelink/livelink?func=ll&objId=19442438&objAction=Open&viewType=1
170
+ [ Rouson et al. (2017) ] : https://github.com/sourceryinstitute/coarray-icar-paw17/blob/master/main.pdf
171
+ [ Rasmussen et al. (2018) ] : https://github.com/scrasmussen/coarray-icar-paw18/blob/master/main.pdf
172
+ [ Arm ] : https://www.arm.com
173
+ [ PAW-ATM Workshop ] : http://sourceryinstitute.github.io/PAW/
174
+ [ Writing Fortran 2018 Today ] : https://writing-fortran-2018-today.eventbrite.com
175
+ [ Intel Speakerships at SC18 ] : https://easychair.org/cfp/IntelSpeakershipsatSC18
176
+
177
+ [ OpenSHMEM ] : http://www.openshmem.org
194
178
[ sourcery-institute logo ] : http://www.sourceryinstitute.org/uploads/4/9/9/6/49967347/sourcery-logo-rgb-hi-rez-1.png
195
179
[ OpenCoarrays ] : http://www.opencoarrays.org
196
180
[ ABI ] : https://gcc.gnu.org/onlinedocs/gfortran/Coarray-Programming.html#Coarray-Programming
@@ -233,5 +217,7 @@ to aid in development efforts.
233
217
[ release img ] : https://img.shields.io/github/release/sourceryinstitute/OpenCoarrays.svg?style=flat-square " Latest release badge "
234
218
[ pdf img ] : https://img.shields.io/badge/PDF-README.md-6C2DC7.svg?style=flat-square " Download this readme as a PDF "
235
219
[ twitter img ] : https://img.shields.io/twitter/url/http/shields.io.svg?style=social
220
+ https://www.eventbrite.com/e/writing-fortran-2018-today-object-oriented-parallel-programming-tickets-48982176007
221
+ [ Writing Fortran 2018 Today ] : https://writing-fortran-2018-today.eventbrite.com
236
222
237
223
[ default tweet ] : https://twitter.com/intent/tweet?hashtags=HPC,Fortran,PGAS&related=zbeekman,gnutools,HPCwire,HPC_Guru,hpcprogrammer,SciNetHPC,DegenerateConic,jeffdotscience,travisci&text=Stop%20programming%20w%2F%20the%20%23MPI%20docs%20in%20your%20lap%2C%20try%20Coarray%20Fortran%20w%2F%20OpenCoarrays%20%26%20GFortran!&url=https%3A//github.com/sourceryinstitute/OpenCoarrays
0 commit comments