Roundtrip

Back to    Contents

Previous :  Benchmark punto-punto      Next : Head to Head      Up to : Benchmark punto-punto


Il nucleo della funzione che implementa  il test Roundtrip è :

elapsed_time = 0;
if(ctx->is_master){                /*sono il processo 0?*/
    recv_from = MPI_ANY_SOURCE;
    if (source_type == SpecifiedSource) recv_from = to;/*to contiene il pid dell'altro processo*/
        MPI_Recv(rbuffer,len,MPI_BYTE,recv_from,0,MPI_COMM_WORLD,&status);/*sincronizzazione*/
    t0=MPI_Wtime();
    for(i=0;i<reps;i++){
        MPI_Send(sbuffer,len,MPI_BYTE,to,MSG_TAG(i),MPI_COMM_WORLD);
        MPI_Recv(rbuffer,len,MPI_BYTE,recv_from,MSG_TAG(i),MPI_COMM_WORLD,&status);
    }
    t1=MPI_Wtime();
    elapsed_time = t1 -t0;
}

if(ctx->is_slave){/*sono il processo compagno di 0? di defualt sarò processo con pid size-1*/
    recv_from = MPI_ANY_SOURCE;
    if (source_type == SpecifiedSource) recv_from = to;/*to contiene il pid del compagno,cioè 0*/
        MPI_Send(sbuffer,len,MPI_BYTE,from,0,MPI_COMM_WORLD);
    for(i=0;i<reps;i++){
        MPI_Recv(rbuffer,len,MPI_BYTE,recv_from,MSG_TAG(i),MPI_COMM_WORLD,&status);
        MPI_Send(sbuffer,len,MPI_BYTE,to,MSG_TAG(i),MPI_COMM_WORLD);
    }
}

dove : 

 

 

 

L'algoritmo :

  1. si eseguono di default 50 (reps) Round di ping-pong e si misura il tempo totale t0 - t1,
  2. la funzione chiamante divide t0 - t1 per reps, ottenendo il tempo medio per un round,
  3. confronta il valore ottenuto con l'accuratezza de clock di sistema :
  4. si aggiunge un elemento ad un'apposita lista, dove ogni nodo rappresenta un test terminato con successo con una diversa dimensione di messaggio.

 

L'ultima fase è quella si smoothing dove una apposita funzione scorre la lista dei risultati e per ogni nodo calcola una stima del suo valore in base al precedente ed al successivo :

 t_est:=  (t_successivo-t_precedente)/(dim_msg_successivo-dim_msg_precedente)*(dim_msg_attuale-dim_msg_precedente) + t_precedente.

se il risultato del test è sbagliato di oltre il 10% rispetto al tempo stimato si ripete il test di quel particolare nodo.



Previous : Benchmark punto-punto       Next :  Head to Head       Up to :  Benchmark Punto-Punto

Back to Contents