diff --git a/src/runner_doiact_grav.c b/src/runner_doiact_grav.c
index e0e040e38eb0d7551769f87df01eb646af21ac1e..f3b044f31bcb5e21f4c6afc397f843d32228dc8d 100644
--- a/src/runner_doiact_grav.c
+++ b/src/runner_doiact_grav.c
@@ -243,9 +243,9 @@ static INLINE void runner_dopair_grav_pp_full_no_cache(
       /* Update the M2P interaction counter and forces. */
       accumulate_add_ll(&gparts_i[i].num_interacted_m2p,
                         multi_j->m_pole.num_gpart);
-      gparts_i[i].a_grav_m2p[0] += f_x;
-      gparts_i[i].a_grav_m2p[1] += f_y;
-      gparts_i[i].a_grav_m2p[2] += f_z;
+      accumulate_add_f(&gparts_i[i].a_grav_m2p[0], f_x);
+      accumulate_add_f(&gparts_i[i].a_grav_m2p[1], f_y);
+      accumulate_add_f(&gparts_i[i].a_grav_m2p[2], f_z);
 #endif
 
     } else {
@@ -307,9 +307,9 @@ static INLINE void runner_dopair_grav_pp_full_no_cache(
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
         /* Update the p2p interaction counter */
         accumulate_inc_ll(&gparts_i[i].num_interacted_p2p);
-        gparts_i[i].a_grav_p2p[0] += a_x;
-        gparts_i[i].a_grav_p2p[1] += a_y;
-        gparts_i[i].a_grav_p2p[2] += a_z;
+        accumulate_add_f(&gparts_i[i].a_grav_p2p[0], a_x);
+        accumulate_add_f(&gparts_i[i].a_grav_p2p[1], a_y);
+        accumulate_add_f(&gparts_i[i].a_grav_p2p[2], a_z);
 #endif
       }
     }
@@ -436,9 +436,9 @@ static INLINE void runner_dopair_grav_pp_truncated_no_cache(
       /* Update the M2P interaction counter and forces. */
       accumulate_add_ll(&gparts_i[i].num_interacted_m2p,
                         multi_j->m_pole.num_gpart);
-      gparts_i[i].a_grav_m2p[0] += f_x;
-      gparts_i[i].a_grav_m2p[1] += f_y;
-      gparts_i[i].a_grav_m2p[2] += f_z;
+      accumulate_add_f(&gparts_i[i].a_grav_m2p[0], f_x);
+      accumulate_add_f(&gparts_i[i].a_grav_m2p[1], f_y);
+      accumulate_add_f(&gparts_i[i].a_grav_m2p[2], f_z);
 #endif
 
     } else {
@@ -505,9 +505,9 @@ static INLINE void runner_dopair_grav_pp_truncated_no_cache(
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
         /* Update the p2p interaction counter */
         accumulate_inc_ll(&gparts_i[i].num_interacted_p2p);
-        gparts_i[i].a_grav_p2p[0] += a_x;
-        gparts_i[i].a_grav_p2p[1] += a_y;
-        gparts_i[i].a_grav_p2p[2] += a_z;
+        accumulate_add_f(&gparts_i[i].a_grav_p2p[0], a_x);
+        accumulate_add_f(&gparts_i[i].a_grav_p2p[1], a_y);
+        accumulate_add_f(&gparts_i[i].a_grav_p2p[2], a_z);
 #endif
       }
     }
@@ -672,9 +672,9 @@ static INLINE void runner_dopair_grav_pp_full(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    gparts_i[pid].a_grav_p2p[0] += a_x;
-    gparts_i[pid].a_grav_p2p[1] += a_y;
-    gparts_i[pid].a_grav_p2p[2] += a_z;
+    accumulate_add_f(&gparts_i[pid].a_grav_p2p[0], a_x);
+    accumulate_add_f(&gparts_i[pid].a_grav_p2p[1], a_y);
+    accumulate_add_f(&gparts_i[pid].a_grav_p2p[2], a_z);
 #endif
   }
 }
@@ -828,9 +828,9 @@ static INLINE void runner_dopair_grav_pp_truncated(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    gparts_i[pid].a_grav_p2p[0] += a_x;
-    gparts_i[pid].a_grav_p2p[1] += a_y;
-    gparts_i[pid].a_grav_p2p[2] += a_z;
+    accumulate_add_f(&gparts_i[pid].a_grav_p2p[0], a_x);
+    accumulate_add_f(&gparts_i[pid].a_grav_p2p[1], a_y);
+    accumulate_add_f(&gparts_i[pid].a_grav_p2p[2], a_z);
 #endif
   }
 }
@@ -882,7 +882,8 @@ static INLINE void runner_dopair_grav_pm_full(
   const float multi_epsilon = multi_j->max_softening;
 
   /* Loop over all particles in ci... */
-#if !defined(SWIFT_DEBUG_CHECKS) && _OPENMP >= 201307
+#if !defined(SWIFT_DEBUG_CHECKS) && !defined(SWIFT_GRAVITY_FORCE_CHECKS) && \
+    _OPENMP >= 201307
 #pragma omp simd
 #endif
   for (int pid = 0; pid < gcount_padded_i; pid++) {
@@ -963,9 +964,9 @@ static INLINE void runner_dopair_grav_pm_full(
     if (pid < gcount_i) {
       accumulate_add_ll(&gparts_i[pid].num_interacted_m2p,
                         cj->grav.multipole->m_pole.num_gpart);
-      gparts_i[pid].a_grav_m2p[0] += f_x;
-      gparts_i[pid].a_grav_m2p[1] += f_y;
-      gparts_i[pid].a_grav_m2p[2] += f_z;
+      accumulate_add_f(&gparts_i[pid].a_grav_m2p[0], f_x);
+      accumulate_add_f(&gparts_i[pid].a_grav_m2p[1], f_y);
+      accumulate_add_f(&gparts_i[pid].a_grav_m2p[2], f_z);
     }
 #endif
   }
@@ -1025,7 +1026,8 @@ static INLINE void runner_dopair_grav_pm_truncated(
   const float multi_epsilon = multi_j->max_softening;
 
   /* Loop over all particles in ci... */
-#if !defined(SWIFT_DEBUG_CHECKS) && _OPENMP >= 201307
+#if !defined(SWIFT_DEBUG_CHECKS) && !defined(SWIFT_GRAVITY_FORCE_CHECKS) && \
+    _OPENMP >= 201307
 #pragma omp simd
 #endif
   for (int pid = 0; pid < gcount_padded_i; pid++) {
@@ -1104,9 +1106,9 @@ static INLINE void runner_dopair_grav_pm_truncated(
     if (pid < gcount_i) {
       accumulate_add_ll(&gparts_i[pid].num_interacted_m2p,
                         cj->grav.multipole->m_pole.num_gpart);
-      gparts_i[pid].a_grav_m2p[0] += f_x;
-      gparts_i[pid].a_grav_m2p[1] += f_y;
-      gparts_i[pid].a_grav_m2p[2] += f_z;
+      accumulate_add_f(&gparts_i[pid].a_grav_m2p[0], f_x);
+      accumulate_add_f(&gparts_i[pid].a_grav_m2p[1], f_y);
+      accumulate_add_f(&gparts_i[pid].a_grav_m2p[2], f_z);
     }
 #endif
   }
@@ -1535,9 +1537,9 @@ static INLINE void runner_doself_grav_pp_full(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    gparts[pid].a_grav_p2p[0] += a_x;
-    gparts[pid].a_grav_p2p[1] += a_y;
-    gparts[pid].a_grav_p2p[2] += a_z;
+    accumulate_add_f(&gparts[pid].a_grav_p2p[0], a_x);
+    accumulate_add_f(&gparts[pid].a_grav_p2p[1], a_y);
+    accumulate_add_f(&gparts[pid].a_grav_p2p[2], a_z);
 #endif
   }
 }
@@ -1674,9 +1676,9 @@ static INLINE void runner_doself_grav_pp_truncated(
     ci_cache->pot[pid] += pot;
 
 #ifdef SWIFT_GRAVITY_FORCE_CHECKS
-    gparts[pid].a_grav_p2p[0] += a_x;
-    gparts[pid].a_grav_p2p[1] += a_y;
-    gparts[pid].a_grav_p2p[2] += a_z;
+    accumulate_add_f(&gparts[pid].a_grav_p2p[0], a_x);
+    accumulate_add_f(&gparts[pid].a_grav_p2p[1], a_y);
+    accumulate_add_f(&gparts[pid].a_grav_p2p[2], a_z);
 #endif
   }
 }