[patch, coarray_native, committed] Increase initial size on Darwin

Thomas Koenig tkoenig@netcologne.de
Sun Jan 17 19:13:18 GMT 2021


Hello world,

the patch (committed after Nicolas' OK) should make it possible
to go one step further in testing with Darwin.

So, it might now be possible to do another round of testing,
to see if there are any other walls to hit :-)

Best regards

	Thomas

Use an initial shared memory size of 256 GB on Apple.

This implements an idea that Nicolas had to overcome the Darwin
problem that it is not possible to extend a shared memory segment
on that system.

The remedy is simple: Use a memory segment that is larger than
what can reasonably be used. This should only waste a few page
table entries, while providing the functionality, at least for
further testing.

libgfortran/ChangeLog:

         * caf_shared/shared_memory.c (shared_memory_init): On Apple,
         use an initial size of 256 GB.
-------------- next part --------------
diff --git a/libgfortran/caf_shared/shared_memory.c b/libgfortran/caf_shared/shared_memory.c
index b64e40a3ded..0c0b36c663d 100644
--- a/libgfortran/caf_shared/shared_memory.c
+++ b/libgfortran/caf_shared/shared_memory.c
@@ -190,7 +190,16 @@ shared_memory_init (shared_memory_act **pmem)
 {
   shared_memory_act *mem;
   int fd;
+
+  /* Darwin does not appear to be able to grow shared memory segments.  Choose
+     256 GB; that will likely be enough.  If not, the ftruncate will fail
+     noisily.  */
+
+#ifdef __APPLE__
+  size_t initial_size = ((size_t) 1) << 38;
+#else
   size_t initial_size = round_to_pagesize (sizeof (global_shared_memory_meta));
+#endif
 
   mem = malloc (get_shared_memory_act_size (1));
   fd = get_shmem_fd ();


More information about the Fortran mailing list