Interesting question; I too would like to hear about it from the experts in this forum. However, off the top of my head, I have the following advise for you.
Yes, you could share the memory between processes using the shm_xxx system calls of unix. However, it would be a lot easier if you used a thread programming paradigm like pthread. A lot of these overhead would be handled for you by the library itself.
In general, there is not a lot of performance gains by oversubscribing your processors (i.e. number of processes > number of CPUs), unless your processes are I/O bound and are blocked for a significant amount of time. I don't know what your application is, but in the HPC world, such problems are rare.
In general, processes on a shared memory node (i.e. an SMP machine) have a significantly higher memory bandwidth and reduced latency, than those across a node, even when the interconnect network is RDMA capable (such as infiniband)
On 11/7/06, Chevchenkovic Chevchenkovic <email@example.com> wrote:
I had the following setup:
Rank 0 process on node 1 wants to send an array of particular size to Rank 1 process on same node.
1. What are the optimisations that can be done/invoked while running mpirun to perform this memory to memory transfer efficiently?
2. Is there any performance gain if 2 processes that are exchanging data arrays are kept on the same node rather than on different nodes connected by infiniband?
Awaiting a reply,
users mailing list
Devil wanted omnipresence;
He therefore created communists.