Fortran Coarray Application Hang After Executing FAIL IMAGE

By BARBARA PERZ, Published: 07/03/2019, Last Updated: 12/16/2019

Affected Product  Intel® Fortran Compiler 19.1

Problem Description
The FAIL IMAGE statement used with coarrays is introduced in the Intel Fortran Compiler 19.1. FAIL IMAGE allows debugging of recovery code for failed images without having to wait for an actual image failure.

The current implementation has a known issue that manifests after the FAIL IMAGE statement is executed. The issue is the application may hang when the rest of the application does one of these actions:

  1. Application termination
  2. Creates a coarray (declaration of a non-allocatable, allocation of an allocatable)
  3. Frees a coarray (deallocation or termination)
  4. Broadcast and reduce operations, i.e. CO_BROADCAST, CO_MAX, CO_MIN, CO_REDUCE, and CO_SUM

Workaround
There is no certain way to prevent a hang when an image fails. However, if you structure your program so that synchronizations points are infrequent, the chance of a failure happening just before a synchronization point is lower. If images frequently do coarray loads and stores or check image status, they are more likely to discover a failed image sooner.  The FAILED_IMAGES intrinsic will check for failed images, but other images might not get the same result from that call.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804