diff options
Diffstat (limited to 'src/Panda/io_main.C')
-rw-r--r-- | src/Panda/io_main.C | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/Panda/io_main.C b/src/Panda/io_main.C new file mode 100644 index 0000000..69b0a63 --- /dev/null +++ b/src/Panda/io_main.C @@ -0,0 +1,83 @@ +#include "definitions.h" +#include "StopWatch.h" +#include "Panda.h" +#include "ArrayGroup.h" + +extern MPIFS* MPIFS_global_obj; +extern int BRANCHING_FACTOR; +extern int SUBCHUNK_SIZE; +Boolean shared_flag = NO; + + +char my_getopt(char *str) +{ + char command[8][15]; + + strcpy(command[0], "-chunks"); + strcpy(command[1], "-xmax_messages"); + strcpy(command[2], "-tags"); + strcpy(command[3], "-branching_factor"); + strcpy(command[4], "-ymax_memory"); + strcpy(command[5], "-flag"); + strcpy(command[6], "-size_message"); + strcpy(command[7], "-Shared"); + + for (int i= 0; i< 8; i++) + if (!strncmp(str, command[i], 2)) return command[i][1]; + printf("undefined input %s, quit!\n",str); + exit(0); +} + +void parse_cl(int argc, char **argv) +{ + char opt; + + for(int i=1; i< argc; ){ + opt = my_getopt(argv[i++]); + switch(opt) { + case 'b' : + BRANCHING_FACTOR = atoi(argv[i++]); + break; + case 's': + SUBCHUNK_SIZE = atoi(argv[i++]); + break; + case 'S': + shared_flag = (Boolean) atoi(argv[i++]); + break; + } + } +} + +main(int argc, char **argv) +{ + int *world_ranks, my_rank, leader, app_size; + MPI_Init(&argc, &argv); + Panda *bear; + char cmd[100]; + + MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); + sprintf(cmd , "rm -rf %s", FILEPREFIX); + //if (my_rank == 0) + system(cmd); + sprintf(cmd , "mkdir %s", FILEPREFIX); + //if (my_rank == 0) + system(cmd); + MPI_Comm_size(MPI_COMM_WORLD, &app_size); + world_ranks = (int *) malloc(sizeof(int)*app_size); + leader = 0; + + for(int i=0;i< app_size; i++) + world_ranks[i] = leader+i; + parse_cl(argc, argv); + if (shared_flag){ + bear = new Panda(IO_NODE, 0, my_rank, app_size, + world_ranks, YES); + } + else { + bear = new Panda(IO_NODE, 0, my_rank, app_size, world_ranks); + } + delete bear; +// sprintf(cmd , "rm -rf %s", FILEPREFIX); if (my_rank == 0) system(cmd); + MPI_Finalize(); +} + |