Skip to content

Commit 5fac029

Browse files
committed
Does this really improve serialization?
1 parent d4f3e2a commit 5fac029

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

src/IO/ADIOS/ADIOS2File.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,12 @@ void WriteDataset::call(ADIOS2File &ba, detail::BufferedPut &bp)
109109
std::nullopt,
110110
ba.variables());
111111

112-
engine.Put(var, ptr);
112+
// @todo cache this
113+
auto is_bp5 = ba.m_impl->realEngineType() == "bp5" ||
114+
auxiliary::lowerCase(engine.Type()) == "bp5writer";
115+
auto do_defer =
116+
is_bp5 ? adios2::Mode::Sync : adios2::Mode::Deferred;
117+
engine.Put(var, ptr, do_defer);
113118
}
114119
else if constexpr (std::is_same_v<
115120
ptr_type,
@@ -180,7 +185,11 @@ struct RunUniquePtrPut
180185
bufferedPut.name,
181186
std::nullopt,
182187
ba.variables());
183-
engine.Put(var, ptr);
188+
// @todo cache this
189+
auto is_bp5 = ba.m_impl->realEngineType() == "bp5" ||
190+
auxiliary::lowerCase(engine.Type()) == "bp5writer";
191+
auto do_defer = is_bp5 ? adios2::Mode::Sync : adios2::Mode::Deferred;
192+
engine.Put(var, ptr, do_defer);
184193
}
185194

186195
static constexpr char const *errorMsg = "RunUniquePtrPut";
@@ -1138,9 +1147,15 @@ void ADIOS2File::flush_impl(ADIOS2FlushParams flushParams, bool writeLatePuts)
11381147
m_uniquePtrPuts.clear();
11391148
m_updateSpans.clear();
11401149
break;
1141-
case CleanedFlushTarget::Buffer:
1142-
engine.PerformPuts();
1143-
break;
1150+
case CleanedFlushTarget::Buffer: { // @todo cache this
1151+
auto is_bp5 = m_impl->realEngineType() == "bp5" ||
1152+
auxiliary::lowerCase(engine.Type()) == "bp5writer";
1153+
if (!is_bp5)
1154+
{
1155+
engine.PerformPuts();
1156+
}
1157+
}
1158+
break;
11441159
case CleanedFlushTarget::Step:
11451160
if (streamStatus != StreamStatus::DuringStep)
11461161
{

0 commit comments

Comments
 (0)