From 7cdcbcef622e03950d08f686d543cd4ca56c626a Mon Sep 17 00:00:00 2001
From: AOA-Mohammed <ali.mohammed@unibas.ch>
Date: Wed, 26 May 2021 15:57:23 +0200
Subject: [PATCH] clean up example Makefile and code

---
 examples/Makefile                             | 37 ++++++-------------
 examples/core_benchmark.c                     |  2 +-
 ...{single_node_pool_op.c => local_pool_op.c} | 36 +++++++++---------
 ..._config.yaml => local_pool_op_config.yaml} |  0
 examples/omp_consumer.c                       |  2 +-
 examples/omp_injector.c                       |  2 +-
 6 files changed, 33 insertions(+), 46 deletions(-)
 rename examples/{single_node_pool_op.c => local_pool_op.c} (98%)
 rename examples/{single_node_pool_op_config.yaml => local_pool_op_config.yaml} (100%)

diff --git a/examples/Makefile b/examples/Makefile
index edd5c089..5094eed7 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -1,43 +1,30 @@
-MAESTRO ?=../../install
+MAESTRO ?=/usr/local/
 
 CC ?= gcc
 MPICC ?= mpicc
 
-SRC_single_pool_op=single_pool_op.c
-SRC_omp_inj=omp_injector.c
-SRC_consumer=omp_consumer.c
-SRC_core_bench=core_benchmark.c
-
 INC=-I$(MAESTRO)/include/maestro
 LDFLAGS=-L$(MAESTRO)/lib
-LIBS=-pthread -lmaestro
+
+LIBS=-lmaestro
 LIBS_OMP=-fopenmp -lmaestro
 
 CFLAGS=-O3
-CFLAGS_obj=-c -O3
-
-OBJ_single_pool_op=single_pool_op.o
-OBJ_omp_inj=omp_inj.o
-OBJ_omp_consumer=omp_consumer.o
-OBJ_core_bench=core_bench.o
-
-OBJ = $(OBJ_single_pool_op) $(OBJ_omp_inj) $(OBJ_core_bench) $(OBJ_omp_consumer)
 
+OBJs = core_bench local_pool_op
 
-all: single_pool_op core_bench
 
-single_pool_op:
-	$(CC) $(CFLAGS) $(INC) $(SRC_single_pool_op) $(LDFLAGS) $(LIBS) -o $(OBJ_single_pool_op)
+all: local_pool_op core_bench
 
-core_bench: omp_inj omp_consumer
-		$(MPICC) $(CFLAGS) $(INC) $(SRC_core_bench) $(LDFLAGS)  $(OBJ_omp_inj) $(OBJ_omp_consumer)  $(LIBS_OMP) -o $(OBJ_core_bench)
+%: %.c
+	$(CC) $(CFLAGS) $(INC) $< $(LDFLAGS) $(LIBS) -o $@
 
-omp_inj:
-	$(CC) $(CFLAGS_obj) $(INC) $(SRC_omp_inj) $(LDFLAGS) -o $(OBJ_omp_inj)
+%.o: %.c
+	$(MPICC) -c $(CFLAGS) $(INC) $< -o $@
 
-omp_consumer:
-	$(CC) $(CFLAGS_obj) $(INC) $(SRC_consumer) $(LDFLAGS) -o $(OBJ_omp_consumer)
+core_bench: omp_injector.o omp_consumer.o core_benchmark.o
+	$(MPICC)  $(LDFLAGS) $^ $(LIBS_OMP) -o $@
 
 
 clean:
-	rm  $(OBJ) *CDO*
+	rm -f $(OBJs) *.o *CDO*
diff --git a/examples/core_benchmark.c b/examples/core_benchmark.c
index 75ff5d11..dafbf701 100644
--- a/examples/core_benchmark.c
+++ b/examples/core_benchmark.c
@@ -280,7 +280,7 @@ int main(int argc, char *argv[])
       {
         for (size_t i = 0; i < num_CDOs; i++) {
           //allocate data
-          CDO_data[i] = (char *) malloc(size_CDO*sizeof(char));
+          posix_memalign((void**) &CDO_data[i], (size_t) sysconf(_SC_PAGESIZE), sizeof(char)*size_CDO);
           //fill data
           fill_char_array(CDO_data[i], size_CDO);
         }
diff --git a/examples/single_node_pool_op.c b/examples/local_pool_op.c
similarity index 98%
rename from examples/single_node_pool_op.c
rename to examples/local_pool_op.c
index 68fbb215..bb341062 100644
--- a/examples/single_node_pool_op.c
+++ b/examples/local_pool_op.c
@@ -208,7 +208,7 @@ static const cyaml_config_t config = {
 int
 mvp_config_parse(mvp_config* handle, const char* filename)
 {
-  if (handle == NULL) return MSTRO_INVARG; 
+  if (handle == NULL) return MSTRO_INVARG;
 
   cyaml_err_t err;
   err = cyaml_load_file(filename, &config,
@@ -255,7 +255,7 @@ wait_for_announcement(struct cdo_announcement *announcement)
     ERR("Failed to require announcement CDO\n");
     abort();
   }
-  
+
   s = mstro_cdo_demand(announcement_cdo);
   if(s!=MSTRO_OK) {
     ERR("Failed to withdraw announcement CDO\n");
@@ -450,7 +450,7 @@ archiver_flush_to_disk(const char *name, mmbArray *a)
     abort();
   }
 
-  size_t nt; 
+  size_t nt;
   stat = mmb_tile_iterator_count(it, &nt);
   if(stat != MMB_OK) {
     ERR("Failed to get tile iterator count\n");
@@ -721,8 +721,8 @@ mvp_checksum(const char* name, void* rawptr, uint64_t size)
   unsigned char x;
   uint64_t i;
 
-  for (i=0,x=0;i<size; i++) 
-    x ^= ((unsigned char*)rawptr)[i]; 
+  for (i=0,x=0;i<size; i++)
+    x ^= ((unsigned char*)rawptr)[i];
 
   INFO("Checksum for cdo \"%s\": %d\n", name, x);
 }
@@ -731,7 +731,7 @@ void
 consumer_flush_to_disk(const char *name, void *a, uint64_t size)
 {
   char file_name [256];
-  sprintf(file_name, "consumer_%s", name); 
+  sprintf(file_name, "consumer_%s", name);
 
   FILE *dst = fopen((const char*)file_name, "w");
   if(dst==NULL) {
@@ -769,7 +769,7 @@ consumer_thread_fun(void *closure)
   mstro_status s;
   size_t my_idx = * (size_t*)closure;
   INFO("Consumer %zu starting\n", my_idx);
-  
+
   struct cdo_announcement *announcement
       = malloc(sizeof(struct cdo_announcement));
   if(announcement==NULL) {
@@ -826,7 +826,7 @@ consumer_thread_fun(void *closure)
 
   /* send ACK that we're ready */
   mstro_cdo ready_cdo;
-  
+
   INFO("Declaring Consumer %zu ready\n", my_idx);
   declare_consumer_ready(my_idx,&ready_cdo);
 
@@ -853,14 +853,14 @@ consumer_thread_fun(void *closure)
       /* query the size */
       s = mstro_cdo_attribute_get(incoming[i],
                                   MSTRO_ATTR_CORE_CDO_SCOPE_LOCAL_SIZE,
-                                  &type, (const void**)&size); 
+                                  &type, (const void**)&size);
       if(s!=MSTRO_OK) {
         ERR("Failed to extract local size from CDO %s for archiving\n",
             announcement->cdo_names[i]);
         abort();
       }
 
-      /* do some work */ 
+      /* do some work */
       mvp_checksum(announcement->cdo_names[i], rawptr, *size);
 
       /* write-out */
@@ -878,7 +878,7 @@ consumer_thread_fun(void *closure)
   }
 
   /* demand data and process */
-  
+
 
   cdo_sem_post_cleanup(ready_cdo);
   free(announcement);
@@ -893,7 +893,7 @@ consumer_thread_fun(void *closure)
 #define DEFAULT_CDO_SIZE      1024
 #define DEFAULT_CDO_COUNT     42
 
-#define CONFIG_FILE_PATH "./single_node_pool_op_config.yaml"
+#define CONFIG_FILE_PATH "./local_pool_op_config.yaml"
 
 /*
  * main thread:
@@ -933,7 +933,7 @@ int main(int argc, char **argv)
       WARN("Command line arguments ignored\n");
       /* fallthrough: */
     case 1:
-      
+
       err = mvp_config_parse(&config_handle, CONFIG_FILE_PATH);
       if (err != 0) {
         WARN("Failed to parse a config file. Using default config.\n");
@@ -949,12 +949,12 @@ int main(int argc, char **argv)
         announcement.num_archivers = config_handle->num_archivers;
         announcement.cdo_size = config_handle->cdo_size;
         announcement.num_entries = config_handle->cdo_count;
-      }  
+      }
 
       break;
   }
   assert(announcement.num_entries<=CDO_COUNT_MAX);
-  
+
   pthread_t producers[announcement.num_producers];
   pthread_t consumers[announcement.num_consumers];
   pthread_t archivers[announcement.num_archivers];
@@ -1035,7 +1035,7 @@ int main(int argc, char **argv)
   for(size_t i=0; i<announcement.num_archivers; i++) {
     pthread_join(archivers[i], NULL);
   }
-  
+
   /* withdraw announcement */
   withdraw_announcement(announcement_cdo);
 
@@ -1050,11 +1050,11 @@ int main(int argc, char **argv)
           announcement.num_producers,
           announcement.num_consumers,
           announcement.num_archivers);
-          
+
 
 
 BAILOUT:
   if(config_handle) free(config_handle);
-  
+
   return s;
 }
diff --git a/examples/single_node_pool_op_config.yaml b/examples/local_pool_op_config.yaml
similarity index 100%
rename from examples/single_node_pool_op_config.yaml
rename to examples/local_pool_op_config.yaml
diff --git a/examples/omp_consumer.c b/examples/omp_consumer.c
index 78f06280..8150eaa4 100644
--- a/examples/omp_consumer.c
+++ b/examples/omp_consumer.c
@@ -152,7 +152,7 @@ mstro_status require_CDOs(mstro_cdo *cdos, int num_CDOs, int *injector_ids, int
 
 
   // declare CDOs loop
-  #pragma omp parallel for reduction(| :s)
+  #pragma omp parallel for private(cdoidx, cdo_gid) reduction(| :s)
   for(size_t i=0; i < num_injectors; i++)
   {
 
diff --git a/examples/omp_injector.c b/examples/omp_injector.c
index 197e42ec..c35d2323 100644
--- a/examples/omp_injector.c
+++ b/examples/omp_injector.c
@@ -54,7 +54,7 @@ mstro_status inject_CDOs(int injector_id, mstro_cdo *cdos, int num_CDOs, size_t
   size_t cdoidx;
 
   // declare CDOs loop
-  #pragma omp parallel for reduction(| :s)
+  #pragma omp parallel for private(cdoidx) reduction(| :s)
   for(size_t i=0; i < num_CDOs; i++)
   {
     mstro_status s1,s2, s3;
-- 
GitLab