Releases: sourceryinstitute/OpenCoarrays
[YANKED] Build reproducibility and csh environment bug fix
⚠️ YANKED! ☠️
DO NOT USE THIS RELEASE
Minor Fixes and Improvements
- The builds are now truly reproducible:
- The Fortran
repeat()
intrinsic function was embedding build path information and an alternate approach is used in its place
- The Fortran
- A bug in the installer script caused incorrect output intended for csh users to add to their dot files
- Headers no longer include MPI headers if the build does not find MPI
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
CMake modernization and relocatable/reproducible builds
CMake modernization
Better support for:
find_package(opencoarrays)
- relocatable installation
- reproducible builds
- transitive usage requirements via CMake target properties
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
Bug fixes & build improvements
- Add optional
team
argument toteam_number()
thanks to @nathanweeks - Fix installer issues including:
- #629: problems in environment setup script
- #635:
caf
wrapper script can't be used for shared libs since it defaults
to linking inlibcaf_mpi.a
which is compiled w/o-fPIC
; now
position independent code (PIC) is used for the static lib too - Fix for binary installs of CMake if sudo is needed
- Bump default GCC/GFortran to 8.3
- Fix for the minimum compiler version compatibility check
- Reduce potential module file name clashes with other software by adopting
a prefix, e.g.,assertions
-->oc_assertions
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
OpenCoarrays 2.3.1: Bug fixes and enhancements (versioning issues fixed)
Enhancements
Installer
- Speedier GCC builds: the default behavior of
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. 👢 - Fast-following GCC:
install.sh
now defaults to building GCC 8.2.0 if it's not already first in the user'sPATH
. We aim to keep up with GCC releases going forward. The default behavior can still be overridden with--with-c
,--with-fortran
, andwith-cxx
. 🚓 - Universal root prefix: users may now override the installer's default destination for all packages at once by passing a universal root prefix such as
./install.sh --prefix-root ${HOME}/software
. 🥔🥕 🍠
Documentation
- README.md has been greatly simplified and updated, including
- Removing a use case that will no longer be supported: non-OpenCoarrays-aware compilers.
- Adding news about upcoming events related to OpenCoarrays.
- Adding citations to relevant papers and acknowledging new support from Arm.
- A link to the Fortran 2018 draft international standard.
- INSTALL.md has been updated to reflect the above installer enhancements.
- GETTING_STARTED.md has been updated to removed an unsupported use case and to simplify the advanced usage instructions.
Bug Fixes
YANKED: OpenCoarrays 2.3.0: Installer and documentation enhancements and minor bug fixes
Yanked
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.
Enhancements
Installer
- Speedier GCC builds: the default behavior of
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. 👢 - Fast-following GCC:
install.sh
now defaults to building GCC 8.2.0 if it's not already first in the user'sPATH
. We aim to keep up with GCC releases going forward. The default behavior can still be overridden with--with-c
,--with-fortran
, andwith-cxx
. 🚓 - Universal root prefix: users may now override the installer's default destination for all packages at once by passing a universal root prefix such as
./install.sh --prefix-root ${HOME}/software
. 🥔🥕 🍠
Documentation
- README.md has been greatly simplified and updated, including
- Removing a use case that will no longer be supported: non-OpenCoarrays-aware compilers.
- Adding news about upcoming events related to OpenCoarrays.
- Adding citations to relevant papers and acknowledging new support from Arm.
- A link to the Fortran 2018 draft international standard.
- INSTALL.md has been updated to reflect the above installer enhancements.
- GETTING_STARTED.md has been updated to removed an unsupported use case and to simplify the advanced usage instructions.
Bug Fixes
OpenCoarrays 2.2.0: Bug fixes and enhancements
Notable Changes
Officially supported versions of GFortran are now 7.x and 8.2+
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.
ISO_Fortran_binding and C portability issues in the last release (2.1.0)
- ISO_Fortran_binding (included in the last release) included some C code that
was not portable. It now must be asked for explicitly by passing
-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.) - ISO_Fortran_binding has not been stripped out of OpenCoarrays, but it's use
via OpenCoarrays is now deprecated and un-maintained; it will be stripped
out at a later date. - ISO_Fortran_binding has become its own package and is available from:
https://github.com/sourceryinstitute/iso_fortran_binding
Bug Fixes
- Fixed #554: Allow building with clang, ensure no VLAs by default
(ISO_Fortran_binding related) - Fixed #538/#415:
allocate_as_barrier_proc
now passes consistently with
GFortran7.4 and 8.2 - Fixed #515: Reallocate LHS issue when RHS is a coarray (off-by-one error)
- Fixed #563: Install.sh now sets user environment script to:
- use
DYLD_LIBRARY_PATH
notLD_LIBRARY_PATH
when on macOS and custom
GFortran was installed - cleanup CMake PATH & prevent redundant modification of PATH
- use
- Numerical instability in
co_heat
test fixed and pass condition made more
rigorous - Fixed #552: Checks for memory reallocation were incorrectly triggered by a
singleton on 1st dim when referencing a coarray (delta == 1) in a derived
type. - Fixed #550: Conflicting types in the ISO_Fortran_binding tests
CFI_SUCCESS
value is now zero, consistent with the Fortran 2018 standard
Enhancements
- #565:
cafrun
now accepts-show
in addition to-s
and--show
to mimic
MPI wrappers. This now allows support from TAU Commander - #520: When backed by OpenMPI, users may run entire configure, build, install
and check process as root, but OpenMPI doesn't like to execute programs as root
without an additional flag. Add--allow-run-as-root
when running tests and
using OpenMPI
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
Support GCC 8 & expand Fortran 2018 C-interoperability
Enhancement
GCC 8 Support
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. 🤕
Fortran 2018 C-Interoperability
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 descriptorstruct
.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. 🏠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 byCFI_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:
- It facilitates the file's use with compilers that don't yet provide the file.
- It aligns with moving toward using the standard descriptors in
- The OpenCoarrays parallel application binary interface (ABI) provided for coarray compilers and
- The OpenCoarrays application programming interface (API) for use with non-coarray compilers.
The API is the opencoarrays module. The ABI is in libcaf.h.
Other Enhancements
- A new list of Frequently Asked Questions (FAQ.md) and their answers. 🕵️♀️
- New unit tests that expose issues #511 and #322.
Bug fixes
This release
- Fixes issue #515 related to an OpenCoarrays bug exposed by the coarray equivalent of
MPI_Gatherv
. 🌱 - Fixes issue #522 that caused an MPICH test to fail. ⚾️
- Fixes issue #518, a regression caused by GCC 8, which uses new internal descriptors for Fortran data objects. 🔍
- Fixes issue #427 regarding remote indirect addressing via a variable cosubscript (
xv(loc_idx(1:nhl,ip)) = xv(rmt_idx(1:nhl,ip))[xchg(ip)]
). 📩
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
Fortran 2018 teams & Fortran 2008 allocatable/pointer components of derived-type coarrays
This 2.0.0 release contains
- New or improved features:
- Fortran 2018 teams ⚽
- Fortran 2008 allocatable & pointer components of derived-type coarrays 🏹
- Fortran 2018 QUIET specifier in STOP and ERROR STOP statements 🛑
- Bug fixes 🔧
- Documentation improvements 📖
- Build system improvements 👷♀️ 🏗️
- Test suite improvements
Fortran 2018 teams
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.
Fortran 2008 allocatable & pointer components
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.
Documentation improvements
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.
GPG key expiry extended
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-----
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
Fortran 2018 teams & Fortran 2008 allocatable components of derived-type coarrays
This 2.0.0 release candidate contains
- New or improved features:
- Fortran 2018 teams
- Fortran 2008 allocatable/pointer components of derived-type coarrays
- Bug fixes
- Documentation improvements
- Build system improvements
- Test suite improvements
Fortran 2018 teams
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.
Fortran 2008 allocatable/pointer components
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.
Documentation improvements
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.
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays
Minor build system and testing improvements and bug fixes
Minor build system and testing improvements and bug fixes
Bug fixes
- #455: A shell script stack implementation was failing for certain bash
versions, most notably versions provided by default on CentOS 6 - #452: Coarray extension/convenience module was installed in the wrong place
due to typo - A typo was causing a CMake error when MPI was missing and has been fixed
- An issue where the build script was trying to query version information from
dependencies with the wrong flag has been fixed - #461: Some tests were failing if the build system detected < 3 cores
available because the tests require more than 2 images and they were being
run anyway, without oversubscription. - #457: A problem with CMake caching was causing some system introspection
relevant to windows systems to fail, and has now been resolved
Enhancements
- #267: CMake can now use properties (on test target executables) to specify
the minimum number of images. This ensuresctest
/make check
/make test
will oversubscribe these tests appropriately when not enough cores are
avaialable. - #413: Add a
make dist
target to help OpenCoarrays developers produce
release assets: source tarballs, SHA 256 checksums and PGP signatures
if GPG is setup locally
Installation
Please see the installation instructions for more details on how to build and install this version of OpenCoarrays