OpenCoarrays Versions Save

A parallel application binary interface for Fortran 2018 compilers.

2.6.3

5 years ago

Github Releases (by Asset) Build Status license Twitter URL

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
  • 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


GitHub forks GitHub stars GitHub watchers Twitter URL

2.6.2

5 years ago

Github Releases (by Asset) Build Status license Twitter URL

⚠️ 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
  • 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


GitHub forks GitHub stars GitHub watchers Twitter URL

2.5.0

5 years ago

Github Releases (by Asset) Build Status license Twitter URL

  • Add optional team argument to team_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 in libcaf_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


GitHub forks GitHub stars GitHub watchers Twitter URL

2.3.1

5 years ago

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'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. πŸš“
  • 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

  • Pull request #583 fixes an interface inconsistency between the OpenCoarrays MPI library and both the OpenCoarrays application binary interface (ABI) and the MPI standard.
  • Pull request #590 removes a mistakenly pushed file.

2.3.0

5 years ago

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'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. πŸš“
  • 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

  • Pull request #583 fixes an interface inconsistency between the OpenCoarrays MPI library and both the OpenCoarrays application binary interface (ABI) and the MPI standard.
  • Pull request #590 removes a mistakenly pushed file.

2.2.0

5 years ago

Github Releases (by Asset) Build Status license Twitter URL

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 not LD_LIBRARY_PATH when on macOS and custom GFortran was installed
    • cleanup CMake PATH & prevent redundant modification of PATH
  • 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


GitHub forks GitHub stars GitHub watchers Twitter URL

2.1.0

6 years ago

Github Releases (by Asset) Build Status license Twitter URL

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 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:

  1. It facilitates the file's use with compilers that don't yet provide the file.
  2. 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


GitHub forks GitHub stars GitHub watchers Twitter URL

2.0.0

6 years ago

Github Releases (by Asset) Build Status license Twitter URL

This 2.0.0 release contains

  • New or improved features:
    • Fortran 2018 teams :soccer:
    • Fortran 2008 allocatable & pointer components of derived-type coarrays :bow_and_arrow:
    • Fortran 2018 QUIET specifier in STOP and ERROR STOP statements :stop_sign:
  • Bug fixes :wrench:
  • Documentation improvements :book:
  • Build system improvements :construction_worker_woman: :building_construction:
  • 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


GitHub forks GitHub stars GitHub watchers Twitter URL

2.0.0-rc1

6 years ago

Github Releases (by Asset) Build Status license Twitter URL

This 2.0.0 release candidate contains

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


GitHub forks GitHub stars GitHub watchers Twitter URL

1.9.3

6 years ago

Github Releases (by Asset) Build Status license Twitter URL

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 ensures ctest/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


GitHub forks GitHub stars GitHub watchers Twitter URL