#995: used shared memory on a node to share EOS table -----------------------------------+---------------------------------------- Reporter: rhaas | Owner: Type: enhancement | Status: new Priority: minor | Milestone: Component: EinsteinToolkit thorn | Version: Keywords: EOS_Omni | -----------------------------------+---------------------------------------- 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.
#995: used shared memory on a node to share EOS table ------------------------------------+--------------------------------------- Reporter: rhaas | Owner: Type: enhancement | Status: review Priority: minor | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: | Keywords: EOS_Omni ------------------------------------+--------------------------------------- Changes (by rhaas):
* status: new => review
#995: used shared memory on a node to share EOS table ------------------------------------+--------------------------------------- Reporter: rhaas | Owner: Type: enhancement | Status: review Priority: minor | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: | Keywords: EOS_Omni ------------------------------------+---------------------------------------
Comment (by eschnett):
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.
#995: used shared memory on a node to share EOS table ------------------------------------+--------------------------------------- Reporter: rhaas | Owner: rhaas Type: enhancement | Status: assigned Priority: minor | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: | Keywords: EOS_Omni ------------------------------------+--------------------------------------- Changes (by eschnett):
* owner: => rhaas * status: review => assigned
#995: used shared memory on a node to share EOS table ------------------------------------+--------------------------------------- Reporter: rhaas | Owner: rhaas Type: enhancement | Status: assigned Priority: minor | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: | Keywords: EOS_Omni ------------------------------------+---------------------------------------
Comment (by rhaas):
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.
#995: used shared memory on a node to share EOS table ------------------------------------+--------------------------------------- Reporter: rhaas | Owner: rhaas Type: enhancement | Status: closed Priority: minor | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: wontfix | Keywords: EOS_Omni ------------------------------------+--------------------------------------- Changes (by rhaas):
* status: assigned => closed * resolution: => wontfix
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.
trac@lists.einsteintoolkit.org