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