On 11/8/11 5:25 PM, "George Bosilca" <bosi...@eecs.utk.edu> wrote:
>2. one sided: A quick look in the OSC seems to indicate there are some >special handling to be done in the RDMA one. Look at >ompi_osc_rdma_sendreq_t in osc_rdma_sendreq.h, it is using a trick to >store the remote segments. First, the mca_btl_base_segment_t are stored >at the end of the structure, in order to allow for dynamic allocation. >Second, OSC doesn't seems to manipulate pointers to >mca_btl_base_segment_t, but the content itself. I didn't went too deep >here, but I think particular attention should be payed to OSC. I don't entirely remember what I was doing when I wrote that code :). The OSC only does puts/gets from the initiator to a single segment on the target, so the component contains an array of segments, one per peer. I only do RDMA when the source is contiguous, so the one in the sendreq is the segment, not a malloc trick. I'm planning on rewriting the RDMA one-sided component to implement the MPI 3 semantics. I think we can make it a whole lot cleaner than the current implementation. Which means that if we come up with some rational semantics for dealing with segments, I can make it work. If we can get them implemented before January, even better. Brian -- Brian W. Barrett Dept. 1423: Scalable System Software Sandia National Laboratories