Add freeDeviceBuffer GPU utility function
[alexxy/gromacs.git] / src / gromacs / gpu_utils / cudautils.cuh
index 5d985c81fce2214c2d32411f441f6194f815df0b..d74ecd4d8dea253fe7c4663428294a5890a396bc 100644 (file)
@@ -297,4 +297,19 @@ static inline bool haveStreamTasksCompleted(cudaStream_t s)
     return true;
 }
 
+/*! \brief Free a device-side buffer.
+ * TODO: fully replace cu_free_buffered with this.
+ *
+ * \param[in] buffer  Pointer to the buffer to free.
+ */
+template <typename DeviceBuffer>
+void freeDeviceBuffer(DeviceBuffer *buffer)
+{
+    GMX_ASSERT(buffer, "needs a buffer pointer");
+    if (*buffer)
+    {
+        GMX_RELEASE_ASSERT(cudaFree(*buffer) == cudaSuccess, "cudaFree failed");
+    }
+}
+
 #endif