Skip to content

Commit

Permalink
Add resource to omp target kernel variants
Browse files Browse the repository at this point in the history
  • Loading branch information
rhornung67 committed Oct 30, 2024
1 parent 3e97895 commit 4625664
Show file tree
Hide file tree
Showing 18 changed files with 103 additions and 40 deletions.
8 changes: 6 additions & 2 deletions src/polybench/POLYBENCH_2MM-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ void POLYBENCH_2MM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED

} else if ( vid == RAJA_OpenMPTarget ) {

auto res{getOmpTargetResource()};

POLYBENCH_2MM_VIEWS_RAJA;

using EXEC_POL =
Expand All @@ -78,11 +80,12 @@ void POLYBENCH_2MM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED
startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

RAJA::kernel_param<EXEC_POL>(
RAJA::kernel_param_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{0, ni},
RAJA::RangeSegment{0, nj},
RAJA::RangeSegment{0, nk}),
RAJA::tuple<Real_type>{0.0},
res,

[=](Real_type &dot) {
POLYBENCH_2MM_BODY1_RAJA;
Expand All @@ -95,11 +98,12 @@ void POLYBENCH_2MM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED
}
);

RAJA::kernel_param<EXEC_POL>(
RAJA::kernel_param_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{0, ni},
RAJA::RangeSegment{0, nl},
RAJA::RangeSegment{0, nj}),
RAJA::tuple<Real_type>{0.0},
res,

[=](Real_type &dot) {
POLYBENCH_2MM_BODY4_RAJA;
Expand Down
11 changes: 8 additions & 3 deletions src/polybench/POLYBENCH_3MM-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ void POLYBENCH_3MM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED

} else if ( vid == RAJA_OpenMPTarget ) {

auto res{getOmpTargetResource()};

POLYBENCH_3MM_VIEWS_RAJA;

using EXEC_POL =
Expand All @@ -90,11 +92,12 @@ void POLYBENCH_3MM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED
startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

RAJA::kernel_param<EXEC_POL>(
RAJA::kernel_param_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{0, ni},
RAJA::RangeSegment{0, nj},
RAJA::RangeSegment{0, nk}),
RAJA::tuple<Real_type>{0.0},
res,

[=] (Real_type &dot) {
POLYBENCH_3MM_BODY1_RAJA;
Expand All @@ -110,11 +113,12 @@ void POLYBENCH_3MM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED

);

RAJA::kernel_param<EXEC_POL>(
RAJA::kernel_param_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{0, nj},
RAJA::RangeSegment{0, nl},
RAJA::RangeSegment{0, nm}),
RAJA::tuple<Real_type>{0.0},
res,

[=] (Real_type &dot) {
POLYBENCH_3MM_BODY4_RAJA;
Expand All @@ -130,11 +134,12 @@ void POLYBENCH_3MM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED

);

RAJA::kernel_param<EXEC_POL>(
RAJA::kernel_param_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{0, ni},
RAJA::RangeSegment{0, nl},
RAJA::RangeSegment{0, nj}),
RAJA::tuple<Real_type>{0.0},
res,

[=] (Real_type &dot) {
POLYBENCH_3MM_BODY7_RAJA;
Expand Down
8 changes: 6 additions & 2 deletions src/polybench/POLYBENCH_ADI-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ void POLYBENCH_ADI::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED

} else if ( vid == RAJA_OpenMPTarget ) {

auto res{getOmpTargetResource()};

POLYBENCH_ADI_VIEWS_RAJA;

using EXEC_POL =
Expand All @@ -93,10 +95,11 @@ void POLYBENCH_ADI::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED

for (Index_type t = 1; t <= tsteps; ++t) {

RAJA::kernel<EXEC_POL>(
RAJA::kernel_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{1, n-1},
RAJA::RangeSegment{1, n-1},
RAJA::RangeStrideSegment{n-2, 0, -1}),
res,

[=] (Index_type i) {
POLYBENCH_ADI_BODY2_RAJA;
Expand All @@ -112,10 +115,11 @@ void POLYBENCH_ADI::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSED
}
);

RAJA::kernel<EXEC_POL>(
RAJA::kernel_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{1, n-1},
RAJA::RangeSegment{1, n-1},
RAJA::RangeStrideSegment{n-2, 0, -1}),
res,

[=] (Index_type i) {
POLYBENCH_ADI_BODY6_RAJA;
Expand Down
8 changes: 6 additions & 2 deletions src/polybench/POLYBENCH_ATAX-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ void POLYBENCH_ATAX::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSE

} else if (vid == RAJA_OpenMPTarget) {

auto res{getOmpTargetResource()};

POLYBENCH_ATAX_VIEWS_RAJA;

using EXEC_POL1 =
Expand Down Expand Up @@ -89,10 +91,11 @@ void POLYBENCH_ATAX::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSE
startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

RAJA::kernel_param<EXEC_POL1>(
RAJA::kernel_param_resource<EXEC_POL1>(
RAJA::make_tuple(RAJA::RangeSegment{0, N},
RAJA::RangeSegment{0, N}),
RAJA::tuple<Real_type>{0.0},
res,

[=] (Index_type i, Real_type &dot) {
POLYBENCH_ATAX_BODY1_RAJA;
Expand All @@ -106,10 +109,11 @@ void POLYBENCH_ATAX::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSE

);

RAJA::kernel_param<EXEC_POL2>(
RAJA::kernel_param_resource<EXEC_POL2>(
RAJA::make_tuple(RAJA::RangeSegment{0, N},
RAJA::RangeSegment{0, N}),
RAJA::tuple<Real_type>{0.0},
res,

[=] (Index_type j, Real_type &dot) {
POLYBENCH_ATAX_BODY4_RAJA;
Expand Down
13 changes: 9 additions & 4 deletions src/polybench/POLYBENCH_FDTD_2D-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ void POLYBENCH_FDTD_2D::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UN

} else if (vid == RAJA_OpenMPTarget) {

auto res{getOmpTargetResource()};

POLYBENCH_FDTD_2D_VIEWS_RAJA;

using EXEC_POL1 = RAJA::omp_target_parallel_for_exec<threads_per_team>;
Expand All @@ -93,30 +95,33 @@ void POLYBENCH_FDTD_2D::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UN

for (t = 0; t < tsteps; ++t) {

RAJA::forall<EXEC_POL1>( RAJA::RangeSegment(0, ny),
RAJA::forall<EXEC_POL1>( res, RAJA::RangeSegment(0, ny),
[=] (Index_type j) {
POLYBENCH_FDTD_2D_BODY1_RAJA;
});

RAJA::kernel<EXEC_POL234>(
RAJA::kernel_resource<EXEC_POL234>(
RAJA::make_tuple(RAJA::RangeSegment{1, nx},
RAJA::RangeSegment{0, ny}),
res,
[=] (Index_type i, Index_type j) {
POLYBENCH_FDTD_2D_BODY2_RAJA;
}
);

RAJA::kernel<EXEC_POL234>(
RAJA::kernel_resource<EXEC_POL234>(
RAJA::make_tuple(RAJA::RangeSegment{0, nx},
RAJA::RangeSegment{1, ny}),
res,
[=] (Index_type i, Index_type j) {
POLYBENCH_FDTD_2D_BODY3_RAJA;
}
);

RAJA::kernel<EXEC_POL234>(
RAJA::kernel_resource<EXEC_POL234>(
RAJA::make_tuple(RAJA::RangeSegment{0, nx-1},
RAJA::RangeSegment{0, ny-1}),
res,
[=] (Index_type i, Index_type j) {
POLYBENCH_FDTD_2D_BODY4_RAJA;
}
Expand Down
9 changes: 6 additions & 3 deletions src/polybench/POLYBENCH_FLOYD_WARSHALL-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ void POLYBENCH_FLOYD_WARSHALL::runOpenMPTargetVariant(VariantID vid, size_t RAJA

} else if ( vid == RAJA_OpenMPTarget ) {

auto res{getOmpTargetResource()};

POLYBENCH_FLOYD_WARSHALL_VIEWS_RAJA;

using EXEC_POL =
Expand All @@ -64,9 +66,10 @@ void POLYBENCH_FLOYD_WARSHALL::runOpenMPTargetVariant(VariantID vid, size_t RAJA
startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

RAJA::kernel<EXEC_POL>( RAJA::make_tuple(RAJA::RangeSegment{0, N},
RAJA::RangeSegment{0, N},
RAJA::RangeSegment{0, N}),
RAJA::kernel_resource<EXEC_POL>( RAJA::make_tuple(RAJA::RangeSegment{0, N},
RAJA::RangeSegment{0, N},
RAJA::RangeSegment{0, N}),
res,
[=] (Index_type k, Index_type i, Index_type j) {
POLYBENCH_FLOYD_WARSHALL_BODY_RAJA;
}
Expand Down
5 changes: 4 additions & 1 deletion src/polybench/POLYBENCH_GEMM-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ void POLYBENCH_GEMM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSE

} else if (vid == RAJA_OpenMPTarget) {

auto res{getOmpTargetResource()};

POLYBENCH_GEMM_VIEWS_RAJA;

using EXEC_POL =
Expand All @@ -68,12 +70,13 @@ void POLYBENCH_GEMM::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNUSE
startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

RAJA::kernel_param<EXEC_POL>(
RAJA::kernel_param_resource<EXEC_POL>(

RAJA::make_tuple( RAJA::RangeSegment{0, ni},
RAJA::RangeSegment{0, nj},
RAJA::RangeSegment{0, nk} ),
RAJA::tuple<Real_type>{0.0}, // variable for dot
res,

[=] (Real_type& dot) {
POLYBENCH_GEMM_BODY1_RAJA;
Expand Down
16 changes: 11 additions & 5 deletions src/polybench/POLYBENCH_GEMVER-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ void POLYBENCH_GEMVER::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNU

} else if ( vid == RAJA_OpenMPTarget ) {

auto res{getOmpTargetResource()};

POLYBENCH_GEMVER_VIEWS_RAJA;

using EXEC_POL1 =
Expand All @@ -102,17 +104,20 @@ void POLYBENCH_GEMVER::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNU
startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

RAJA::kernel<EXEC_POL1>( RAJA::make_tuple(RAJA::RangeSegment{0, n},
RAJA::RangeSegment{0, n}),
RAJA::kernel_resource<EXEC_POL1>(
RAJA::make_tuple(RAJA::RangeSegment{0, n},
RAJA::RangeSegment{0, n}),
res,
[=] (Index_type i, Index_type j) {
POLYBENCH_GEMVER_BODY1_RAJA;
}
);

RAJA::kernel_param<EXEC_POL24>(
RAJA::kernel_param_resource<EXEC_POL24>(
RAJA::make_tuple(RAJA::RangeSegment{0, n},
RAJA::RangeSegment{0, n}),
RAJA::tuple<Real_type>{0.0},
res,

[=] (Index_type /* i */, Real_type &dot) {
POLYBENCH_GEMVER_BODY2_RAJA;
Expand All @@ -125,16 +130,17 @@ void POLYBENCH_GEMVER::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UNU
}
);

RAJA::forall<EXEC_POL3> (RAJA::RangeSegment{0, n},
RAJA::forall<EXEC_POL3> (res, RAJA::RangeSegment{0, n},
[=] (Index_type i) {
POLYBENCH_GEMVER_BODY5_RAJA;
}
);

RAJA::kernel_param<EXEC_POL24>(
RAJA::kernel_param_resource<EXEC_POL24>(
RAJA::make_tuple(RAJA::RangeSegment{0, n},
RAJA::RangeSegment{0, n}),
RAJA::tuple<Real_type>{0.0},
res,

[=] (Index_type i, Real_type &dot) {
POLYBENCH_GEMVER_BODY6_RAJA;
Expand Down
5 changes: 4 additions & 1 deletion src/polybench/POLYBENCH_GESUMMV-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ void POLYBENCH_GESUMMV::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UN

} else if (vid == RAJA_OpenMPTarget) {

auto res{getOmpTargetResource()};

POLYBENCH_GESUMMV_VIEWS_RAJA;

using EXEC_POL =
Expand All @@ -68,11 +70,12 @@ void POLYBENCH_GESUMMV::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UN
startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

RAJA::kernel_param<EXEC_POL>(
RAJA::kernel_param_resource<EXEC_POL>(
RAJA::make_tuple( RAJA::RangeSegment{0, N},
RAJA::RangeSegment{0, N} ),
RAJA::make_tuple(static_cast<Real_type>(0.0),
static_cast<Real_type>(0.0)),
res,

[=] (Real_type& tmpdot,
Real_type& ydot) {
Expand Down
18 changes: 12 additions & 6 deletions src/polybench/POLYBENCH_HEAT_3D-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ void POLYBENCH_HEAT_3D::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UN

} else if (vid == RAJA_OpenMPTarget) {

auto res{getOmpTargetResource()};

POLYBENCH_HEAT_3D_VIEWS_RAJA;

using EXEC_POL =
Expand All @@ -76,17 +78,21 @@ void POLYBENCH_HEAT_3D::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_UN

for (Index_type t = 0; t < tsteps; ++t) {

RAJA::kernel<EXEC_POL>( RAJA::make_tuple(RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1}),
RAJA::kernel_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1}),
res,
[=] (Index_type i, Index_type j, Index_type k) {
POLYBENCH_HEAT_3D_BODY1_RAJA;
}
);

RAJA::kernel<EXEC_POL>( RAJA::make_tuple(RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1}),
RAJA::kernel_resource<EXEC_POL>(
RAJA::make_tuple(RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1},
RAJA::RangeSegment{1, N-1}),
res,
[=] (Index_type i, Index_type j, Index_type k) {
POLYBENCH_HEAT_3D_BODY2_RAJA;
}
Expand Down
6 changes: 4 additions & 2 deletions src/polybench/POLYBENCH_JACOBI_1D-OMPTarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,19 @@ void POLYBENCH_JACOBI_1D::runOpenMPTargetVariant(VariantID vid, size_t RAJAPERF_

} else if (vid == RAJA_OpenMPTarget ) {

auto res{getOmpTargetResource()};

startTimer();
for (RepIndex_type irep = 0; irep < run_reps; ++irep) {

for (Index_type t = 0; t < tsteps; ++t) {

RAJA::forall<RAJA::omp_target_parallel_for_exec<threads_per_team>> (
RAJA::forall<RAJA::omp_target_parallel_for_exec<threads_per_team>> ( res,
RAJA::RangeSegment{1, N-1}, [=] (Index_type i) {
POLYBENCH_JACOBI_1D_BODY1;
});

RAJA::forall<RAJA::omp_target_parallel_for_exec<threads_per_team>> (
RAJA::forall<RAJA::omp_target_parallel_for_exec<threads_per_team>> ( res,
RAJA::RangeSegment{1, N-1}, [=] (Index_type i) {
POLYBENCH_JACOBI_1D_BODY2;
});
Expand Down
Loading

0 comments on commit 4625664

Please sign in to comment.