+void StatePropagatorDataGpu::Impl::clearOnDevice(DeviceBuffer<RVec> d_data,
+ int dataSize,
+ AtomLocality atomLocality,
+ const DeviceStream& deviceStream)
+{
+ GMX_UNUSED_VALUE(dataSize);
+
+ GMX_ASSERT(atomLocality < AtomLocality::Count, "Wrong atom locality.");
+
+ GMX_ASSERT(dataSize >= 0, "Trying to clear to device buffer before it was allocated.");
+
+ GMX_ASSERT(deviceStream.isValid(), "No stream is valid for clearing with given atom locality.");
+
+ int atomsStartAt, numAtomsToClear;
+ std::tie(atomsStartAt, numAtomsToClear) = getAtomRangesFromAtomLocality(atomLocality);
+
+ if (numAtomsToClear != 0)
+ {
+ GMX_ASSERT(atomsStartAt + numAtomsToClear <= dataSize,
+ "The device allocation is smaller than requested clear range.");
+
+ clearDeviceBufferAsync(&d_data, atomsStartAt, numAtomsToClear, deviceStream);
+ }
+}
+