diff --git a/swiftmpistepsim.c b/swiftmpistepsim.c index 394dea04b506074c75fa76e037bb283e12b8dc59..7a8091fd909f0a0512900611766f77ceb09ae454 100644 --- a/swiftmpistepsim.c +++ b/swiftmpistepsim.c @@ -38,6 +38,9 @@ static int verbose = 0; /* Attempt to keep original injection time differences. */ static int usetics = 1; +/* Scale to apply to the size of the messages we send. */ +static float messagescale = 1.0; + /* Integer types of send and recv tasks, must match log. */ static const int task_type_send = 22; static const int task_type_recv = 23; @@ -336,6 +339,9 @@ static void pick_logs(void) { if (log->rank == myrank && log->activation) { if (log->type == task_type_send || log->type == task_type_recv) { + /* Scale size. */ + log->size *= messagescale ; + /* Allocate space for data. */ log->data = calloc(log->size, 1); @@ -366,7 +372,8 @@ static void pick_logs(void) { static void usage(char *argv[]) { fprintf(stderr, "Usage: %s [-vf] SWIFT_mpiuse-log-file.dat logfile.dat\n", argv[0]); - fprintf(stderr, " options: -v verbose, -f fast injections\n"); + fprintf(stderr, " options: -v verbose, -f fast injections, " + "-s message size (bytes)\n"); fflush(stderr); } @@ -392,7 +399,7 @@ int main(int argc, char *argv[]) { /* Handle the command-line, we expect a mpiuse data file to read and various * options. */ int opt; - while ((opt = getopt(argc, argv, "vf")) != -1) { + while ((opt = getopt(argc, argv, "vfs:")) != -1) { switch (opt) { case 'f': usetics = 0; @@ -400,6 +407,9 @@ int main(int argc, char *argv[]) { case 'v': verbose = 1; break; + case 's': + messagescale = atof(optarg); + break; default: if (myrank == 0) usage(argv); return 1; @@ -438,6 +448,10 @@ int main(int argc, char *argv[]) { if (myrank == 0) { message("Start of MPI tests"); message("=================="); + if (messagescale != 1.0f) { + message(" "); + message(" Using message scale of %f", messagescale); + } } /* Make three threads, one for injecting tasks and two to check for