int main (int argc, char ** argv) { int err; MPI_Init (&argc, &argv); MPI_Comm_rank (comm, &rank); MPI_Comm_size (comm, &size); init_vars(); adios_init_noxml (comm); err = adios_read_init_method(ADIOS_READ_METHOD_BP, comm, "verbose=2"); if (err) { printE ("%s\n", adios_errmsg()); } if (!err) err = declare_group (); if (!err) err = write_file ("reuse_dim.bp"); if (!err) err = read_file ("reuse_dim.bp"); adios_finalize (rank); fini_vars(); MPI_Finalize (); return err; }
int main (int argc, char ** argv) { int err, step ; int do_write = 1; int do_read = 1; int m = 0; char write_method[16]; MPI_Init (&argc, &argv); MPI_Comm_rank (comm, &rank); MPI_Comm_size (comm, &size); if (argc > 1) { m = strtol (argv[1], NULL, 10); if (errno) { printf("Invalid 1st argument %s\n", argv[1]); Usage(); return 1;} } if (argc > 2) { if (argv[2][0] == 'w' || argv[2][0] == 'W') { do_read = 0; } else if (argv[2][0] == 'r' || argv[2][0] == 'R') { do_write = 0; } else { printE ("Invalid command line argument %s. Allowed ones:\n" " w: do write only\n" " r: do read only\n", argv[2]); MPI_Finalize (); return 1; } } if (m==0) { read_method = ADIOS_READ_METHOD_BP; strcpy(write_method,"MPI"); } else { read_method = ADIOS_READ_METHOD_DATASPACES; strcpy(write_method,"DATASPACES"); } log ("Writing: %s method=%s\n" "Reading: %s method=%d\n", (do_write ? "yes" : "no"), write_method, (do_read ? "yes" : "no"), read_method); alloc_vars(); if (do_write) { adios_init_noxml (comm); adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10); } if (do_read) { err = adios_read_init_method(read_method, comm, "verbose=2"); if (err) { printE ("%s\n", adios_errmsg()); } } if (do_write) { adios_declare_group (&m_adios_group, "selections", "iter", adios_flag_yes); adios_select_method (m_adios_group, write_method, "verbose=2", ""); define_vars(); for (step=0; step<NSTEPS; step++) { if (!err) { set_vars (step); err = write_file (step); sleep(1); } } adios_free_group (m_adios_group); } if (!err && do_read) err = read_points (); //if (!err && do_read) // err = read_writerblocks (); if (do_read) { adios_read_finalize_method (read_method); } fini_vars(); if (do_write) { adios_finalize (rank); } MPI_Finalize (); return err; }
int main (int argc, char ** argv) { int err,i,M; int iconnect; MPI_Init (&argc, &argv); MPI_Comm_rank (wcomm, &wrank); MPI_Comm_size (wcomm, &wsize); if (argc < 2) { Usage(); return 1; } errno = 0; M = strtol (argv[1], NULL, 10); if (errno || M < 1 || M > wsize) { printE("Invalid 1st argument %s\n", argv[1]); Usage(); return 1; } iconnect = (wrank >= wsize-M); // connect to server from ranks N-M, N-M+1, ..., N MPI_Comm_split (wcomm, iconnect, wrank+M-wsize, &subcomm); MPI_Comm_rank (subcomm, &subrank); MPI_Comm_size (subcomm, &subsize); if (iconnect) { if (subsize != M) { printE ("Something wrong with communicator split: N=%d, M=%d, splitted size=%d\n", wsize, M, subsize); return 2; } log ("connect as subrank %d\n", subrank); } alloc_vars(); adios_read_init_method(ADIOS_READ_METHOD_DATASPACES, subcomm, "verbose=4"); adios_init_noxml (subcomm); adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 1); if (iconnect) { adios_declare_group (&m_adios_group, "connect", "iter", adios_flag_yes); adios_select_method (m_adios_group, "DATASPACES", "verbose=4", ""); adios_define_var (m_adios_group, "ldim1", "", adios_integer, 0, 0, 0); adios_define_var (m_adios_group, "gdim1", "", adios_integer, 0, 0, 0); adios_define_var (m_adios_group, "offs1", "", adios_integer, 0, 0, 0); adios_define_var (m_adios_group, "a1", "", adios_integer, "ldim1", "gdim1", "offs1"); for (i=0; i<NSTEPS; i++) { if (!err) { set_vars (i); err = write_file (i); } } } log ("done with work, sync with others...\n"); MPI_Barrier (wcomm); log ("call adios_finalize...\n"); adios_finalize (wrank); log ("call adios_read_finalize_method...\n"); adios_read_finalize_method (ADIOS_READ_METHOD_DATASPACES); fini_vars(); MPI_Finalize (); return err; }