[mpich2-commits] r7519 - mpich2/trunk/test/mpi/perf
gropp at mcs.anl.gov
gropp at mcs.anl.gov
Mon Nov 29 13:18:35 CST 2010
Author: gropp
Date: 2010-11-29 13:18:35 -0600 (Mon, 29 Nov 2010)
New Revision: 7519
Modified:
mpich2/trunk/test/mpi/perf/manyrma.c
Log:
Add options to manyrma test to make it easier to explore specific operations
Modified: mpich2/trunk/test/mpi/perf/manyrma.c
===================================================================
--- mpich2/trunk/test/mpi/perf/manyrma.c 2010-11-29 09:16:04 UTC (rev 7518)
+++ mpich2/trunk/test/mpi/perf/manyrma.c 2010-11-29 19:18:35 UTC (rev 7519)
@@ -31,6 +31,8 @@
} timing;
static int verbose = 1;
+static int barrierSync = 0;
+static double tickThreshold = 0.0;
void PrintResults( int cnt, timing t[] );
void RunAccFence( MPI_Win win, int destRank, int cnt, int sz, timing t[] );
@@ -51,9 +53,15 @@
MPI_Group wgroup, accessGroup, exposureGroup;
double t1[MAX_RUNS], t2[MAX_RUNS], t3[MAX_RUNS];
timing t[MAX_RUNS];
+ int maxSz = MAX_RMA_SIZE;
MPI_Init( &argc, &argv );
+ /* Determine clock accuracy */
+ tickThreshold = 10.0 * MPI_Wtick();
+ MPI_Allreduce( MPI_IN_PLACE, &tickThreshold, 1, MPI_DOUBLE, MPI_MAX,
+ MPI_COMM_WORLD );
+
for (i=1; i<argc; i++) {
if (strcmp( argv[i], "-put" ) == 0) {
if (rmaChoice == RMA_ALL) rmaChoice = RMA_NONE;
@@ -75,6 +83,13 @@
if (syncChoice == SYNC_ALL) syncChoice = SYNC_NONE;
syncChoice |= SYNC_PSCW;
}
+ else if (strcmp( argv[i], "-maxsz" ) == 0) {
+ i++;
+ maxSz = atoi( argv[i] );
+ }
+ else if (strcmp( argv[i], "-barrier" ) == 0) {
+ barrierSync = 1;
+ }
else {
fprintf( stderr, "Unrecognized argument %s\n", argv[i] );
MPI_Abort( MPI_COMM_WORLD, 1 );
@@ -94,7 +109,7 @@
MPI_Group_incl( wgroup, 1, &srcRank, &exposureGroup );
MPI_Group_free( &wgroup );
- arraysize = MAX_RMA_SIZE * MAX_COUNT;
+ arraysize = maxSz * MAX_COUNT;
arraybuffer = (int*)malloc( arraysize * sizeof(int) );
if (!arraybuffer) {
fprintf( stderr, "Unable to allocate %d words\n", arraysize );
@@ -112,7 +127,7 @@
maxCount = MAX_COUNT;
if ((syncChoice & SYNC_FENCE) && (rmaChoice & RMA_ACC)) {
- for (sz=1; sz<=MAX_RMA_SIZE; sz = sz + sz) {
+ for (sz=1; sz<=maxSz; sz = sz + sz) {
if (wrank == 0)
printf( "Accumulate with fence, %d elements\n", sz );
cnt = 1;
@@ -127,7 +142,7 @@
}
if ((syncChoice & SYNC_LOCK) && (rmaChoice & RMA_ACC)) {
- for (sz=1; sz<=MAX_RMA_SIZE; sz = sz + sz) {
+ for (sz=1; sz<=maxSz; sz = sz + sz) {
if (wrank == 0)
printf( "Accumulate with lock, %d elements\n", sz );
cnt = 1;
@@ -142,7 +157,7 @@
}
if ((syncChoice & SYNC_FENCE) && (rmaChoice & RMA_PUT)) {
- for (sz=1; sz<=MAX_RMA_SIZE; sz = sz + sz) {
+ for (sz=1; sz<=maxSz; sz = sz + sz) {
if (wrank == 0)
printf( "Put with fence, %d elements\n", sz );
cnt = 1;
@@ -157,7 +172,7 @@
}
if ((syncChoice & SYNC_LOCK) && (rmaChoice & RMA_PUT)) {
- for (sz=1; sz<=MAX_RMA_SIZE; sz = sz + sz) {
+ for (sz=1; sz<=maxSz; sz = sz + sz) {
if (wrank == 0)
printf( "Put with lock, %d elements\n", sz );
cnt = 1;
@@ -172,7 +187,7 @@
}
if ((syncChoice & SYNC_PSCW) && (rmaChoice & RMA_PUT)) {
- for (sz=1; sz<=MAX_RMA_SIZE; sz = sz + sz) {
+ for (sz=1; sz<=maxSz; sz = sz + sz) {
if (wrank == 0)
printf( "Put with pscw, %d elements\n", sz );
cnt = 1;
@@ -188,7 +203,7 @@
}
if ((syncChoice & SYNC_PSCW) && (rmaChoice & RMA_ACC)) {
- for (sz=1; sz<=MAX_RMA_SIZE; sz = sz + sz) {
+ for (sz=1; sz<=maxSz; sz = sz + sz) {
if (wrank == 0)
printf( "Accumulate with pscw, %d elements\n", sz );
cnt = 1;
@@ -218,8 +233,8 @@
int k, i, j, one = 1;
for (k=0; k<MAX_RUNS; k++) {
+ MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_fence( 0, win );
- MPI_Barrier( MPI_COMM_WORLD );
j = 0;
t[k].startOp = MPI_Wtime();
for (i=0; i<cnt; i++) {
@@ -228,6 +243,7 @@
j += sz;
}
t[k].endOp = MPI_Wtime();
+ if (barrierSync) MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_fence( 0, win );
t[k].endSync = MPI_Wtime();
}
@@ -238,8 +254,8 @@
int k, i, j, one = 1;
for (k=0; k<MAX_RUNS; k++) {
+ MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_lock( MPI_LOCK_SHARED, destRank, 0, win );
- MPI_Barrier( MPI_COMM_WORLD );
j = 0;
t[k].startOp = MPI_Wtime();
for (i=0; i<cnt; i++) {
@@ -248,6 +264,7 @@
j += sz;
}
t[k].endOp = MPI_Wtime();
+ if (barrierSync) MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_unlock( destRank, win );
t[k].endSync = MPI_Wtime();
}
@@ -258,8 +275,8 @@
int k, i, j, one = 1;
for (k=0; k<MAX_RUNS; k++) {
+ MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_fence( 0, win );
- MPI_Barrier( MPI_COMM_WORLD );
j = 0;
t[k].startOp = MPI_Wtime();
for (i=0; i<cnt; i++) {
@@ -268,6 +285,7 @@
j += sz;
}
t[k].endOp = MPI_Wtime();
+ if (barrierSync) MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_fence( 0, win );
t[k].endSync = MPI_Wtime();
}
@@ -278,8 +296,8 @@
int k, i, j, one = 1;
for (k=0; k<MAX_RUNS; k++) {
+ MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_lock( MPI_LOCK_SHARED, destRank, 0, win );
- MPI_Barrier( MPI_COMM_WORLD );
j = 0;
t[k].startOp = MPI_Wtime();
for (i=0; i<cnt; i++) {
@@ -287,6 +305,7 @@
j += sz;
}
t[k].endOp = MPI_Wtime();
+ if (barrierSync) MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_unlock( destRank, win );
t[k].endSync = MPI_Wtime();
}
@@ -298,9 +317,9 @@
int k, i, j, one = 1;
for (k=0; k<MAX_RUNS; k++) {
+ MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_post( exposureGroup, 0, win );
MPI_Win_start( accessGroup, 0, win );
- MPI_Barrier( MPI_COMM_WORLD );
j = 0;
t[k].startOp = MPI_Wtime();
for (i=0; i<cnt; i++) {
@@ -308,6 +327,7 @@
j += sz;
}
t[k].endOp = MPI_Wtime();
+ if (barrierSync) MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_complete( win );
MPI_Win_wait( win );
t[k].endSync = MPI_Wtime();
@@ -320,9 +340,9 @@
int k, i, j, one = 1;
for (k=0; k<MAX_RUNS; k++) {
+ MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_post( exposureGroup, 0, win );
MPI_Win_start( accessGroup, 0, win );
- MPI_Barrier( MPI_COMM_WORLD );
j = 0;
t[k].startOp = MPI_Wtime();
for (i=0; i<cnt; i++) {
@@ -331,6 +351,7 @@
j += sz;
}
t[k].endOp = MPI_Wtime();
+ if (barrierSync) MPI_Barrier( MPI_COMM_WORLD );
MPI_Win_complete( win );
MPI_Win_wait( win );
t[k].endSync = MPI_Wtime();
More information about the mpich2-commits
mailing list