diff --git a/swiftmpistepsim.c b/swiftmpistepsim.c index 394dea04b506074c75fa76e037bb283e12b8dc59..82eb89851cf660d39e620739f5901d5ddf1e40ee 100644 --- a/swiftmpistepsim.c +++ b/swiftmpistepsim.c @@ -38,6 +38,10 @@ static int verbose = 0; /* Attempt to keep original injection time differences. */ static int usetics = 1; +/* Size of the messages we send. This overrides the logged values when not + * zero . */ +static size_t messagesize = 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 +340,9 @@ static void pick_logs(void) { if (log->rank == myrank && log->activation) { if (log->type == task_type_send || log->type == task_type_recv) { + /* Override size if needed. */ + if (messagesize > 0) log->size = messagesize; + /* Allocate space for data. */ log->data = calloc(log->size, 1); @@ -366,7 +373,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 +400,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 +408,9 @@ int main(int argc, char *argv[]) { case 'v': verbose = 1; break; + case 's': + messagesize = atoll(optarg); + break; default: if (myrank == 0) usage(argv); return 1; @@ -438,6 +449,10 @@ int main(int argc, char *argv[]) { if (myrank == 0) { message("Start of MPI tests"); message("=================="); + if (messagesize > 0) { + message(" "); + message(" Using fixed message size of %zd", messagesize); + } } /* Make three threads, one for injecting tasks and two to check for