Skip to content

Commit

Permalink
Merge pull request #2780 from eisenhauer/GetSyncTest
Browse files Browse the repository at this point in the history
Fix bug in BP5Deserializer and test Get(Sync)
  • Loading branch information
eisenhauer authored Jul 1, 2021
2 parents 612a395 + 19756fd commit d9db7c7
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 15 deletions.
2 changes: 1 addition & 1 deletion source/adios2/toolkit/format/bp5/BP5Deserializer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,7 @@ bool BP5Deserializer::QueueGet(core::VariableBase &variable, void *DestData)
else
{
}
return false;
return true;
}

bool BP5Deserializer::NeedWriter(BP5ArrayRequest Req, int i)
Expand Down
2 changes: 1 addition & 1 deletion testing/adios2/engine/staging-common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ if(ADIOS2_HAVE_MPI AND MPIEXEC_EXECUTABLE)
endforeach()
endif()

set (SIMPLE_TESTS "1x1;NoReaderNoWait;TimeoutOnOpen;1x1.NoData;1x1.Modes;1x1.Attrs;1x1.Local;1x1.SharedNothing;1x1.SharedIO;1x1.SharedVar;1x1.SharedNothingSync;1x1.SharedIOSync;1x1.SharedVarSync;1x1EarlyExit;CumulativeAttr.1x1")
set (SIMPLE_TESTS "1x1;1x1GetSync;NoReaderNoWait;TimeoutOnOpen;1x1.NoData;1x1.Modes;1x1.Attrs;1x1.Local;1x1.SharedNothing;1x1.SharedIO;1x1.SharedVar;1x1.SharedNothingSync;1x1.SharedIOSync;1x1.SharedVarSync;1x1EarlyExit;CumulativeAttr.1x1")

set (SIMPLE_FORTRAN_TESTS "")
if(ADIOS2_HAVE_Fortran)
Expand Down
19 changes: 19 additions & 0 deletions testing/adios2/engine/staging-common/ParseArgs.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ int LocalCount = 1;

std::string shutdown_name = "DieTest";
adios2::Mode GlobalWriteMode = adios2::Mode::Deferred;
adios2::Mode GlobalReadMode = adios2::Mode::Deferred;

static std::string Trim(std::string &str)
{
Expand Down Expand Up @@ -181,6 +182,24 @@ static void ParseArgs(int argc, char **argv)
argv++;
argc--;
}
else if (std::string(argv[1]) == "--read_mode")
{
if (strcasecmp(argv[2], "sync") == 0)
{
GlobalReadMode = adios2::Mode::Sync;
}
else if (strcasecmp(argv[2], "deferred") == 0)
{
GlobalReadMode = adios2::Mode::Deferred;
}
else
{
std::cerr << "Invalid mode for --write_mode " << argv[2]
<< std::endl;
}
argv++;
argc--;
}
else if (std::string(argv[1]) == "--engine_params")
{
engineParams = ParseEngineParams(argv[2]);
Expand Down
39 changes: 26 additions & 13 deletions testing/adios2/engine/staging-common/TestCommonRead.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -323,40 +323,53 @@ TEST_F(CommonReadTest, ADIOS2CommonRead1D8)
in_R64_2d_rev.resize(myLength * 2);
if (!NoData)
{
engine.Get(var_i8, in_I8.data());
engine.Get(var_i16, in_I16.data());
engine.Get(var_i32, in_I32.data());
engine.Get(var_i64, in_I64.data());
engine.Get(var_i8, in_I8.data(), GlobalReadMode);
engine.Get(var_i16, in_I16.data(), GlobalReadMode);
engine.Get(var_i32, in_I32.data(), GlobalReadMode);
engine.Get(var_i64, in_I64.data(), GlobalReadMode);

engine.Get(scalar_r64, in_scalar_R64);
engine.Get(scalar_r64, in_scalar_R64, GlobalReadMode);

engine.Get(var_r32, in_R32.data());
engine.Get(var_r64, in_R64.data());
engine.Get(var_r32, in_R32.data(), GlobalReadMode);
engine.Get(var_r64, in_R64.data(), GlobalReadMode);
if (!mpiRank)
engine.Get(var_time, (int64_t *)&write_time);
engine.Get(var_time, (int64_t *)&write_time,
GlobalReadMode);
}
else
{
if (NoDataNode != -1)
{
// someone wrote everything, get our part
engine.Get(var_r64, in_R64.data());
engine.Get(var_r64, in_R64.data(), GlobalReadMode);
}
}
if (var_c32)
engine.Get(var_c32, in_C32.data());
engine.Get(var_c32, in_C32.data(), GlobalReadMode);
if (var_c64)
engine.Get(var_c64, in_C64.data());
engine.Get(var_c64, in_C64.data(), GlobalReadMode);
if (var_r64_2d)
engine.Get(var_r64_2d, in_R64_2d.data());
engine.Get(var_r64_2d, in_R64_2d.data(), GlobalReadMode);
if (var_r64_2d_rev)
engine.Get(var_r64_2d_rev, in_R64_2d_rev.data());
engine.Get(var_r64_2d_rev, in_R64_2d_rev.data(),
GlobalReadMode);
if (LockGeometry)
{
// we'll never change our data decomposition
engine.LockReaderSelections();
}
}
if (!NoData && (GlobalReadMode == adios2::Mode::Sync))
{
// go ahead and test data now, it should be valid
int result = validateCommonTestData(myStart, myLength, t, !var_c32);
if (result != 0)
{
std::cout << "Read Data Validation failed on node " << mpiRank
<< " timestep " << t << std::endl;
}
EXPECT_EQ(result, 0);
}
engine.EndStep();

if (!NoData)
Expand Down
1 change: 1 addition & 0 deletions testing/adios2/engine/staging-common/TestSupp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ find_package(PythonInterp REQUIRED)
set (STAGING_COMMON_TEST_SUPP_VERBOSE OFF)

set (1x1_CMD "run_test.py.$<CONFIG> -nw 1 -nr 1")
set (1x1GetSync_CMD "run_test.py.$<CONFIG> -nw 1 -nr 1 --rarg=--read_mode --rarg=sync")
set (1x1.NoPreload_CMD "run_test.py.$<CONFIG> -nw 1 -nr 1 --rarg=PreloadMode=SstPreloadNone,RENGINE_PARAMS")
set (1x1.SstRUDP_CMD "run_test.py.$<CONFIG> -nw 1 -nr 1 --rarg=DataTransport=WAN,WANDataTransport=enet,RENGINE_PARAMS --warg=DataTransport=WAN,WANDataTransport=enet,WENGINE_PARAMS")
set (1x1.NoData_CMD "run_test.py.$<CONFIG> -nw 1 -nr 1 --warg=--no_data --rarg=--no_data")
Expand Down

0 comments on commit d9db7c7

Please sign in to comment.