1
1

-- Add a bandwidth test and modify Makefile.am

This commit was SVN r2553.
Этот коммит содержится в:
Weikuan Yu 2004-09-08 22:51:24 +00:00
родитель 43afec7a4a
Коммит 73309c1824
2 изменённых файлов: 76 добавлений и 0 удалений

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

@ -31,6 +31,9 @@ mpitest: mpi_test.c
check: % : %.c
${HOME}/installs/openmpi/bin/mpicc -g -o $@ check.c
bw: % : %.c
${HOME}/installs/openmpi/bin/mpicc -g -o bw bw.c
lat: % : %.c
${HOME}/installs/openmpi/bin/mpicc -g -o lat lat.c

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

@ -0,0 +1,73 @@
#include "mpi.h"
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#define MYBUFSIZE (4*1024*1024)
#define MAX_REQ_NUM 1024
MPI_Request request[MAX_REQ_NUM];
MPI_Status stat[MAX_REQ_NUM];
int
main (int argc,
char *argv[])
{
int myid, numprocs, i;
int size, loop, page_size;
double t_start = 0.0, t_end = 0.0, t = 0.0;
char s_buf[MYBUFSIZE];
char r_buf[MYBUFSIZE];
MPI_Init (&argc, &argv);
MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank (MPI_COMM_WORLD, &myid);
if (argc < 3) {
fprintf (stderr, "Usage: bw loop msg_size\n");
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';
}
MPI_Barrier (MPI_COMM_WORLD);
if (myid == 0) {
t_start = MPI_Wtime ();
for (i = 0; i < loop; i++) {
MPI_Isend (s_buf, size, MPI_CHAR, 1, 100, MPI_COMM_WORLD,
request + i);
}
MPI_Waitall (loop, request, stat);
MPI_Recv (r_buf, 4, MPI_CHAR, 1, 101, MPI_COMM_WORLD, &stat[0]);
t_end = MPI_Wtime ();
t = t_end - t_start;
} else {
for (i = 0; i < loop; i++) {
MPI_Irecv (r_buf, size, MPI_CHAR, 0, 100, MPI_COMM_WORLD,
request + i);
}
MPI_Waitall (loop, request, stat);
MPI_Send (s_buf, 4, MPI_CHAR, 0, 101, MPI_COMM_WORLD);
}
if (myid == 0) {
double tmp;
tmp = ((size * 1.0) / 1.0e6) * loop;
fprintf (stdout, "%8d %8.2f\n", size, tmp / t);
fflush (stdout);
}
MPI_Barrier (MPI_COMM_WORLD);
MPI_Finalize ();
return 0;
}