diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2009-09-03 16:19:15 -0500 |
---|---|---|
committer | Barry Wardell <barry.wardell@gmail.com> | 2011-12-14 16:42:31 +0000 |
commit | 11c4d98017cbb86d08e15fd1b549180184b58a26 (patch) | |
tree | 2546a154c6f7bc0bec87de7316125ae7d1453569 /Carpet/CarpetSlab | |
parent | f520477b1c14e02f1495cfa8d3e09f4e21ab34d0 (diff) |
Import Carpet
Ignore-this: 309b4dd613f4af2b84aa5d6743fdb6b3
Diffstat (limited to 'Carpet/CarpetSlab')
-rw-r--r-- | Carpet/CarpetSlab/README | 6 | ||||
-rw-r--r-- | Carpet/CarpetSlab/src/GetHyperslab.cc | 14 | ||||
-rw-r--r-- | Carpet/CarpetSlab/src/slab.cc | 14 |
3 files changed, 18 insertions, 16 deletions
diff --git a/Carpet/CarpetSlab/README b/Carpet/CarpetSlab/README index 04ae8cd8c..983f62701 100644 --- a/Carpet/CarpetSlab/README +++ b/Carpet/CarpetSlab/README @@ -1,7 +1,9 @@ Cactus Code Thorn CarpetSlab -Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +Author(s) : Erik Schnetter <schnetter@cct.lsu.edu> +Maintainer(s): Erik Schnetter <schnetter@cct.lsu.edu> +Licence : GPLv2+ -------------------------------------------------------------------------- -Purpose of the thorn: +1. Purpose This thorn provides hyperslabbing for Carpet. diff --git a/Carpet/CarpetSlab/src/GetHyperslab.cc b/Carpet/CarpetSlab/src/GetHyperslab.cc index 9a4e07117..8f86d8568 100644 --- a/Carpet/CarpetSlab/src/GetHyperslab.cc +++ b/Carpet/CarpetSlab/src/GetHyperslab.cc @@ -196,7 +196,8 @@ namespace CarpetSlab { ++ext_iter) { // Copy data - alldata->copy_from (state, mydata, *ext_iter); + int const proc = myhh->processor(reflevel, component); + alldata->copy_from (state, mydata, *ext_iter, collect_proc, proc); } @@ -207,26 +208,25 @@ namespace CarpetSlab { // Copy result to all processors if (dest_proc == -1) { vector<gdata*> tmpdata(CCTK_nProcs(cgh)); - vector<comm_state> state; for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { if (proc != collect_proc) { void* myhdata = rank==proc ? hdata : 0; tmpdata.at(proc) = mydata->make_typed (-1, error_centered, op_sync); tmpdata.at(proc)->allocate (alldata->extent(), proc, myhdata); - tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); } } - for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { - if (proc != collect_proc) { - tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + for (comm_state state; not state.done(); state.step()) { + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + tmpdata.at(proc)->copy_from (state, alldata, alldata->extent(), proc, collect_proc); + } } } for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { if (proc != collect_proc) { - tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); delete tmpdata.at(proc); } } diff --git a/Carpet/CarpetSlab/src/slab.cc b/Carpet/CarpetSlab/src/slab.cc index ba88e16a6..b20566d47 100644 --- a/Carpet/CarpetSlab/src/slab.cc +++ b/Carpet/CarpetSlab/src/slab.cc @@ -228,7 +228,8 @@ namespace CarpetSlab { ++ext_iter) { // Copy data - alldata->copy_from (state, mydata, *ext_iter); + int const proc = myhh->processor(reflevel, component); + alldata->copy_from (state, mydata, *ext_iter, collect_proc, proc); } @@ -239,26 +240,25 @@ namespace CarpetSlab { // Copy result to all processors if (dest_proc == -1) { vector<gdata*> tmpdata(CCTK_nProcs(cgh)); - vector<comm_state> state; for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { if (proc != collect_proc) { void* myhdata = rank==proc ? hdata : 0; tmpdata.at(proc) = mydata->make_typed (-1, error_centered, op_sync); tmpdata.at(proc)->allocate (alldata->extent(), proc, myhdata); - tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); } } - for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { - if (proc != collect_proc) { - tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + for (comm_state state; not state.done(); state.step()) { + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + tmpdata.at(proc)->copy_from (state, alldata, alldata->extent(), proc, collect_proc); + } } } for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { if (proc != collect_proc) { - tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); delete tmpdata.at(proc); } } |