From 61a67a6e811a838902b8a760a3084bf6de02a5a0 Mon Sep 17 00:00:00 2001 From: Tom Stitt Date: Fri, 21 Nov 2025 14:55:48 -0800 Subject: [PATCH 1/2] only hypre_SyncDevice if the exec policy is device --- src/sstruct_mv/sstruct_matrix.c | 7 ++++++- src/sstruct_mv/sstruct_vector.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/sstruct_mv/sstruct_matrix.c b/src/sstruct_mv/sstruct_matrix.c index 91cf480eec..ed93359190 100644 --- a/src/sstruct_mv/sstruct_matrix.c +++ b/src/sstruct_mv/sstruct_matrix.c @@ -441,7 +441,12 @@ hypre_SStructPMatrixSetBoxValues( hypre_SStructPMatrix *pmatrix, /* TODO: Why need DeviceSync? */ #if defined(HYPRE_USING_GPU) - hypre_SyncDevice(); + HYPRE_MemoryLocation loc; + HYPRE_GetMemoryLocation(&loc); + if (loc == HYPRE_EXEC_DEVICE) + { + hypre_SyncDevice(); + } #endif /* set (AddTo/Get) or clear (Set) values outside the grid in ghost zones */ diff --git a/src/sstruct_mv/sstruct_vector.c b/src/sstruct_mv/sstruct_vector.c index 3a16f7ca17..e91febb71d 100644 --- a/src/sstruct_mv/sstruct_vector.c +++ b/src/sstruct_mv/sstruct_vector.c @@ -247,7 +247,12 @@ hypre_SStructPVectorSetBoxValues( hypre_SStructPVector *pvector, /* TODO: Why need DeviceSync? */ #if defined(HYPRE_USING_GPU) - hypre_SyncDevice(); + HYPRE_MemoryLocation loc; + HYPRE_GetMemoryLocation(&loc); + if (loc == HYPRE_EXEC_DEVICE) + { + hypre_SyncDevice(); + } #endif /* set (AddTo/Get) or clear (Set) values outside the grid in ghost zones */ From 975233f7234779d0f9c65251a545f11d388518dd Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" Date: Fri, 21 Nov 2025 23:03:04 -0500 Subject: [PATCH 2/2] Make use of GetExecPolicy --- src/sstruct_mv/sstruct_matrix.c | 4 +--- src/sstruct_mv/sstruct_vector.c | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/sstruct_mv/sstruct_matrix.c b/src/sstruct_mv/sstruct_matrix.c index ed93359190..f25674b6d2 100644 --- a/src/sstruct_mv/sstruct_matrix.c +++ b/src/sstruct_mv/sstruct_matrix.c @@ -441,9 +441,7 @@ hypre_SStructPMatrixSetBoxValues( hypre_SStructPMatrix *pmatrix, /* TODO: Why need DeviceSync? */ #if defined(HYPRE_USING_GPU) - HYPRE_MemoryLocation loc; - HYPRE_GetMemoryLocation(&loc); - if (loc == HYPRE_EXEC_DEVICE) + if (hypre_GetExecPolicy1(hypre_StructMatrixMemoryLocation(smatrix)) == HYPRE_EXEC_DEVICE) { hypre_SyncDevice(); } diff --git a/src/sstruct_mv/sstruct_vector.c b/src/sstruct_mv/sstruct_vector.c index e91febb71d..5a68c64c1c 100644 --- a/src/sstruct_mv/sstruct_vector.c +++ b/src/sstruct_mv/sstruct_vector.c @@ -247,9 +247,7 @@ hypre_SStructPVectorSetBoxValues( hypre_SStructPVector *pvector, /* TODO: Why need DeviceSync? */ #if defined(HYPRE_USING_GPU) - HYPRE_MemoryLocation loc; - HYPRE_GetMemoryLocation(&loc); - if (loc == HYPRE_EXEC_DEVICE) + if (hypre_GetExecPolicy1(hypre_StructVectorMemoryLocation(svector)) == HYPRE_EXEC_DEVICE) { hypre_SyncDevice(); }