1
1
This commit was SVN r2583.
Этот коммит содержится в:
Weikuan Yu 2004-09-10 00:18:57 +00:00
родитель 86806e6c49
Коммит 21b6f6a5b8
3 изменённых файлов: 102 добавлений и 19 удалений

Просмотреть файл

@ -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;
}

82
src/mca/ptl/elan/tests/check_bw.c Обычный файл
Просмотреть файл

@ -0,0 +1,82 @@
#include "mpi.h"
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <sys/time.h>
#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;
}

Просмотреть файл

@ -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"))) {