From db32f19a773d8cfa872de7c2c03a6e768df49c06 Mon Sep 17 00:00:00 2001
From: "Peter W. Draper" <p.w.draper@durham.ac.uk>
Date: Thu, 3 Oct 2019 11:12:47 +0100
Subject: [PATCH] Add an option to scale all message sizes

---
 swiftmpistepsim.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/swiftmpistepsim.c b/swiftmpistepsim.c
index 394dea0..7a8091f 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
-- 
GitLab