Re: [myrinet] Re: Sender masks for gm_provide_recv_buffer*

Peter Boyle <[email protected]>
Newsgroups gmane.network.myrinet.general
Message-ID <Pine.LNX.4.10.10008101007410.14417-100000@sherekhan.physics.gla.ac.uk>
Hi Bob,

Yep, this would work - I'll give it a go. 

Are any potential performance gotcha's in how the dma transfers
are set up? I've a slight worry that the 2^(size) bytes
might be dma'd to the LANai and then the relevant portion sent, but 
I know precious little about PCI dma constraints so I'm probably
just being paranoid.

Cheers, 

Peter

On Wed, 9 Aug 2000, Bob Felderman wrote:

> => For latency hiding reasons (among others), it is beneficial initiate 4
> => communications at a time, one for each dimension. Forcing a desired 
> => receive buffer is problematic, and forced me to use the directed send.
> => However, as I read the documentation completion notification is
> => unavailable, and I am following the send up with a small "ping" message to
> => generate recv events.
> => 
> => I'd like to get rid of this extra send, while still maintaining
> => the current zero copy status of the code, and there are two obvious
> => solutions - 
> 
> 
> How about taking advantage of an undocumented feature of 
> the "size" field in the gm_send / gm_receive and eliminate
> the use of gm_directed_send?
> 
> If your messages are not too large, say less than 1meg, then
> you can use the size parameter as a sort of tag to 
> match your receives and sends.
> The MCP does not verify that the length of a large
> buffer is less than 2^^size. 
> 
> just define 4 sizes for N,E,W,S
> #define NORTH 21
> #define EAST  22
> #define WEST  23
> #define SOUTH 24
> 
> Then, for each iteration, use a 
> gm_provide_receive_buffer(port, &data__from_north, NORTH, priority);
> gm_provide_receive_buffer(port, &data_from_south, SOUTH, priority);
> gm_provide_receive_buffer(port, &data_from_east , EAST, priority);
> gm_provide_receive_buffer(port, &data_from_west , WEST, priority);
> 
> and a 
> gm_send_with_callback(port, &data_to_north,  NORTH, len,priority,node,port_id,...)
> gm_send_with_callback(port, &data_to_south,  SOUTH, len,priority,node,port_id,...)
> gm_send_with_callback(port, &data_to_east,  EAST, len,priority,node,port_id,...)
> gm_send_with_callback(port, &data_to_west,  WEST, len,priority,node,port_id,...)
> 
> 
> You can obviously provide more receive buffers of each size 
> if needed to improve the buffering/bandwidth.
> 
> Will this work for your application?
> 
> Bob
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.