Our measurements respect the following condition: the data sent is in a buffer provided by the user program, this buffer can be anywhere in the program memory space and is given to the send call. The same thing apply for the receive buffer: the user program can pass any valid pointer to the receive call. We use the blocking send and receive BIP calls.
We have measured the performance of ping-pong tests where one master sends some data to a slave, the latter receive it and sends back the same message (of same size) to the master. The timing results have been obtained by taking the time between the beginning of the send call and the end of the receive call on the master and dividing it by 2 to obtain one-way latency and message bandwith. The values in the table are the median times of beteewn 20 and 100 successive experiments (depending ofthe message size).
The performance results obtained here are measured between two Pentium Pro stations, here is the "pseudo"-code of the sender:
length = ...;
buf = malloc(length);
for (i=0;i<nbtest;i++) {
starttimer();
bip_send(dest,buf,length);
bip_recv(buf2,length);
end_timer();
time[i] = timer_value();
}
And here is code of the receiver:
while (1) {
l = bip_recv(buf,maxlength);
bip_send(dest,buf,length);
}