used shared memory on a node to share EOS table

Issue #995 closed
Roland Haas created an issue

the attached patch has processes on the same node share the memory to store the EOS table. It required a patch to the flesh to detect the shared memory support functions in the OS.

Keyword: EOS_Omni

Comments (6)

  1. Erik Schnetter
    • removed comment

    doBcast is not defined reliably; it relies on a process id, which may be the same on different nodes. Using MPI_Hostname may be a better way. Carpet already collects host names and converts them to integers; you may be able to query this.

    I don't think it is legal to use different sizes on different processes in MPI_Bcase. I would assume that the sender still sends all data, but the receiver ignores some of it, and the data remain stuck in a buffer. MPI_Alltoallv may be necessary.

    I still worry that the shared memory segments are created in the code, but are never deleted. If I recall correctly, the operating system does not delete them automatically when a process ends. The command "icps" lists all such segments -- please check whether you have a memory leak.

  2. Roland Haas reporter
    • removed comment

    All of Erik's comments are correct, the current patch is broken and full of bugs. Getting this right is a bit of a hassle due to the rather odd semantics of SYSV IPC constructs and the desire to have a clean implementation. Not terribly high priority to anyone as far as I know so don't expect this to happen soon.

  3. Roland Haas reporter
    • changed status to resolved
    • removed comment

    The benefit of this seems small right now and it greatly adds to the complexity of the code. Shelfed for now. Re-open with cleaner code if required.

  4. Log in to comment