Add keyed BSSN CUDA resident banks
This commit is contained in:
@@ -273,6 +273,12 @@ bool bssn_cuda_use_resident_sync(int lev)
|
||||
|
||||
bool bssn_cuda_keep_resident_after_step(int lev, int trfls_in, int analysis_lev)
|
||||
{
|
||||
static int keep_all_levels = -1;
|
||||
if (keep_all_levels < 0)
|
||||
{
|
||||
const char *env = getenv("AMSS_CUDA_KEEP_ALL_LEVELS");
|
||||
keep_all_levels = (env && atoi(env) != 0) ? 1 : 0;
|
||||
}
|
||||
static int enabled = -1;
|
||||
if (enabled < 0)
|
||||
{
|
||||
@@ -281,11 +287,12 @@ bool bssn_cuda_keep_resident_after_step(int lev, int trfls_in, int analysis_lev)
|
||||
}
|
||||
if (!enabled)
|
||||
return false;
|
||||
// Levels at and above trfls can be read by CPU time interpolation through
|
||||
// State/Old/corrector lists. Keep those conservative until multi-time-level
|
||||
// resident storage is implemented.
|
||||
if (lev == analysis_lev)
|
||||
return false;
|
||||
if (keep_all_levels)
|
||||
return true;
|
||||
// Conservative default: high time-refinement levels still have scattered
|
||||
// CPU consumers outside the RK4/AMR exchange path.
|
||||
return lev < trfls_in;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user