A parallel application binary interface for Fortran 2018 compilers.
repeat()
intrinsic function was embedding build path information and an alternate approach is used in its placePlease see the installation instructions for more details on how to build and install this version of OpenCoarrays
DO NOT USE THIS RELEASE
repeat()
intrinsic function was embedding build path information and an alternate approach is used in its placePlease see the installation instructions for more details on how to build and install this version of OpenCoarrays
team
argument to team_number()
thanks to @nathanweekscaf
wrapper script can't be used for shared libs since it defaults
to linking in libcaf_mpi.a
which is compiled w/o -fPIC
; now
position independent code (PIC) is used for the static lib tooassertions
--> oc_assertions
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
install.sh
now offers an order-of-magnitude speedup when building GCC. The speedup results from configuring GCC with --disable-bootstrap
. The new --bootstrap
and -Z
flags may be used override the default behavior if the default build fails. π’install.sh
now defaults to building GCC 8.2.0 if it's not already first in the user's PATH
. We aim to keep up with GCC releases going forward. The default behavior can still be overridden with --with-c
, --with-fortran
, and with-cxx
. π./install.sh --prefix-root ${HOME}/software
. π₯π₯ π This release has been yanked. There was an issue in the release process that caused incorrect versioning information to appear in the OpenCoarrays wrapper scripts and libraries. Please download the 2.3.1 release instead. We apologize for any inconvenience this may have caused.
install.sh
now offers an order-of-magnitude speedup when building GCC. The speedup results from configuring GCC with --disable-bootstrap
. The new --bootstrap
and -Z
flags may be used override the default behavior if the default build fails. π’install.sh
now defaults to building GCC 8.2.0 if it's not already first in the user's PATH
. We aim to keep up with GCC releases going forward. The default behavior can still be overridden with --with-c
, --with-fortran
, and with-cxx
. π./install.sh --prefix-root ${HOME}/software
. π₯π₯ π A number of compiler side issues were present in GFortran 8.1. Now that 8.2 has been released we are deprecating support for GFortran 6.x and earlier. Officially supported versions of GCC/GFortran are 7.x and 8.2+. We anticipate 6.x will continue to mostly work for some time, however, we will be phasing out support for GFortran 6 over time.
-DCAF_ENABLE_ISO_Fortran_BINDING:BOOL=ON
when configuring with CMake.
(If OPENCOARRAYS_DEVELOPER is set in the user's environment it will also
default to turning on the build of ISO_Fortran_BINDING.)allocate_as_barrier_proc
now passes consistently with
GFortran7.4 and 8.2DYLD_LIBRARY_PATH
not LD_LIBRARY_PATH
when on macOS and custom
GFortran was installedco_heat
test fixed and pass condition made more
rigorousCFI_SUCCESS
value is now zero, consistent with the Fortran 2018 standardcafrun
now accepts -show
in addition to -s
and --show
to mimic
MPI wrappers. This now allows support from TAU Commander--allow-run-as-root
when running tests and
using OpenMPIPlease see the installation instructions for more details on how to build and install this version of OpenCoarrays
This is the first release that supports GCC 8. The new install.sh
patches GCC 8.1.0 when building GCC from source (e.g., via ./install.sh -p gcc -z -I 8.1.0
). The patch partially reverts a gfortran commit that occurred just before GCC 8 released and blocked OpenCoarrays builds. π€
This release adds the Fortran 2018 Draft International Standard's ISO_Fortran_binding.h
C header file, containing prototypes for functions that C programs may use to manipulate interoperable Fortran data objects by exploiting metadata describing the type, rank, extents, contiguity, and other information about the object. OpenCoarrays now builds and installs a library containing eight functions described in ISO_Fortran_binding.h
:
CFI_allocate
, CFI_deallocate
. Allocate or deallocate Fortran allocatable variables. πCFI_establish
. Establish the metadata necessary to access Fortran variables inside a C descriptor struct
.CFI_address
. If a C descriptor describes a scalar variable, find its address. If it describes an array, find the address of the element with column-major (Fortran ordering) indexing. :house:CFI_is_contiguous
. Determine whether a Fortran array is contiguous.CFI_select_part
. Update a C descriptor to select an element or contiguous elements of a Fortran derived type. The variable whose part is selected could be an array section of derived type. π£ββοΈCFI_section
. Update a C descriptor to select a section of an array. The array can be of interoperable derived types. The array can also be composed of elements of a derived type, i.e., a C descriptor updated by CFI_select_part
. The array can also be a section.CFI_setpointer
: Update a C descriptor to point at a Fortran variable. πΉReleasing ISO_Fortran_binding.h
in OpenCoarrays accomplishes several goals:
The API is the opencoarrays module. The ABI is in libcaf.h.
This release
MPI_Gatherv
. π±xv(loc_idx(1:nhl,ip)) = xv(rmt_idx(1:nhl,ip))[xchg(ip)]
). π©Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
This 2.0.0 release contains
As described in the Fortran 2018 Draft International Standard, teams are sets of images that readily execute independently of other sets of images. This ability to decouple sets of images is expected to become increasingly important as applications scale to large numbers of parallel execution units, e.g., on many tens or hundreds of thousands of cores. In a future release, teams will also play a role in supporting the fault tolerance that is expected to be required of exascale applications wherein teams may be used to cordon off failed images from non-failed ones. GFortran and OpenCoarrays already support failed images, but do not yet support the use of teams in the presence of failed images. For short code examples of the teams support in OpenCoarrays, see Rouson, McCreight, and Fanfarillo, 2018.
N.B.:
Teams requires the use of GFortran 8.x, currently under development and is not accessible from OpenCoarrays built against GFortran versions β€ 7.x.
Among other uses, allocatable and pointer components in derived-type coarrays provide for asymmetric allocations of memory across images, thereby facilitating much greater flexibility and sophistication in designing data structures and communicating data of varying size and shape. Experimental support for this capability in OpenCoarrays has been more complete if built with GCC 6. This release fixes several regressions that previously prevented most uses of this feature with GCC 7.
The installation documentation has been streamlined. The previous INSTALL.md file has been condensed and a new INSTALL text file provides canonical CMake directions for experienced developers.
N.B.:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
If you wish to verify the GnuPG signature of the cryptographic checksum, which we sign
with key
fingerprint: 1DB1 B5ED E321 22B2 8E56 810D CB21 118C 92A6 4702
long key id: 0xCB21118C92A64702
you may need to refresh the public key from the key servers; The key(s) we use to sign
releases had been set to expire on Saturday 17 February 2018 and have recently been
updated with a new expiry date in 2020. You can fetch updates from the command line
with `gpg --refresh-keys` or using your GPG key manager interface, such as GPG Tools
for macOS.
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEqUSJ2TjLk2Zo+QkRqTznDYAhvQ8FAlqiuQcACgkQqTznDYAh
vQ+mlQ//bIcFYxweXMfN1C1OYaYZM+M0q0MuQomjrZkhv6EqDvEIIsCWRBT9mCgd
OCfN1IeKIuocowW6ueH/js/b6Bni36Q4++TiLasrctxiceC4mfxt08MgOD0b2k0n
sDft0jbzyL2lWu1zl7wQWYQb9f2LXGfO6v1TTUmEBz3QiPCKMWRSQiwozzxwc9nh
dphUUMMHnobl5L4awvNOMKapRsTALBHZ+6ypqcjMjQuc6tdkxzVG4snTXDPaT271
l/vm+QDyRRVWZg34O2txtbkuuuI91p+xHKAb05xTZS3764K16ixQs/dZipS9l288
SU9ISzGcx1iHtRX2Z+ZG1C3l7t/T2Sr6eWJKQ6DyTdsmBreB1y7MndMK4FZkajH1
Tblv4LSAHLIUsYJ+VCtu5T7o+Lycb3U1FmSatPThYms4zW1hebwEsYpbxM0csqci
itsedrCdNQVwjhOGkNoWNAwbwE3jJRuXDGwCBxPMHtdBrZpeeCYGSgzzityOOVE7
fiI+XRWvibcaFB7idR9qMm1TLhxwUcwajdw/y9bhG2YT16zQLaXM9lES2bQYSFMC
29s2cH9QIguk/++GXP3w9jW2zITx2AvTT5XDUMQeHCIfRPvBDicNXRv5RH7tOlF7
2LmgYAfCXkRAwNvk1txIWKfVvDZvM9FUQkwAH1niFwpKuXRlu3E=
=67fw
-----END PGP SIGNATURE-----
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
This 2.0.0 release candidate contains
As described in Technical Specification 18508, teams are sets of images that readily execute independently of other sets of images. This ability to decouple sets of images is expected to become increasingly important as applications scale to large numbers of parallel execution units, e.g., on many tens or hundreds of thousands of cores. In a future release, teams will also play a role in supporting the fault tolerance that expected to be required of exascale applications wherein teams may be used to cordon off failed images from non-failed ones. GFortran and OpenCoarrays already support failed images, but do not yet support the use of teams in the presence of failed images. For short code examples of the teams support in OpenCoarrays, see Rouson, McCreight, and Fanfarillo, 2018.
Among other uses, allocatable and pointer components in derived-type coarrays provide for asymmetric allocations of memory across images, thereby facilitating much greater flexibility and sophistication in designing data structures and communicating data of varying size and shape. Experimental support for this capability in OpenCoarrays has been more complete if built with GCC 6. This release fixes several regressions that previously prevented most uses of this feature with GCC 7.
The installation documentation has been streamlined. The previous INSTALL.md file has been condensed and a new INSTALL text file provides canonical CMake directions for experienced developers.
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
ctest
/make check
/make test
will oversubscribe these tests appropriately when not enough cores are
avaialable.make dist
target to help OpenCoarrays developers produce
release assets: source tarballs, SHA 256 checksums and PGP signatures
if GPG is setup locallyPlease see the installation instructions for more details on how to build and install this version of OpenCoarrays