Open burlen opened 6 years ago
In this example, the second process is selecting the second writeblock of each array. However, there is only one block per variable per step. It should result in error, not in segfault. Nevertheless, your example is incorrectly written. I am not sure if running this with flexpath indicates that this example works there - it simply may ignore the block id and return the one and only block's data. To fix the example, you need to use blockid 0 in all selections (get.cpp line 84) ADIOS_SELECTION *sel = adios_selection_writeblock(0);
Yes, I noticed that using write block 0 works with MPI/BP. However, when when using FLEXPATH method, the program spits out an error message
ERROR: Flexpath error: Variable "dataset_0/array_0/number_of_elements" not found.
and deadlocks. When I use the rank to select the write block then it works and produces the correct output.
There's definitely an inconsistency between FLEXPATH and MPI/BP methods in how write block selections work. It sounds like FLEXPATH is implemented differently than expected.
I also tried to adios_inq_var
/adios_inq_var_blockinfo
to probe what was there. With MPI/BP this worked but with FLEXPATH blockinfo field was always NULL.
In my code I am using
adios_selection_writeblock(rank)
in an M-M scenario. This runs correctly with the FLEXPATH method, but crashes in MPI/BP method in the read side. When using BP, the first timestep is processed correctly but during the second time step the second rank (rank 1) always crashes.here is the bt
valgrind reports many invalid read error
code to reproduce can be found here: https://github.com/burlen/test_dataspaces/archive/master.zip