diff --git a/src/mca/ptl/elan/tests/bw.c b/src/mca/ptl/elan/tests/bw.c index aa007f2ea5..38e6601221 100644 --- a/src/mca/ptl/elan/tests/bw.c +++ b/src/mca/ptl/elan/tests/bw.c @@ -20,7 +20,7 @@ main (int argc, char *argv[]) { int myid, numprocs, i, j; - int size, loop, win, page_size; + int min=0, max=0, size=0, loop, win, page_size; struct timeval t_start, t_end; char *s_buf, *r_buf; @@ -34,24 +34,24 @@ main (int argc, MPI_Comm_size (MPI_COMM_WORLD, &numprocs); MPI_Comm_rank (MPI_COMM_WORLD, &myid); - if (argc < 3) { - fprintf (stderr, "Usage: %s loop win size\n", argv[0]); + if (argc < 5) { + fprintf (stderr, "Usage: %s loop win min max \n", argv[0]); MPI_Finalize (); return 0; } - size= atoi (argv[3]); + max = atoi (argv[4]); + min = atoi (argv[3]); win = atoi (argv[2]); loop= atoi (argv[1]); page_size = getpagesize (); - for (i = 0; i < size; i++) { + for (i = 0; i < max ; i++) { s_buf[i] = 'a'; r_buf[i] = 'b'; } - /*MPI_Barrier (MPI_COMM_WORLD);*/ - - for (i = 0; i < loop + skip; i++) { + for (size = min; size <= max ; size = (size==0) ? 1 : 2*size) { + for (i = 0; i < loop + skip; i++) { if (myid == 0) { /* Start time */ if ( i == skip ) @@ -71,19 +71,19 @@ main (int argc, MPI_Waitall (win, request, tmp_stat); MPI_Send (s_buf, 4, MPI_CHAR, 0, 101, MPI_COMM_WORLD); } - /*MPI_Barrier (MPI_COMM_WORLD);*/ - } + } - if (myid == 0) { - double latency; - gettimeofday (&t_end, 0); - latency = ((1.0e6 * t_end.tv_sec + t_end.tv_usec) - - (1.0e6 * t_start.tv_sec + t_start.tv_usec)) - / (loop * win); - fprintf (stdout, "%8d %8.2f\n", size, size / latency); - fflush (stdout); + if (myid == 0) { + double latency; + gettimeofday (&t_end, 0); + latency = ((1.0e6 * t_end.tv_sec + t_end.tv_usec) + - (1.0e6 * t_start.tv_sec + t_start.tv_usec)) + / (loop * win); + fprintf (stdout, "%8d %8.2f\n", size, size / latency); + fflush (stdout); + } + MPI_Barrier (MPI_COMM_WORLD); } - MPI_Finalize (); return 0; } diff --git a/src/mca/ptl/elan/tests/check_bw.c b/src/mca/ptl/elan/tests/check_bw.c new file mode 100644 index 0000000000..86f8f0cba7 --- /dev/null +++ b/src/mca/ptl/elan/tests/check_bw.c @@ -0,0 +1,82 @@ +#include "mpi.h" +#include +#include +#include +#include +#include +#include +#include "test_util.h" + +#define MYBUFSIZE (1<<22) +#define MAX_REQ_NUM 1024 + +MPI_Request request[MAX_REQ_NUM]; +MPI_Status tmp_stat[MAX_REQ_NUM]; + +int skip = 0; + +int +main (int argc, + char *argv[]) +{ + int myid, numprocs, i, j; + int size=0, loop, page_size; + struct timeval t_start, t_end; + char *s_buf, *r_buf; + + s_buf = (char *) malloc (sizeof(char)*MYBUFSIZE); + r_buf = (char *) malloc (sizeof(char)*MYBUFSIZE); + + /* Get some environmental variables set for Open MPI, OOB */ + env_init_for_elan(); + + MPI_Init (&argc, &argv); + MPI_Comm_size (MPI_COMM_WORLD, &numprocs); + MPI_Comm_rank (MPI_COMM_WORLD, &myid); + + if (argc < 5) { + fprintf (stderr, "Usage: %s loop size \n", argv[0]); + MPI_Finalize (); + return 0; + } + size = atoi (argv[2]); + loop= atoi (argv[1]); + page_size = getpagesize (); + + for (i = 0; i < size ; i++) { + s_buf[i] = 'a'; + r_buf[i] = 'b'; + } + + if (myid == 0) { + /* Start time */ + if ( i == skip ) + gettimeofday (&t_start, 0); + + for (j = 0; j < loop; j++) { + MPI_Isend (s_buf, size, MPI_CHAR, 1, 100, MPI_COMM_WORLD, + request + j); + } + MPI_Waitall (loop, request, tmp_stat); + MPI_Recv (r_buf, 4, MPI_CHAR, 1, 101, MPI_COMM_WORLD, &tmp_stat[0]); + } else { + for (j = 0; j < loop; j++) { + MPI_Irecv (r_buf, size, MPI_CHAR, 0, 100, MPI_COMM_WORLD, + request + j); + } + MPI_Waitall (loop, request, tmp_stat); + MPI_Send (s_buf, 4, MPI_CHAR, 0, 101, MPI_COMM_WORLD); + } + + if (myid == 0) { + double latency; + gettimeofday (&t_end, 0); + latency = ((1.0e6 * t_end.tv_sec + t_end.tv_usec) + - (1.0e6 * t_start.tv_sec + t_start.tv_usec)) + / (loop); + fprintf (stdout, "%8d %8.2f\n", size, size / latency); + fflush (stdout); + } + MPI_Finalize (); + return 0; +} diff --git a/src/mca/ptl/elan/tests/test_util.h b/src/mca/ptl/elan/tests/test_util.h index 6fec46e3c1..90c9f6a6f4 100644 --- a/src/mca/ptl/elan/tests/test_util.h +++ b/src/mca/ptl/elan/tests/test_util.h @@ -10,6 +10,7 @@ static void env_init_for_elan() setenv("OMPI_MCA_pcm_cofs_jobid", "1", 1); setenv("OMPI_MCA_pcm_cofs_num_procs", "2", 1); setenv("OMPI_MCA_ptl_base_exclude", "tcp", 1); + /*setenv("OMPI_MCA_oob_base_include", "cofs", 1)*/ /*setenv("OMPI_MCA_oob_base_exclude", "tcp", 1);*/ if (NULL != (rms_rank = getenv("RMS_RANK"))) {