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