From 38532753f40a28b98d648e0896138f9fab9c3cf9 Mon Sep 17 00:00:00 2001 From: Christoph Lehner Date: Sun, 3 May 2020 08:58:32 -0400 Subject: [PATCH] interface cleanup --- Grid/lattice/Lattice_base.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Grid/lattice/Lattice_base.h b/Grid/lattice/Lattice_base.h index 271ab43e..1e8b4152 100644 --- a/Grid/lattice/Lattice_base.h +++ b/Grid/lattice/Lattice_base.h @@ -50,6 +50,14 @@ void accelerator_inline conformable(GridBase *lhs,GridBase *rhs) assert(lhs == rhs); } +//////////////////////////////////////////////////////////////////////////// +// Advise for memory management +//////////////////////////////////////////////////////////////////////////// +enum LatticeAcceleratorAdvise { + AdviseInfrequentUse = 0x1 // Advise that the data is used infrequently. This can + // significantly influence performance of bulk storage. +}; + //////////////////////////////////////////////////////////////////////////// // Minimal base class containing only data valid to access from accelerator // _odata will be a managed pointer in CUDA @@ -77,12 +85,12 @@ public: else grid = _grid; }; - // Advise that the data is used infrequently. This can - // significantly influence performance of bulk storage. - accelerator_inline void AdviseInfrequentUse() { + accelerator_inline void Advise(int advise) { #ifdef GRID_NVCC #ifndef __CUDA_ARCH__ // only on host - cudaMemAdvise(_odata,_odata_size*sizeof(vobj),cudaMemAdviseSetPreferredLocation,cudaCpuDeviceId); + if (advise & AdviseInfrequentUse) { + cudaMemAdvise(_odata,_odata_size*sizeof(vobj),cudaMemAdviseSetPreferredLocation,cudaCpuDeviceId); + } #endif #endif };