[arrayfire] 41/75: Adding function to check if memory usage is approaching the limits

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Mon Feb 29 08:01:14 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch dfsg-clean
in repository arrayfire.

commit e4facbb73c5c06095514d177e75adff467c7111e
Author: Pavan Yalamanchili <pavan at arrayfire.com>
Date:   Sun Feb 21 22:21:27 2016 -0500

    Adding function to check if memory usage is approaching the limits
---
 src/backend/MemoryManager.cpp | 9 +++++++--
 src/backend/MemoryManager.hpp | 2 ++
 src/backend/cpu/memory.cpp    | 5 +++++
 src/backend/cpu/memory.hpp    | 1 +
 src/backend/cuda/memory.cpp   | 5 +++++
 src/backend/cuda/memory.hpp   | 2 ++
 src/backend/opencl/memory.cpp | 5 +++++
 src/backend/opencl/memory.hpp | 1 +
 8 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/backend/MemoryManager.cpp b/src/backend/MemoryManager.cpp
index b66dfc3..0879e98 100644
--- a/src/backend/MemoryManager.cpp
+++ b/src/backend/MemoryManager.cpp
@@ -153,8 +153,7 @@ void *MemoryManager::alloc(const size_t bytes, bool user_lock)
 
             // FIXME: Add better checks for garbage collection
             // Perhaps look at total memory available as a metric
-            if (current.lock_bytes >= current.max_bytes ||
-                current.total_buffers >= this->max_buffers) {
+            if (this->checkMemoryLimit()) {
                 this->garbageCollect();
             }
 
@@ -305,4 +304,10 @@ unsigned MemoryManager::getMaxBuffers()
     return this->max_buffers;
 }
 
+bool MemoryManager::checkMemoryLimit()
+{
+    memory_info& current = this->getCurrentMemoryInfo();
+    return current.lock_bytes >= current.max_bytes || current.total_buffers >= this->max_buffers;
+}
+
 }
diff --git a/src/backend/MemoryManager.hpp b/src/backend/MemoryManager.hpp
index 015fa6d..0db70b5 100644
--- a/src/backend/MemoryManager.hpp
+++ b/src/backend/MemoryManager.hpp
@@ -111,6 +111,8 @@ public:
     {
     }
 
+    bool checkMemoryLimit();
+
 protected:
     mutex_t memory_mutex;
 
diff --git a/src/backend/cpu/memory.cpp b/src/backend/cpu/memory.cpp
index 016428a..8837e27 100644
--- a/src/backend/cpu/memory.cpp
+++ b/src/backend/cpu/memory.cpp
@@ -160,6 +160,11 @@ void pinnedFree(T* ptr)
     return getMemoryManager().unlock((void *)ptr, false);
 }
 
+bool checkMemoryLimit()
+{
+    return getMemoryManager().checkMemoryLimit();
+}
+
 #define INSTANTIATE(T)                                      \
     template T* memAlloc(const size_t &elements);           \
     template void memFree(T* ptr);                          \
diff --git a/src/backend/cpu/memory.hpp b/src/backend/cpu/memory.hpp
index 80ee86d..91116fb 100644
--- a/src/backend/cpu/memory.hpp
+++ b/src/backend/cpu/memory.hpp
@@ -39,4 +39,5 @@ namespace cpu
 
     void setMemStepSize(size_t step_bytes);
     size_t getMemStepSize(void);
+    bool checkMemoryLimit();
 }
diff --git a/src/backend/cuda/memory.cpp b/src/backend/cuda/memory.cpp
index ff62661..51eb507 100644
--- a/src/backend/cuda/memory.cpp
+++ b/src/backend/cuda/memory.cpp
@@ -229,6 +229,11 @@ void pinnedFree(T* ptr)
     return getMemoryManagerPinned().unlock((void *)ptr, false);
 }
 
+bool checkMemoryLimit()
+{
+    return getMemoryManager().checkMemoryLimit();
+}
+
 #define INSTANTIATE(T)                                      \
     template T* memAlloc(const size_t &elements);           \
     template void memFree(T* ptr);                          \
diff --git a/src/backend/cuda/memory.hpp b/src/backend/cuda/memory.hpp
index 9bf69df..80478c1 100644
--- a/src/backend/cuda/memory.hpp
+++ b/src/backend/cuda/memory.hpp
@@ -39,4 +39,6 @@ namespace cuda
 
     void setMemStepSize(size_t step_bytes);
     size_t getMemStepSize(void);
+
+    bool checkMemoryLimit();
 }
diff --git a/src/backend/opencl/memory.cpp b/src/backend/opencl/memory.cpp
index 756d187..5df64d6 100644
--- a/src/backend/opencl/memory.cpp
+++ b/src/backend/opencl/memory.cpp
@@ -259,6 +259,11 @@ void pinnedFree(T* ptr)
     return getMemoryManagerPinned().unlock((void *)ptr, false);
 }
 
+bool checkMemoryLimit()
+{
+    return getMemoryManager().checkMemoryLimit();
+}
+
 #define INSTANTIATE(T)                                      \
     template T* memAlloc(const size_t &elements);           \
     template void memFree(T* ptr);                          \
diff --git a/src/backend/opencl/memory.hpp b/src/backend/opencl/memory.hpp
index f4d06a3..a02d387 100644
--- a/src/backend/opencl/memory.hpp
+++ b/src/backend/opencl/memory.hpp
@@ -44,4 +44,5 @@ namespace opencl
 
     void setMemStepSize(size_t step_bytes);
     size_t getMemStepSize(void);
+    bool checkMemoryLimit();
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git



More information about the debian-science-commits mailing list