ornladios/ADIOS

FLEXPATH doesn't read constants in array dimensions

Closed this issue · 2 comments

Given the following write side code

 535     std::string path = dataset_id + "/extent";
 536     adios_define_var(gh, path.c_str(), "", adios_integer, "6", "6", "0");
 537     
 538     path = dataset_id + "/origin";
 539     adios_define_var(gh, path.c_str(), "", adios_double, "3", "3", "0");
 540     
 541     path = dataset_id + "/spacing";
 542     adios_define_var(gh, path.c_str(), "", adios_double, "3", "3", "0");

the read side fails when using FLEXPATH printing

ERROR: Could not find fieldname: 6
ERROR: Could not find fieldname: 3
ERROR: Could not find fieldname: 3

However, no error code is returned from adios_perform_reads, which gives us no way to know that things didn't work out.

It seems that FLEXPATH read doesn't recognize constants in global array dimensions. FLEXPATH write does handle this, as does MPI/BP read/write.

It would be nice if constants were handled on the FLEXPATH read side. A work around is to add some dummy field to hold the fixed lengths, but this adds clutter.

@eisenhauer @mw70 level of severity == inconvenience

I've fixed this in GitHub master.