-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtest_1d.cpp
64 lines (51 loc) · 1.55 KB
/
test_1d.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<adios2.h>
#include<vector>
#include <perfstubs_api/timer.h>
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
PERFSTUBS_INITIALIZE();
PERFSTUBS_SCOPED_TIMER_FUNC();
int mpiRank, mpiSize;
MPI_Comm_rank(MPI_COMM_WORLD, &mpiRank);
MPI_Comm_size(MPI_COMM_WORLD, &mpiSize);
adios2::ADIOS adios(MPI_COMM_WORLD);
adios2::IO io = adios.DeclareIO("Write");
std::string engineName = "BP4";
if (!engineName.empty())
{
io.SetEngine(engineName);
}
adios2::Engine engine = io.Open("foo.bp", adios2::Mode::Write);
{
const auto Nx = 2;
adios2::Dims shape{static_cast<unsigned int>(mpiSize * Nx)};
adios2::Dims start{static_cast<unsigned int>(mpiRank * Nx)};
adios2::Dims count{static_cast<unsigned int>(Nx)};
auto var_i32 = io.DefineVariable<int32_t>("i32", shape, start, count);
std::vector<int> dat(Nx);
engine.BeginStep();
engine.Put(var_i32, dat.data());
engine.EndStep();
}
{
const auto Nx = 2;
adios2::Dims shape{static_cast<unsigned int>(mpiSize * Nx)};
adios2::Dims start{};
adios2::Dims count{};
auto var_i32 = io.DefineVariable<int32_t>("i32_scatter", shape, start, count);
engine.BeginStep();
start = adios2::Dims{static_cast<size_t>(mpiRank*Nx)};
count = adios2::Dims{static_cast<size_t>(1)};
var_i32.SetSelection({start,count});
int x = 42;
engine.Put(var_i32, &x);
start = adios2::Dims{static_cast<size_t>(mpiRank*Nx+1)};
var_i32.SetSelection({start,count});
int y = 43;
engine.Put(var_i32, &y);
engine.EndStep();
}
engine.Close();
MPI_Finalize();
return 0;
}