Skip to content

Commit 7552804

Browse files
authored
Fix a number of tests for GPU (#4323)
1 parent 78bdf0f commit 7552804

File tree

5 files changed

+28
-20
lines changed

5 files changed

+28
-20
lines changed

Tests/MultiBlock/IndexType/main.cpp

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,11 @@
66
int MyMain();
77

88
int main(int argc, char** argv) {
9-
#ifdef AMREX_USE_MPI
10-
MPI_Init(&argc, &argv);
11-
#else
12-
amrex::ignore_unused(argc,argv);
13-
#endif
9+
amrex::Initialize(argc, argv);
1410
// Let me throw exceptions for triggering my debugger
15-
amrex::Initialize(MPI_COMM_WORLD, std::cout, std::cerr, [](const char* msg) { throw std::runtime_error(msg); });
11+
amrex::SetErrorHandler([](const char* msg) { throw std::runtime_error(msg); });
1612
int ret = MyMain();
1713
amrex::Finalize();
18-
#ifdef AMREX_USE_MPI
19-
MPI_Finalize();
20-
#endif
2114
return ret;
2215
}
2316

@@ -51,19 +44,23 @@ bool ParallelCopyWithItselfIsCorrect(amrex::iMultiFab& mf, const amrex::Box& dom
5144
const int nx = domain.length(0);
5245
const int ny = domain.length(1);
5346
int fails = 0;
47+
amrex::ReduceOps<amrex::ReduceOpSum> reduce_op;
48+
amrex::ReduceData<int> reduce_data(reduce_op);
49+
using ReduceTuple = amrex::GpuTuple<int>;
5450
for (amrex::MFIter mfi(mf); mfi.isValid(); ++mfi) {
5551
const amrex::Box section = dest_box & mfi.tilebox();
5652
if (section.isEmpty()) { continue; }
5753
auto array = mf.const_array(mfi);
58-
amrex::LoopOnCpu(section, [&](int i, int j, int k)
54+
reduce_op.eval(section, reduce_data,
55+
[=] AMREX_GPU_DEVICE (int i, int j, int k) -> ReduceTuple
5956
{
6057
amrex::Dim3 si = dtos(amrex::Dim3{i,j,k});
6158
int value = si.x + si.y*nx + si.z*nx*ny;
62-
fails += (array(i,j,k) != value);
63-
64-
AMREX_ASSERT(fails==0); // If DEBUG, crash on first error.
59+
auto r = int(array(i,j,k) != value);
60+
return { r };
6561
});
6662
}
63+
fails += amrex::get<0>(reduce_data.value());
6764
return fails == 0;
6865
}
6966

@@ -113,19 +110,23 @@ bool ParallelCopyFaceToFace(amrex::iMultiFab& dest, const amrex::Box& domain_des
113110
int fails = 0;
114111
const int nx = domain_src.length(0);
115112
const int ny = domain_src.length(1);
113+
amrex::ReduceOps<amrex::ReduceOpSum> reduce_op;
114+
amrex::ReduceData<int> reduce_data(reduce_op);
115+
using ReduceTuple = amrex::GpuTuple<int>;
116116
for (amrex::MFIter mfi(dest); mfi.isValid(); ++mfi) {
117117
const amrex::Box section = dest_box & mfi.tilebox();
118118
if (section.isEmpty()) { continue; }
119119
auto darray = dest.const_array(mfi);
120-
amrex::LoopOnCpu(section, [&](int i, int j, int k)
120+
reduce_op.eval(section, reduce_data,
121+
[=] AMREX_GPU_DEVICE (int i, int j, int k) -> ReduceTuple
121122
{
122123
amrex::Dim3 si = dtos(amrex::Dim3{i,j,k});
123124
int value = si.x + si.y*nx + si.z*nx*ny;
124-
fails += (darray(i,j,k) != value);
125-
126-
AMREX_ASSERT(fails==0); // If in debug, crash on first error.
125+
auto r = int(darray(i,j,k) != value);
126+
return { r };
127127
});
128128
}
129+
fails += amrex::get<0>(reduce_data.value());
129130
return fails == 0;
130131
}
131132

Tests/Particles/DenseBins/inputs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
amrex.the_arena_is_managed = 1
12
nitems = 100000017
23
nbins = 5000
34

45
#nitems = 20
5-
#nbins = 4
6+
#nbins = 4

Tests/Particles/DenseBins/main.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,7 @@ void testDenseBins ()
109109
amrex::Vector<int> items(nitems);
110110
initData(nbins, items);
111111

112-
#ifndef AMREX_USE_SYCL
113112
testSerial(nbins, items);
114-
#endif
115113
#ifdef AMREX_USE_OMP
116114
testOpenMP(nbins, items);
117115
#endif

Tests/Particles/NamedSoAComponents/main.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ void addParticles ()
131131

132132
int main (int argc, char* argv[])
133133
{
134+
{
135+
amrex::ParmParse pp("amrex");
136+
pp.add("the_arena_is_managed", 1);
137+
}
134138
amrex::Initialize(argc,argv);
135139
{
136140
addParticles();

Tests/Particles/SOAParticle/main.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ void addParticles ()
180180

181181
int main(int argc, char* argv[])
182182
{
183+
{
184+
amrex::ParmParse pp("amrex");
185+
pp.add("the_arena_is_managed", 1);
186+
}
183187
amrex::Initialize(argc,argv);
184188
{
185189
addParticles< ParticleContainerPureSoA<4, 2> > ();

0 commit comments

Comments
 (0)