[mpich-devel] Regarding direct receive

Jim Dinan dinan at mcs.anl.gov
Tue Apr 9 13:51:02 CDT 2013


Hi Denis,

I have a fair bit of experience with CH3, but not much in the netmods. 
This sounds like something that could be handled by the corresponding 
eager/rendezvous code via MPIDI_CH3U_Receive_data_found.  Are you 
providing new eager/rendezvous implementations in your netmod?

I don't have enough personal context to evaluate the overall structure, 
but your else case below looks reasonable to me.

Best,
  ~Jim.

On 4/9/13 6:54 AM, Kirjanov, Denis wrote:
> Hello,
> I'm writing a netmod and I have a trouble with receiving a messages directly to the user buffer:
>
> The relevant code looks like the following:
>
> Assuming we have a request with the one iov entry
> /***************
> if (!VC_CH(vc)->recv_active) {
> /* handle a new message using MPID_nem_handle_pkt() */
> } else {
> MPIU_Memcpy(iov->MPID_IOV_BUF, &recv_buff->buff[0], bytes_recvd);
> iov->MPID_IOV_BUF = (void *)((char *)iov->MPID_IOV_BUF + bytes_recvd);
> iov->MPID_IOV_LEN -= bytes_recvd;
> }
>
> if (iov->MPID_IOV_LEN) {
> /* receive directly to the iov->MPID_IOV_BUF next time*/
> goto fn_exit;
> }
>
> /* handle a recv request */
> }
> ********************/
> The problem that I'm running an IMB program compiled with CHECK option and it claims about corrupted buffer.
> Is this is a right way to handle packet chunks which will be saved in the user buffer pointer provided in the rreq?
>
> Thanks!
>


More information about the devel mailing list