aboutsummaryrefslogtreecommitdiff
path: root/src/Panda/io_main.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/Panda/io_main.C')
-rw-r--r--src/Panda/io_main.C83
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();
+}
+