Hi,

I got a problem with ompi when sending large number of messages from
process  A to process B.
Process A only send... and B only receive (the buffers are reused)

int n = 4 * 1024;//number of iterations (messages to be sent) consecutively
int len = 8; //len of each message

Process A (rank 0):
for (i=0; i < n; i++){
   MPI_Send( sbuffer, len, MPI_BYTE,to,i,MPI_COMM_WORLD);
}
Process B (rank 1):
for (i=0; i < n; i++){
   MPI_Recv(rbuffer,len,MPI_BYTE,recv_from , i,MPI_COMM_WORLD, &status);
}
(It's a benchmark program... will run with increasing messages sizes.. )
(I tried with the same tag on all iterations - and got the same)

It works fine for n (number of messages) equals to 3k (for example), but do
not work with n equals to 4k (for messages of 8 bytes 4k iterations seems to
be the treshould).

The error messages (complete output attached):
malloc debug: Request for 8396964 bytes failed (class/ompi_free_list.c, 142)
mpptest: btl_tcp_endpoint.c:624: mca_btl_tcp_endpoint_recv_handler:
Assertion `0
== btl_endpoint->endpoint_cache_length' failed.
Signal:6 info.si_errno:0(Success) si_code:-6()


Considerations:
It works for synchronous send (MPI_Ssend).
It  works with MPICH2 ( 1.0.3).
It is a benchmark program, I want to flood the network to measure the
bandwidth ... (for different message sizes)


Thanks

Marcelo

Reply via email to