Skip to content

Commit 058dc4c

Browse files
committed
Fixes
1 parent d255eaa commit 058dc4c

File tree

7 files changed

+49
-19
lines changed

7 files changed

+49
-19
lines changed

include/openPMD/IO/ADIOS/ADIOS2IOHandler.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,8 @@ class ADIOS2IOHandlerImpl
434434
Offset const &offset,
435435
Extent const &extent,
436436
adios2::IO &IO,
437-
std::string const &varName)
437+
std::string const &varName,
438+
std::optional<size_t> stepSelection)
438439
{
439440
{
440441
auto requiredType = adios2::GetType<T>();
@@ -461,6 +462,10 @@ class ADIOS2IOHandlerImpl
461462
throw std::runtime_error(
462463
"[ADIOS2] Internal error: Failed opening ADIOS2 variable.");
463464
}
465+
if (stepSelection.has_value())
466+
{
467+
var.SetStepSelection({*stepSelection, 1});
468+
}
464469
// TODO leave this check to ADIOS?
465470
adios2::Dims shape = var.Shape();
466471
auto actualDim = shape.size();

src/IO/ADIOS/ADIOS2File.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,8 @@ void DatasetReader::call(
6262
std::string const &fileName,
6363
std::optional<size_t> stepSelection)
6464
{
65-
adios2::Variable<T> var =
66-
impl->verifyDataset<T>(bp.param.offset, bp.param.extent, IO, bp.name);
67-
if (stepSelection.has_value())
68-
{
69-
var.SetStepSelection({*stepSelection, 1});
70-
}
65+
adios2::Variable<T> var = impl->verifyDataset<T>(
66+
bp.param.offset, bp.param.extent, IO, bp.name, stepSelection);
7167
if (!var)
7268
{
7369
throw std::runtime_error(
@@ -96,7 +92,11 @@ void WriteDataset::call(ADIOS2File &ba, detail::BufferedPut &bp)
9692
auto ptr = static_cast<T const *>(arg.get());
9793

9894
adios2::Variable<T> var = ba.m_impl->verifyDataset<T>(
99-
bp.param.offset, bp.param.extent, ba.m_IO, bp.name);
95+
bp.param.offset,
96+
bp.param.extent,
97+
ba.m_IO,
98+
bp.name,
99+
std::nullopt);
100100

101101
ba.getEngine().Put(var, ptr);
102102
}
@@ -160,7 +160,11 @@ struct RunUniquePtrPut
160160
{
161161
auto ptr = static_cast<T const *>(bufferedPut.data.get());
162162
adios2::Variable<T> var = ba.m_impl->verifyDataset<T>(
163-
bufferedPut.offset, bufferedPut.extent, ba.m_IO, bufferedPut.name);
163+
bufferedPut.offset,
164+
bufferedPut.extent,
165+
ba.m_IO,
166+
bufferedPut.name,
167+
std::nullopt);
164168
ba.getEngine().Put(var, ptr);
165169
}
166170

src/IO/ADIOS/ADIOS2IOHandler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,7 +1123,7 @@ namespace detail
11231123
auto &IO = ba.m_IO;
11241124
auto &engine = ba.getEngine();
11251125
adios2::Variable<T> variable = impl->verifyDataset<T>(
1126-
params.offset, params.extent, IO, varName);
1126+
params.offset, params.extent, IO, varName, std::nullopt);
11271127
adios2::Dims offset(params.offset.begin(), params.offset.end());
11281128
adios2::Dims extent(params.extent.begin(), params.extent.end());
11291129
variable.SetSelection({std::move(offset), std::move(extent)});
@@ -1439,7 +1439,7 @@ void ADIOS2IOHandlerImpl::readAttributeAllsteps(
14391439
auto engine = IO.Open(fullPath(*file), adios2::Mode::Read);
14401440
auto status = engine.BeginStep();
14411441
auto type = detail::attributeInfo(IO, name, /* verbose = */ true);
1442-
switchAdios2AttributeType<ReadAttributeAllsteps>(
1442+
switchType<ReadAttributeAllsteps>(
14431443
type, IO, engine, name, status, *param.resource);
14441444
engine.Close();
14451445
}

src/IO/AbstractIOHandlerImpl.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,10 @@ std::future<void> AbstractIOHandlerImpl::flush()
319319
i.writable->parent,
320320
"->",
321321
i.writable,
322-
"] READ_DATASET");
322+
"] READ_DATASET, offset=",
323+
[&parameter]() { return vec_as_string(parameter.offset); },
324+
", extent=",
325+
[&parameter]() { return vec_as_string(parameter.extent); });
323326
readDataset(i.writable, parameter);
324327
break;
325328
}

src/IO/IOTask.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,23 @@ namespace internal
149149
case Operation::AVAILABLE_CHUNKS:
150150
return "AVAILABLE_CHUNKS";
151151
break;
152-
default:
153-
return "unknown";
152+
case Operation::CHECK_FILE:
153+
return "CHECK_FILE";
154+
break;
155+
case Operation::READ_ATT_ALLSTEPS:
156+
return "READ_ATT_ALLSTEPS";
157+
break;
158+
case Operation::DEREGISTER:
159+
return "DEREGISTER";
160+
break;
161+
case Operation::TOUCH:
162+
return "TOUCH";
163+
break;
164+
case Operation::SET_WRITTEN:
165+
return "SET_WRITTEN";
154166
break;
155167
}
168+
return "unknown";
156169
}
157170
} // namespace internal
158171

src/Iteration.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,8 @@ void Iteration::readGorVBased(
459459
Parameter<Operation::ADVANCE> param;
460460
param.mode = Parameter<Operation::ADVANCE>::StepSelection{
461461
randomAccess.step};
462-
IOHandler()->enqueue(IOTask(this, std::move(param)));
462+
IOHandler()->enqueue(
463+
IOTask(&retrieveSeries().writable(), std::move(param)));
463464
},
464465
},
465466
doBeginStep);

src/Series.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,7 +1453,7 @@ void Series::flushGorVBased(
14531453
Parameter<Operation::ADVANCE> param;
14541454
param.mode = Parameter<Operation::ADVANCE>::StepSelection{
14551455
series.m_snapshotToStep.at(it->first)};
1456-
IOHandler()->enqueue(IOTask(&it->second, std::move(param)));
1456+
IOHandler()->enqueue(IOTask(this, std::move(param)));
14571457
}
14581458
it->second.flush(flushParams);
14591459
break;
@@ -2196,9 +2196,13 @@ creating new iterations.
21962196
* must happen after opening the first step.
21972197
*/
21982198
internal::BeginStep beginStep = randomAccessSteps()
2199-
? internal::
2200-
BeginStep{internal::BeginStepTypes::BeginStepRandomAccess{
2201-
series.m_snapshotToStep.at(it)}}
2199+
? (series.m_snapshotToStep.empty()
2200+
? internal::BeginStep{internal::BeginStepTypes::
2201+
DontBeginStep{}}
2202+
: internal::BeginStep{internal::BeginStepTypes::
2203+
BeginStepRandomAccess{
2204+
series.m_snapshotToStep.at(
2205+
it)}})
22022206
: internal::BeginStep{
22032207
internal::BeginStepTypes::BeginStepSynchronously{}};
22042208
if (auto err = internal::withRWAccess(

0 commit comments

Comments
 (0)