int main (int argc, char ** argv) { MPI_Comm comm = 0; // dummy mpi /* ADIOS variables declarations for matching gwrite_temperature.ch */ uint64_t adios_groupsize, adios_totalsize; int64_t g; int64_t f; int64_t Tid, Pid, Vid; // variable IDs char dimstr[32]; sprintf (dimstr, "%d,%d", NX, NY); adios_init_noxml (comm); adios_set_max_buffer_size (1); adios_declare_group (&g, "vars", "", adios_flag_yes); adios_select_method (g, "POSIX", "", ""); Tid = adios_define_var (g, "T" ,"", adios_double, dimstr, dimstr, "0,0"); adios_set_transform (Tid, "none"); Pid = adios_define_var (g, "P" ,"", adios_double, dimstr, dimstr, "0,0"); adios_set_transform (Pid, "none"); Vid = adios_define_var (g, "V" ,"", adios_double, dimstr, dimstr, "0,0"); adios_set_transform (Vid, "none"); adios_read_init_method(ADIOS_READ_METHOD_BP,0,""); if (adios_query_is_method_available (ADIOS_QUERY_METHOD_ALACRITY)) { adios_set_transform (Tid, "alacrity"); adios_set_transform (Pid, "alacrity"); adios_set_transform (Vid, "alacrity"); printf ("Turned on ALACRITY transformation for array variables\n"); } adios_open (&f, "vars", "vars.bp", "w", comm); adios_groupsize = 3*NX*NY*sizeof(double); adios_group_size (f, adios_groupsize, &adios_totalsize); adios_write (f, "T", T); adios_write (f, "P", P); adios_write (f, "V", V); adios_close (f); adios_finalize (0); return 0; }
int main (int argc, char ** argv) { char filename [256]; int rank, size, i, j; int NX = 100, gb, offset; //local/global/offset double t[NX]; int nblocks = 3; MPI_Comm comm = MPI_COMM_WORLD; char g_str[100], o_str[100], l_str[100]; // attributes (from C variables) int someints[5] = {5,4,3,2,1}; double somedoubles[5] = {5.55555, 4.4444, 3.333, 2.22, 1.1}; /* ADIOS variables declarations for matching gwrite_temperature.ch */ uint64_t adios_groupsize, adios_totalsize; MPI_Init (&argc, &argv); MPI_Comm_rank (comm, &rank); MPI_Comm_size (comm, &size); gb = nblocks * NX * size; sprintf (g_str, "%d", gb); sprintf (l_str, "%d", NX); strcpy (filename, "no_xml_write_byid.bp"); adios_init_noxml (comm); adios_set_max_buffer_size (10); int64_t m_adios_group; int64_t m_adios_file; int64_t var_ids[nblocks]; adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes); adios_select_method (m_adios_group, "MPI", "", ""); for (i = 0; i < nblocks; i++) { offset = rank * nblocks * NX + i * NX; sprintf (o_str, "%d", offset); var_ids[i] = adios_define_var (m_adios_group, "temperature" ,"", adios_double ,l_str, g_str, o_str ); adios_set_transform (var_ids[i], "none"); // This is here just for fun uint64_t varsize = adios_expected_var_size(var_ids[i]); // adios_expected_var_size() works here because the definition of the variable // does not depend on any dimension variable (but defined with numerical dimensions) fprintf (stderr, "Temperature block %d is %" PRIu64 " bytes\n", i, varsize); } // add some attributes adios_define_attribute_byvalue (m_adios_group, "single_string","", adios_string, 1, "A single string attribute"); char *strings[] = {"X","Yy","ZzZ"}; adios_define_attribute_byvalue (m_adios_group, "three_strings","", adios_string_array, 3, strings); adios_define_attribute_byvalue (m_adios_group, "single_int", "", adios_integer, 1, &someints); adios_define_attribute_byvalue (m_adios_group, "single_double","", adios_double, 1, &somedoubles); adios_define_attribute_byvalue (m_adios_group, "five_ints", "", adios_integer, 5, &someints); adios_define_attribute_byvalue (m_adios_group, "five_double", "", adios_double, 5, &somedoubles); adios_open (&m_adios_file, "restart", filename, "w", comm); adios_groupsize = nblocks * (4 + 4 + 4 + NX * 8); adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize); /* now we will write the data for each sub block */ for (i = 0; i < nblocks; i++) { offset = rank * nblocks * NX + i * NX; for (j = 0; j < NX; j++) t[j] = offset + j; adios_write_byid(m_adios_file, var_ids[i], t); } adios_close (m_adios_file); MPI_Barrier (comm); adios_finalize (rank); MPI_Finalize (); return 0; }
int main (int argc, char ** argv) { char filename [256]; int rank, size, i, block; int NX = 100, Global_bounds, Offsets; double t[NX]; int sub_blocks = 3; MPI_Comm comm = MPI_COMM_WORLD; /* ADIOS variables declarations for matching gwrite_temperature.ch */ uint64_t adios_groupsize, adios_totalsize; MPI_Init (&argc, &argv); MPI_Comm_rank (comm, &rank); MPI_Comm_size (comm, &size); Global_bounds = sub_blocks * NX * size; strcpy (filename, "adios_global_no_xml.bp"); adios_init_noxml (comm); adios_allocate_buffer (ADIOS_BUFFER_ALLOC_NOW, 10); int64_t m_adios_group; int64_t m_adios_file; adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes); adios_select_method (m_adios_group, "MPI", "", ""); adios_define_var (m_adios_group, "NX" ,"", adios_integer ,0, 0, 0); adios_define_var (m_adios_group, "Global_bounds" ,"", adios_integer ,0, 0, 0); for (i=0;i<sub_blocks;i++) { adios_define_var (m_adios_group, "Offsets" ,"", adios_integer ,0, 0, 0); int64_t varid; varid = adios_define_var (m_adios_group, "temperature" ,"", adios_double ,"NX", "Global_bounds", "Offsets"); adios_set_transform (varid, "none"); } adios_open (&m_adios_file, "restart", filename, "w", comm); adios_groupsize = sub_blocks * (4 + 4 + 4 + NX * 8); adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize); adios_write(m_adios_file, "NX", (void *) &NX); adios_write(m_adios_file, "Global_bounds", (void *) &Global_bounds); /* now we will write the data for each sub block */ for (block=0;block<sub_blocks;block++) { Offsets = rank * sub_blocks * NX + block*NX; adios_write(m_adios_file, "Offsets", (void *) &Offsets); for (i = 0; i < NX; i++) t[i] = Offsets + i; adios_write(m_adios_file, "temperature", t); } adios_close (m_adios_file); MPI_Barrier (comm); adios_finalize (rank); MPI_Finalize (); return 0; }