Skip to content
Snippets Groups Projects
Commit d9e2acfa authored by Georgiana Mania's avatar Georgiana Mania
Browse files

add Dmitry's solution

parent 0ca092d6
Branches release-0.5.1
Tags v0.5.1
1 merge request!3Master
......@@ -173,6 +173,38 @@ void scenario_4(double* array, int nblocks, int nlev, int nproma, bool print=tru
}
void scenario_4b(double* array, int nblocks, int nlev, int nproma, bool print = true) {
if (print)
std::cout << "scenario 4b (Dmitry's solution): view(array, nproma, nlev, nblocks); d_view(jc, jk, jb) ----- "
<< std::endl;
Kokkos::View<double***, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> view(array, nproma, nlev, nblocks);
using space_t = Kokkos::DefaultExecutionSpace::memory_space;
auto d_view_tmp = Kokkos::create_mirror_view_and_copy(space_t(), view);
Kokkos::View<double***, space_t> d_view("d_view", nproma, nlev, nblocks);
Kokkos::deep_copy(d_view_tmp, view);
Kokkos::deep_copy(d_view, d_view_tmp);
timer.reset();
for (int jb = 0; jb < nblocks; ++jb)
Kokkos::parallel_for(
"", Kokkos::RangePolicy<>(0, nproma), KOKKOS_LAMBDA(const int jc) {
for (int jk = 0; jk < nlev; ++jk) {
int p = jc * nlev * nblocks + jk * nblocks + jb;
d_view(jc, jk, jb) = p;
// printf("%f ", d_view(jb, jk, jc));
}
});
Kokkos::fence();
if (print) printf("Time = %f ms\n\n", timer.seconds() * 1000);
Kokkos::deep_copy(d_view_tmp, d_view);
Kokkos::deep_copy(view, d_view_tmp);
validate(array, nblocks, nlev, nproma);
}
#if defined(KOKKOS_ENABLE_CUDA) or defined(KOKKOS_ENABLE_HIP)
#define gpu 1
using Layout = Kokkos::LayoutLeft;
......@@ -346,6 +378,7 @@ int main() {
scenario_2b(array, nblocks, nlev, nproma);
scenario_3(array, nblocks, nlev, nproma);
scenario_4(array, nblocks, nlev, nproma);
scenario_4b(array, nblocks, nlev, nproma);
scenario_5(array, nblocks, nlev, nproma);
scenario_6(array, nblocks, nlev, nproma);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment