static void produce_xml( FILE *outfile, const dataset_xml_spec_t *xml_spec, const char *transform_name) { static const char *HEADER_XML = "<?xml version=\"1.0\"?>\n" "<adios-config host-language=\"C\">\n" " <adios-group name=\"%s\" coordination-communicator=\"comm\">\n"; static const char *DIMVAR_XML = " <var name=\"N%d\" type=\"integer\"/>\n" " <var name=\"D%d\" type=\"integer\"/>\n" " <var name=\"O%d\" type=\"integer\"/>\n"; static const char *GLOBALBOUNDS_HEADER_XML = " <global-bounds dimensions=\"%s\" offsets=\"%s\">\n"; static const char *VAR_XML = " <var name=\"%s\" type=\"%s\" dimensions=\"%s\" transform=\"%s\"/>\n"; static const char *GLOBALBOUNDS_FOOTER_XML = " </global-bounds>\n"; static const char *FOOTER_XML = " </adios-group>\n" " <method group=\"%s\" method=\"%s\"/>\n" " <buffer size-MB=\"%u\" allocate-time=\"now\"/>\n" "</adios-config>\n"; // Actual function begins int i; char dimvar_list_buf1[256]; // for storing D0,D1,D2,...,Dn char dimvar_list_buf2[256]; // for storing D0,D1,D2,...,Dn fprintf(outfile, HEADER_XML, xml_spec->group_name); for (i = 0; i < xml_spec->ndim; i++) fprintf(outfile, DIMVAR_XML, i, i, i); build_dimension_var_list(xml_spec->ndim, "N", dimvar_list_buf1); build_dimension_var_list(xml_spec->ndim, "O", dimvar_list_buf2); fprintf(outfile, GLOBALBOUNDS_HEADER_XML, dimvar_list_buf1, dimvar_list_buf2); for (i = 0; i < xml_spec->nvar; ++i) { build_dimension_var_list(xml_spec->ndim, "D", dimvar_list_buf1); fprintf(outfile, VAR_XML, xml_spec->varnames[i], adios_type_to_string_int(xml_spec->vartypes[i]), dimvar_list_buf1, transform_name); } fprintf(outfile, GLOBALBOUNDS_FOOTER_XML); fprintf(outfile, FOOTER_XML, xml_spec->group_name, xml_spec->write_transport_method, xml_spec->buffer_size_mb); }
void print_var_header (struct adios_var_header_struct_v1 * var_header) { int i = 0; printf ("\t\tVar Name (ID): %s (%d)\n", var_header->name, var_header->id); printf ("\t\tVar Path: %s\n", var_header->path); printf ("\t\tDatatype: %s\n", adios_type_to_string_int (var_header->type)); printf ("\t\tIs Dimension: %c\n" ,(var_header->is_dim == adios_flag_yes ? 'Y' : 'N') ); if (var_header->dims) { struct adios_dimension_struct_v1 * d = var_header->dims; printf ("\t\tDimensions:\n"); while (d) { printf ("\t\t\tDim %d l:g:o: ", i++); if (d->dimension.var_id == 0) { if (d->dimension.is_time_index == adios_flag_yes) { printf ("TIME"); } else { printf ("R(%" PRIu64 ")", d->dimension.rank); } } else { printf ("V(%u)", d->dimension.var_id); } if ( d->global_dimension.var_id != 0 || d->global_dimension.rank != 0 ) { if (d->global_dimension.var_id == 0) { if (d->global_dimension.is_time_index == adios_flag_yes) { printf (":TIME"); } else { printf (":R(%" PRIu64 ")", d->global_dimension.rank); } } else { printf (":V(%u)", d->global_dimension.var_id); } if (d->local_offset.var_id == 0) { if (d->local_offset.is_time_index == adios_flag_yes) { printf (":TIME"); } else { printf (":R(%" PRIu64 ")\n", d->local_offset.rank); } } else { printf (":V(%u)\n", d->local_offset.var_id); } } printf ("\n"); d = d->next; } } printf ("\t\tCharacteristics:\n"); printf ("\t\t\tOffset(%" PRIu64 ")", var_header->characteristics.offset); /* NCSU - Print min, max */ if (var_header->type == adios_complex || var_header->type == adios_double_complex) { uint8_t type; if (var_header->type == adios_complex) type = adios_double; else type = adios_long_double; if (var_header->characteristics.stats && var_header->characteristics.stats[0][adios_statistic_min].data) { printf ("\tMin(%s)", bp_value_to_string (type ,var_header->characteristics.stats[0][adios_statistic_min].data ) ); } if (var_header->characteristics.stats && var_header->characteristics.stats[0][adios_statistic_max].data) { printf ("\tMax(%s)", bp_value_to_string (type ,var_header->characteristics.stats[0][adios_statistic_max].data ) ); } } else { if (var_header->characteristics.stats && var_header->characteristics.stats[0][adios_statistic_min].data) { printf ("\tMin(%s)", bp_value_to_string (var_header->type ,var_header->characteristics.stats[0][adios_statistic_min].data ) ); } if (var_header->characteristics.stats && var_header->characteristics.stats[0][adios_statistic_max].data) { printf ("\tMax(%s)", bp_value_to_string (var_header->type ,var_header->characteristics.stats[0][adios_statistic_max].data ) ); } } if (var_header->characteristics.value) { printf ("\t\t\tValue(%s)", bp_value_to_string (var_header->type ,var_header->characteristics.value ) ); } if (var_header->characteristics.dims.count != 0) { printf ("\t\t\tDims (l:g:o): ("); print_characteristic_dims(&var_header->characteristics.dims); printf(")"); } // NCSU ALACRITY-ADIOS - Adding printing of transform type printf ("\t\t\tTransform-type(%hhu = %s)", var_header->characteristics.transform.transform_type, adios_transform_plugin_primary_xml_alias(var_header->characteristics.transform.transform_type)); if (var_header->characteristics.transform.transform_type != adios_transform_none) { printf ("\t\t\tPre-transform-datatype(%s)", adios_type_to_string_int(var_header->characteristics.transform.pre_transform_type)); printf ("\t\t\tPre-transform-dims(l:g:o = "); print_characteristic_dims(&var_header->characteristics.transform.pre_transform_dimensions); printf (")"); printf ("\t\t\tTransform-metadata-length(%hu)", var_header->characteristics.transform.transform_metadata_len); } printf ("\n"); }
void print_attribute_index (int tid, struct adios_index_attribute_struct_v1 * attrs_root) { unsigned int nattrs=0; if (verbose>1) { //printf (DIVIDER); printf ("Thread %d: Attribute Index:\n", tid); } while (attrs_root) { if (verbose>1) { if (!strcmp (attrs_root->attr_path, "/")) { printf ("Thread %d: Attribute (Group) [ID]: /%s (%s) [%d]\n", tid, attrs_root->attr_name, attrs_root->group_name, attrs_root->id ); } else { printf ("Thread %d: Attribute (Group) [ID]: %s/%s (%s) [%d]\n", tid, attrs_root->attr_path, attrs_root->attr_name, attrs_root->group_name, attrs_root->id ); } printf ("Thread %d: \tDatatype: %s\n", tid, adios_type_to_string_int (attrs_root->type)); printf ("Thread %d: \tAttribute Characteristics: %llu\n", tid, attrs_root->characteristics_count ); uint64_t i; for (i = 0; i < attrs_root->characteristics_count; i++) { printf ("Thread %d: \t\tOffset(%llu)", tid, attrs_root->characteristics [i].offset); printf ("\t\tPayload Offset(%llu)", attrs_root->characteristics [i].payload_offset); printf ("\t\tFile Index(%d)", attrs_root->characteristics [i].file_index); printf ("\t\tTime Index(%d)", attrs_root->characteristics [i].time_index); /* NCSU - Print min, max */ if (attrs_root->type == adios_complex || attrs_root->type == adios_double_complex) { uint8_t type; if (attrs_root->type == adios_complex) type = adios_double; else type = adios_long_double; if (attrs_root->characteristics [i].stats && attrs_root->characteristics [i].stats[0][adios_statistic_min].data) { printf ("\tMin(%s)", bp_value_to_string (type ,attrs_root->characteristics [i].stats[0][adios_statistic_min].data ) ); } if (attrs_root->characteristics [i].stats && attrs_root->characteristics [i].stats[0][adios_statistic_max].data) { printf ("\tMax(%s)", bp_value_to_string (type ,attrs_root->characteristics [i].stats[0][adios_statistic_max].data ) ); } } else { if (attrs_root->characteristics [i].stats && attrs_root->characteristics [i].stats[0][adios_statistic_min].data) { printf ("\tMin(%s)", bp_value_to_string (attrs_root->type ,attrs_root->characteristics [i].stats[0][adios_statistic_min].data ) ); } if (attrs_root->characteristics [i].stats && attrs_root->characteristics [i].stats[0][adios_statistic_max].data) { printf ("\tMax(%s)", bp_value_to_string (attrs_root->type ,attrs_root->characteristics [i].stats[0][adios_statistic_max].data ) ); } } if (attrs_root->characteristics [i].value) { printf ("\t\tValue(%s)", bp_value_to_string (attrs_root->type ,attrs_root->characteristics [i].value ) ); } if (attrs_root->characteristics [i].var_id) { printf ("\t\tVar(%u)", attrs_root->characteristics [i].var_id); } if (attrs_root->characteristics [i].dims.count != 0) { int j; printf ("\t\tDims (l:g:o): ("); for (j = 0; j < attrs_root->characteristics [i].dims.count; j++) { if (j != 0) printf (","); if ( attrs_root->characteristics [i].dims.dims [j * 3 + 1] != 0 ) { printf ("%llu:%llu:%llu" ,attrs_root->characteristics [i].dims.dims [j * 3 + 0] ,attrs_root->characteristics [i].dims.dims [j * 3 + 1] ,attrs_root->characteristics [i].dims.dims [j * 3 + 2] ); } else { printf ("%llu" ,attrs_root->characteristics [i].dims.dims [j * 3 + 0] ); } } printf (")"); } printf ("\n"); } } attrs_root = attrs_root->next; nattrs++; } if (verbose==1) { printf ("Thread %d: Number of attributes: %u\n", tid, nattrs); } }
void print_variable_index (int tid, struct adios_index_var_struct_v1 * vars_root) { unsigned int nvars=0; if (verbose>1) { //printf (DIVIDER); printf ("Thread %d: Variable Index:\n", tid); } while (vars_root) { if (verbose>1) { if (!strcmp (vars_root->var_path, "/")) { printf ("Thread %d: Var (Group) [ID]: /%s (%s) [%d]\n", tid, vars_root->var_name,vars_root->group_name, vars_root->id ); } else { printf ("Thread %d: Var (Group) [ID]: %s/%s (%s) [%d]\n", tid, vars_root->var_path, vars_root->var_name, vars_root->group_name, vars_root->id ); } const char * typestr = adios_type_to_string_int (vars_root->type); printf ("Thread %d: \tDatatype: %s\n", tid, typestr); printf ("Thread %d: \tVars Characteristics: %llu\n", tid, vars_root->characteristics_count ); uint64_t i; for (i = 0; i < vars_root->characteristics_count; i++) { printf ("Thread %d: \tOffset(%llu)", tid, vars_root->characteristics [i].offset); printf ("\tPayload Offset(%llu)", vars_root->characteristics [i].payload_offset); printf ("\tFile Index(%d)", vars_root->characteristics [i].file_index); printf ("\tTime Index(%d)", vars_root->characteristics [i].time_index); /* NCSU - Print min, max */ if (vars_root->type == adios_complex || vars_root->type == adios_double_complex) { uint8_t type; if (vars_root->type == adios_complex) type = adios_double; else type = adios_long_double; if (vars_root->characteristics [i].stats && vars_root->characteristics [i].stats[0][adios_statistic_min].data) { printf ("\tMin(%s)", bp_value_to_string (type ,vars_root->characteristics [i].stats[0][adios_statistic_min].data ) ); } if (vars_root->characteristics [i].stats && vars_root->characteristics [i].stats[0][adios_statistic_max].data) { printf ("\tMax(%s)", bp_value_to_string (type ,vars_root->characteristics [i].stats[0][adios_statistic_max].data ) ); } } else { if (vars_root->characteristics [i].stats && vars_root->characteristics [i].stats[0][adios_statistic_min].data) { printf ("\tMin(%s)", bp_value_to_string (vars_root->type ,vars_root->characteristics [i].stats[0][adios_statistic_min].data ) ); } if (vars_root->characteristics [i].stats && vars_root->characteristics [i].stats[0][adios_statistic_max].data) { printf ("\tMax(%s)", bp_value_to_string (vars_root->type ,vars_root->characteristics [i].stats[0][adios_statistic_max].data ) ); } } //*/ if (vars_root->characteristics [i].value) { if (vars_root->type != adios_string) printf ("\tValue(%s)", bp_value_to_string (vars_root->type, vars_root->characteristics [i].value)); else printf ("\tValue(\"%s\")", bp_value_to_string (vars_root->type, vars_root->characteristics [i].value)); } if (vars_root->characteristics [i].dims.count != 0) { int j; printf ("\tDims (l:g:o): ("); for (j = 0; j < vars_root->characteristics [i].dims.count; j++) { if (j != 0) printf (","); if ( vars_root->characteristics [i].dims.dims [j * 3 + 1] != 0 ) { printf ("%llu:%llu:%llu" ,vars_root->characteristics [i].dims.dims [j * 3 + 0] ,vars_root->characteristics [i].dims.dims [j * 3 + 1] ,vars_root->characteristics [i].dims.dims [j * 3 + 2] ); } else { printf ("%llu" ,vars_root->characteristics [i].dims.dims [j * 3 + 0] ); } } printf (")"); } // NCSU ALACRITY-ADIOS - Print transform info if (vars_root->characteristics[i].transform.transform_type != adios_transform_none) { struct adios_index_characteristic_transform_struct *transform = &vars_root->characteristics[i].transform; struct adios_index_characteristic_dims_struct_v1 *dims = &transform->pre_transform_dimensions; int j; printf ("\tTransform type: %s (ID = %hhu)", adios_transform_plugin_desc(transform->transform_type), transform->transform_type); printf ("\tPre-transform datatype: %s", adios_type_to_string_int(transform->pre_transform_type)); printf ("\tPre-transform dims (l:g:o): ("); for (j = 0; j < dims->count; j++) { if (j != 0) printf (","); if ( dims->dims [j * 3 + 1] != 0 ) { printf ("%llu:%llu:%llu" ,dims->dims [j * 3 + 0] ,dims->dims [j * 3 + 1] ,dims->dims [j * 3 + 2] ); } else { printf ("%llu" ,dims->dims [j * 3 + 0] ); } } printf (")"); } printf ("\n"); } } vars_root = vars_root->next; nvars++; } if (verbose==1) { printf ("Thread %d: Number of variables: %u\n", tid, nvars); } }