Re: [PATCH 9/13] Coarray shared memory library

Jerry D <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
On 2/11/26 12:24 PM, Sandra Loosemore wrote:
> On 2/10/26 11:20, Jerry D wrote:
>> Dear all, as requested,
>>
>> See attached patch 9 of 13
> 
> More documentation comments:
> 
>> diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
>> index 6e8e13a982b..c544037033a 100644
>> --- a/gcc/fortran/invoke.texi
>> +++ b/gcc/fortran/invoke.texi
>> @@ -2350,6 +2350,15 @@ memory.
>>
>>  Warning: Choosing a large shared memory size may produce large coredumps!
>>
>> +@env{GFORTRAN_IMAGE_RESTARTS_LIMIT}: On certain platforms, esp. MacOS, the
>> +shared memory segment needs to be placed on the same (virtual) address in every
>> +image or synchronisation primitives do not work as expected.  Unfortunately are
> 
> Please use American spelling, e.g. synchronization.
> 
>> +some OSes somewhat arbitrary on when they can do this.  When the OS is not able
> 
> s/are some OSes/some operating systems are/
> 
>> +to fullfill the request, then the image aborts itsself and is restarted by the
> 
> s/fullfill/fulfill/
> s/itsself/itself
> 
>> +supervisor untill the OS complies.  This environment variable limits the total
> 
> s/untill/until/
> 
>> +number of restarts of all images having an issue with shared memory segment
>> +placement.  The default value is 4000.
>> +
>>  The shared memory coarray library internally uses some additional environment
>>  variables, which will be overwritten without notice or may result in failure to
>>  start.  These are: @code{GFORTRAN_IMAGE_NUM}, @code{GFORTRAN_SHMEM_PID} and
> 
> -Sandra

The attached documentation only patch addresses Sandra's comments and will be 
applied after the full patch set is applied.

I tested with make info and used info to read it.

OK for mainline when the rest is committed?

Regards,

Jerry
documentation.diff (text/x-patch, 6.6 KB)
commit dfec1247f52dda00dfbaae8c7e2f92515b6e3fdb
Author: Jerry DeLisle <[email protected]>
Date:   Sat Feb 14 19:49:20 2026 -0800

    Fortran: Cleanup documentation for coarray -lcaf_shmem.
    
            PR fortran/80076
    
    gcc/fortran/ChangeLog:
    
            * invoke.texi: Use corrected english.

diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index c544037033a..90836657af1 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -104,7 +104,7 @@ one is not the default.
 * Interoperability Options::  Options for interoperability with other
                               languages.
 * Environment Variables:: Environment variables that affect @command{gfortran}.
-* Shared Memory Coarrays:: Multi process shared memory coarray support.
+* Shared-memory Coarrays:: Multiprocess shared-memory coarray support.
 @end menu
 
 @node Option Summary
@@ -2307,64 +2307,63 @@ variables.
 run-time behavior of programs compiled with GNU Fortran.
 @c man end
 
-@node Shared Memory Coarrays
-@section Shared Memory Coarrays
+@node Shared-memory Coarrays
+@section Shared-memory Coarrays
 
-@c man begin SHARED MEMORY COARRAYS
+@c man begin SHARED-MEMORY COARRAYS
 
-@command{gfortran} supplies a runtime library for running coarray enabled
-programs using a shared memory multi process approach.  The library is supplied
-as a static link library with the @command{libgfortran} library and is fully
-compatible with the ABI enabled when @command{gfortran} is called with
-@code{-fcoarray=lib}.  The shared memory coarray library then just needs to be
-linked to the executable produced by @command{gfortran} using
-@code{-lcaf_shmem}.
+@command{gfortran} supplies a runtime library for running coarray-enabled
+programs using a shared-memory multiprocess approach.  The library is supplied
+as a static link library with the @command{libgfortran} library, and is fully
+compatible with the ABI enabled when @command{gfortran} is invoked with
+@option{-fcoarray=lib}.  Link the shared-memory coarray to the executable
+produced by @command{gfortran} using @option{-lcaf_shmem}.
 
 The library @code{caf_shmem} can only be used on architectures that allow
 multiple processes to use the same memory at the same virtual memory address in
-each process' memory space.  This is the case on most Unix and Windows based
+each process' memory space.  This is the case on most Unix- and Windows-based
 systems.
 
-The resulting executable can be started without any driver and does not provide
-any additional command line options.  Limited control is possible by
+One can control some aspects of the library behavior at run time using
 environment variables:
 
 @env{GFORTRAN_NUM_IMAGES}: The number of images to spawn when running the
-executable.  Note, there will always be one additional supervisor process, which
+executable.  Note, there is always one additional supervisor process, which
 does not participate in the computation, but is only responsible for starting
 the images and catching any (ab-)normal termination.  When the environment
-variable is not set, then the number of hardware threads reported by the OS will
-be taken. Over-provisioning is possible.  The number of images is limited only
+variable is not set, then the number of hardware threads reported by the OS is
+used. Over-provisioning is possible.  The number of images is limited only
 by the OS and the size of an integer variable on the architecture the program is
-to be run on.
+running on.
 
-@env{GFORTRAN_SHARED_MEMORY_SIZE}: The size of the shared memory segment made
-available to all images is fixed and needs to be set at program start.  It can
-not grow or shrink.  The size can be given in bytes (no suffix), kilobytes
+@env{GFORTRAN_SHARED_MEMORY_SIZE}: The size of the shared-memory segment made
+available to all images is fixed and needs to be set at program start.  It
+cannot grow or shrink.  The size can be given in bytes (no suffix), kilobytes
 (@code{k} or @code{K} suffix), megabytes (@code{m} or @code{M}) or gigabytes
 (@code{g} or @code{G}).  If the variable is not set, or not parseable, then on
-32-bit architectures 2^28 bytes and on 64-bit 2^34 bytes are choosen.  Note,
+32-bit architectures 2^28 bytes and on 64-bit 2^34 bytes are chosen.  Note,
 although the size is set, most modern systems do not allocate the memory at
-program start.  This allows to choose a shared memory size larger than available
-memory.
+program start.  This allows one to choose a shared-memory size larger than
+available memory.
 
-Warning: Choosing a large shared memory size may produce large coredumps!
+Warning: Choosing a large shared-memory size may produce large core dumps!
 
 @env{GFORTRAN_IMAGE_RESTARTS_LIMIT}: On certain platforms, esp. MacOS, the
-shared memory segment needs to be placed on the same (virtual) address in every
-image or synchronisation primitives do not work as expected.  Unfortunately are
-some OSes somewhat arbitrary on when they can do this.  When the OS is not able
-to fullfill the request, then the image aborts itsself and is restarted by the
-supervisor untill the OS complies.  This environment variable limits the total
-number of restarts of all images having an issue with shared memory segment
+shared-memory segment needs to be placed on the same (virtual) address in every
+image or synchronization primitives do not work as expected.  Unfortunately some
+operating systems are somewhat arbitrary on when they can do this.  When the OS
+is not able to fulfill the request, the image aborts itself and is restarted by the
+supervisor until the OS complies.  This environment variable limits the total
+number of restarts of all images having an issue with shared-memory segment
 placement.  The default value is 4000.
 
-The shared memory coarray library internally uses some additional environment
-variables, which will be overwritten without notice or may result in failure to
-start.  These are: @code{GFORTRAN_IMAGE_NUM}, @code{GFORTRAN_SHMEM_PID} and
-@code{GFORTRAN_SHMEM_BASE}.  It is strongly discouraged to use these variables.
-Special care needs to be taken, when one coarray program starts another coarray
+The shared-memory coarray library internally uses some additional environment
+variables, which are overwritten without notice or may result in failure to
+start.  These are: @code{GFORTRAN_IMAGE_NUM}, @code{GFORTRAN_SHMEM_PID}, and
+@code{GFORTRAN_SHMEM_BASE}.  Using these variables is strongly discouraged.
+Special care needs to be taken when one coarray program starts another coarray
 program as a child process.  In this case it is the spawning process'
-responsibility to remove above variables from the environment.
+responsibility to remove the above variables from the environment.
 
 @c man end
+
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.