[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