Skip to content

Commit

Permalink
Attempt to make OpenMP ValOp reduction tests faster in CI.
Browse files Browse the repository at this point in the history
  • Loading branch information
rchen20 committed Sep 19, 2024
1 parent 6cd997a commit 8062809
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -101,29 +101,33 @@ void ForallReduceMaxLocBasicTestImpl(const SEG_TYPE& seg,
VL_TYPE max2(max_init, maxloc_init);

RAJA::forall<EXEC_POLICY>(seg,
RAJA::expt::Reduce<RAJA::operators::maximum>(&max),
RAJA::expt::Reduce<RAJA::operators::maximum>(&max2),
[=] RAJA_HOST_DEVICE(IDX_TYPE RAJA_UNUSED_ARG(idx), VL_LAMBDA_TYPE RAJA_UNUSED_ARG(&m), VL_LAMBDA_TYPE &m2) {
[=] RAJA_HOST_DEVICE(IDX_TYPE RAJA_UNUSED_ARG(idx), VL_LAMBDA_TYPE &m2) {
m2.max( max );
});
ASSERT_EQ(static_cast<DATA_TYPE>(max2.getVal()), static_cast<DATA_TYPE>(max.getVal()));
ASSERT_EQ(static_cast<IDX_TYPE>(max2.getLoc()), static_cast<IDX_TYPE>(max.getLoc()));

DATA_TYPE s_max = max_init;
DATA_TYPE s_max2 = max_init;
IDX_TYPE s_maxloc = maxloc_init;
IDX_TYPE s_maxloc2 = maxloc_init;

factor = 4;
RAJA::forall<EXEC_POLICY>(seg,
RAJA::expt::ReduceLoc<RAJA::operators::maximum>(&s_max, &s_maxloc),
RAJA::expt::ReduceLoc<RAJA::operators::maximum>(&s_max2, &s_maxloc2),
[=] RAJA_HOST_DEVICE(IDX_TYPE idx, VL_LAMBDA_TYPE &m, VL_LAMBDA_TYPE &m2) {
[=] RAJA_HOST_DEVICE(IDX_TYPE idx, VL_LAMBDA_TYPE &m) {
m.maxloc( working_array[idx] * factor, idx);
m2.max(max2);
});
ASSERT_EQ(static_cast<DATA_TYPE>(s_max), ref_max * factor);
ASSERT_EQ(static_cast<IDX_TYPE>(s_maxloc), ref_maxloc);

DATA_TYPE s_max2 = max_init;
IDX_TYPE s_maxloc2 = maxloc_init;

RAJA::forall<EXEC_POLICY>(seg,
RAJA::expt::ReduceLoc<RAJA::operators::maximum>(&s_max2, &s_maxloc2),
[=] RAJA_HOST_DEVICE(IDX_TYPE RAJA_UNUSED_ARG(idx), VL_LAMBDA_TYPE &m2) {
m2.max(max2);
});
ASSERT_EQ(static_cast<DATA_TYPE>(s_max2), static_cast<DATA_TYPE>(max2.getVal()));
ASSERT_EQ(static_cast<IDX_TYPE>(s_maxloc2), static_cast<IDX_TYPE>(max2.getLoc()));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,29 +100,33 @@ void ForallReduceMinLocBasicTestImpl(const SEG_TYPE& seg,
VL_TYPE min2(min_init, minloc_init);

RAJA::forall<EXEC_POLICY>(seg,
RAJA::expt::Reduce<RAJA::operators::minimum>(&min),
RAJA::expt::Reduce<RAJA::operators::minimum>(&min2),
[=] RAJA_HOST_DEVICE(IDX_TYPE RAJA_UNUSED_ARG(idx), VL_LAMBDA_TYPE RAJA_UNUSED_ARG(&m), VL_LAMBDA_TYPE &m2) {
[=] RAJA_HOST_DEVICE(IDX_TYPE RAJA_UNUSED_ARG(idx), VL_LAMBDA_TYPE &m2) {
m2.min( min );
});
ASSERT_EQ(static_cast<DATA_TYPE>(min2.getVal()), static_cast<DATA_TYPE>(min.getVal()));
ASSERT_EQ(static_cast<IDX_TYPE>(min2.getLoc()), static_cast<IDX_TYPE>(min.getLoc()));

DATA_TYPE s_min = min_init;
DATA_TYPE s_min2 = min_init;
IDX_TYPE s_minloc = minloc_init;
IDX_TYPE s_minloc2 = minloc_init;

factor = 4;
RAJA::forall<EXEC_POLICY>(seg,
RAJA::expt::ReduceLoc<RAJA::operators::minimum>(&s_min, &s_minloc),
RAJA::expt::ReduceLoc<RAJA::operators::minimum>(&s_min2, &s_minloc2),
[=] RAJA_HOST_DEVICE(IDX_TYPE idx, VL_LAMBDA_TYPE &m, VL_LAMBDA_TYPE &m2) {
[=] RAJA_HOST_DEVICE(IDX_TYPE idx, VL_LAMBDA_TYPE &m) {
m.minloc( working_array[idx] * factor, idx);
m2.min(min2);
});
ASSERT_EQ(static_cast<DATA_TYPE>(s_min), ref_min * factor);
ASSERT_EQ(static_cast<IDX_TYPE>(s_minloc), ref_minloc);

DATA_TYPE s_min2 = min_init;
IDX_TYPE s_minloc2 = minloc_init;

RAJA::forall<EXEC_POLICY>(seg,
RAJA::expt::ReduceLoc<RAJA::operators::minimum>(&s_min2, &s_minloc2),
[=] RAJA_HOST_DEVICE(IDX_TYPE RAJA_UNUSED_ARG(idx), VL_LAMBDA_TYPE &m2) {
m2.min(min2);
});
ASSERT_EQ(static_cast<DATA_TYPE>(s_min2), static_cast<DATA_TYPE>(min2.getVal()));
ASSERT_EQ(static_cast<IDX_TYPE>(s_minloc2), static_cast<IDX_TYPE>(min2.getLoc()));

Expand Down

0 comments on commit 8062809

Please sign in to comment.