-- Add bw check program
This commit was SVN r2583.
Этот коммит содержится в:
родитель
86806e6c49
Коммит
21b6f6a5b8
@ -20,7 +20,7 @@ main (int argc,
|
|||||||
char *argv[])
|
char *argv[])
|
||||||
{
|
{
|
||||||
int myid, numprocs, i, j;
|
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;
|
struct timeval t_start, t_end;
|
||||||
char *s_buf, *r_buf;
|
char *s_buf, *r_buf;
|
||||||
|
|
||||||
@ -34,23 +34,23 @@ main (int argc,
|
|||||||
MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
|
MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
|
||||||
MPI_Comm_rank (MPI_COMM_WORLD, &myid);
|
MPI_Comm_rank (MPI_COMM_WORLD, &myid);
|
||||||
|
|
||||||
if (argc < 3) {
|
if (argc < 5) {
|
||||||
fprintf (stderr, "Usage: %s loop win size\n", argv[0]);
|
fprintf (stderr, "Usage: %s loop win min max \n", argv[0]);
|
||||||
MPI_Finalize ();
|
MPI_Finalize ();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
size= atoi (argv[3]);
|
max = atoi (argv[4]);
|
||||||
|
min = atoi (argv[3]);
|
||||||
win = atoi (argv[2]);
|
win = atoi (argv[2]);
|
||||||
loop= atoi (argv[1]);
|
loop= atoi (argv[1]);
|
||||||
page_size = getpagesize ();
|
page_size = getpagesize ();
|
||||||
|
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < max ; i++) {
|
||||||
s_buf[i] = 'a';
|
s_buf[i] = 'a';
|
||||||
r_buf[i] = 'b';
|
r_buf[i] = 'b';
|
||||||
}
|
}
|
||||||
|
|
||||||
/*MPI_Barrier (MPI_COMM_WORLD);*/
|
for (size = min; size <= max ; size = (size==0) ? 1 : 2*size) {
|
||||||
|
|
||||||
for (i = 0; i < loop + skip; i++) {
|
for (i = 0; i < loop + skip; i++) {
|
||||||
if (myid == 0) {
|
if (myid == 0) {
|
||||||
/* Start time */
|
/* Start time */
|
||||||
@ -71,7 +71,6 @@ main (int argc,
|
|||||||
MPI_Waitall (win, request, tmp_stat);
|
MPI_Waitall (win, request, tmp_stat);
|
||||||
MPI_Send (s_buf, 4, MPI_CHAR, 0, 101, MPI_COMM_WORLD);
|
MPI_Send (s_buf, 4, MPI_CHAR, 0, 101, MPI_COMM_WORLD);
|
||||||
}
|
}
|
||||||
/*MPI_Barrier (MPI_COMM_WORLD);*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myid == 0) {
|
if (myid == 0) {
|
||||||
@ -83,7 +82,8 @@ main (int argc,
|
|||||||
fprintf (stdout, "%8d %8.2f\n", size, size / latency);
|
fprintf (stdout, "%8d %8.2f\n", size, size / latency);
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
}
|
}
|
||||||
|
MPI_Barrier (MPI_COMM_WORLD);
|
||||||
|
}
|
||||||
MPI_Finalize ();
|
MPI_Finalize ();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
82
src/mca/ptl/elan/tests/check_bw.c
Обычный файл
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_jobid", "1", 1);
|
||||||
setenv("OMPI_MCA_pcm_cofs_num_procs", "2", 1);
|
setenv("OMPI_MCA_pcm_cofs_num_procs", "2", 1);
|
||||||
setenv("OMPI_MCA_ptl_base_exclude", "tcp", 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);*/
|
/*setenv("OMPI_MCA_oob_base_exclude", "tcp", 1);*/
|
||||||
|
|
||||||
if (NULL != (rms_rank = getenv("RMS_RANK"))) {
|
if (NULL != (rms_rank = getenv("RMS_RANK"))) {
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user