- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi everyone, Can someone with the knowledge of -coarray flag functionality comment on the differences between "shared" and "distributed" keywords for this flag? Based on my personal observations, for example, the "shared" keyword does not seem to create a shared pool memory for the global variables (which is actually great in the problems we have encountered so far). But, what do these two flags do that makes them different? any performance or usage difference, for example?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
"shared" uses multiple processes on a single computer for the various coarray images. "distributed" uses multiple computers connected in a "cluster", one image per computer. The advantage of "shared" is that it has minimal setup requirements and can work well on a multicore system as long as you don't "oversubscribe" the cores. The disadvantage of "shared' is that there's a low upper limit on the number of images that are reasonable. With "distributed" you can have, potentially, thousands of images across thousands of nodes, but configuring this is not simple and the startup time is even longer than for "shared".
Coarrays do not use a shared memory pool. Each image has its own "piece" of a coarray and MPI (in Intel's implementation) is used to send data and synchronization back and forth.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page