This is an automated email from the ASF dual-hosted git repository.

markd pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git


The following commit(s) were added to refs/heads/master by this push:
     new 9e60173  [SYSTEMDS-2915] Fixing GPU memory leak due to untracked 
GPUObjects that were used after removal.
9e60173 is described below

commit 9e6017351abb2090219b1a9c7394ad199965cfdc
Author: Mark Dokter <[email protected]>
AuthorDate: Thu Mar 25 19:58:51 2021 +0100

    [SYSTEMDS-2915] Fixing GPU memory leak due to untracked GPUObjects that 
were used after removal.
---
 .../apache/sysds/runtime/controlprogram/caching/CacheableData.java    | 4 ++++
 .../sysds/runtime/instructions/gpu/context/GPUMemoryManager.java      | 1 +
 2 files changed, 5 insertions(+)

diff --git 
a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java
 
b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java
index cf6ab3f..fbe787b 100644
--- 
a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java
+++ 
b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java
@@ -437,6 +437,10 @@ public abstract class CacheableData<T extends CacheBlock> 
extends Data
                                throw new DMLRuntimeException("GPU : 
Inconsistent internal state - this CacheableData already has a GPUObject 
assigned to the current GPUContext (" + gCtx + ")");
        }
        
+       public synchronized void removeGPUObject(GPUContext gCtx) {
+               _gpuObjects.remove(gCtx);
+       }
+       
        // *********************************************
        // ***                                       ***
        // ***    HIGH-LEVEL METHODS THAT SPECIFY    ***
diff --git 
a/src/main/java/org/apache/sysds/runtime/instructions/gpu/context/GPUMemoryManager.java
 
b/src/main/java/org/apache/sysds/runtime/instructions/gpu/context/GPUMemoryManager.java
index 67c9a14..2510747 100644
--- 
a/src/main/java/org/apache/sysds/runtime/instructions/gpu/context/GPUMemoryManager.java
+++ 
b/src/main/java/org/apache/sysds/runtime/instructions/gpu/context/GPUMemoryManager.java
@@ -450,6 +450,7 @@ public class GPUMemoryManager {
                if(LOG.isDebugEnabled())
                        LOG.debug("Removing the GPU object: " + gpuObj);
                matrixMemoryManager.gpuObjects.remove(gpuObj);
+               gpuObj.mat.removeGPUObject(gpuObj.getGPUContext());
        }
 
        

Reply via email to