Questo metodo misura il tempo necessario per completare un certo numero
(reps) di round di Broadcast. Un round di Broadcast consiste nel eseguire
una MPI_Broadcast per ogni possibile mittente, cioe' per ogni processo
coinvolto nel test.
Il nucleo del test e' il seguente :
t0=MPI_Wtime();
for (i=0; i<reps; i++) {
MPI_Bcast(lval, len, MPI_BYTE, root, MPI_COMM_WORLD );
root++;
if (root >= comm_size) root = 0;
}
t1=MPI_Wtime();
MPI_Barrier(MPI_COMM_WORLD );
time = t1-t0;

E' interessante notare che, anche conoscendo l'algoritmo, non e' facile dire a priori quale sara' l'ultimo processo
a ricevere il messaggio e a chiudere la Broadcast, in quanto i ritardi coinvolti
sono da considerarsi delle variabili aleatorie. Questo puo' portare ad
un certo parallelismo di trasmissione nella esecuzione del test
BroadcastRound, quando il prossimo processo a dover eseguire la Boradcast
come root potrebbe essere il primo ad aver terminato la precedente, e che
quindi andrebbe a sovrapporre la sua Broadcast a quella non ancora
terminata.
Come vedremo ( I Risultati,
Conclusioni) questo sara' particolarmente penalizzante per
MPICH-G2 con particolari dimensioni di messaggio. Vedremo anche come una diversa
implementazione di questo test (variante di Broadcast) risolva il
problema e dai risultati piu' accurati.