You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by ni...@apache.org on 2019/03/05 20:56:14 UTC
[systemml] branch master updated: [SYSTEMML-1325] Fixed GPU cleanup
bug when invoked with JMLC.
This is an automated email from the ASF dual-hosted git repository.
niketanpansare pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemml.git
The following commit(s) were added to refs/heads/master by this push:
new adfa1f9 [SYSTEMML-1325] Fixed GPU cleanup bug when invoked with JMLC.
adfa1f9 is described below
commit adfa1f962f1155620eedfa48d4f0cbf21e2f6af6
Author: Niketan Pansare <np...@us.ibm.com>
AuthorDate: Tue Mar 5 12:55:30 2019 -0800
[SYSTEMML-1325] Fixed GPU cleanup bug when invoked with JMLC.
Closes #854.
---
.../sysml/runtime/controlprogram/caching/CacheableData.java | 12 ++++++++----
.../runtime/controlprogram/context/ExecutionContext.java | 6 +++++-
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java
index 1d40d72..f0a44f7 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/CacheableData.java
@@ -624,15 +624,19 @@ public abstract class CacheableData<T extends CacheBlock> extends Data
_rddHandle.setBackReference(null);
if( _bcHandle != null )
_bcHandle.setBackReference(null);
+ clearGPUData();
+
+ // change object state EMPTY
+ setDirty(false);
+ setEmpty();
+ }
+
+ public void clearGPUData() {
if( _gpuObjects != null ) {
for (GPUObject gObj : _gpuObjects.values())
if (gObj != null)
gObj.clearData(null, gObj.getGPUContext().EAGER_CUDA_FREE);
}
-
- // change object state EMPTY
- setDirty(false);
- setEmpty();
}
public synchronized void exportData() {
diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/context/ExecutionContext.java b/src/main/java/org/apache/sysml/runtime/controlprogram/context/ExecutionContext.java
index 3e8636b..523396b 100644
--- a/src/main/java/org/apache/sysml/runtime/controlprogram/context/ExecutionContext.java
+++ b/src/main/java/org/apache/sysml/runtime/controlprogram/context/ExecutionContext.java
@@ -648,8 +648,12 @@ public class ExecutionContext {
Statistics.removeCPMemObject(System.identityHashCode(mo));
//early abort w/o scan of symbol table if no cleanup required
boolean fileExists = (mo.isHDFSFileExists() && mo.getFileName() != null);
- if( !CacheableData.isCachingActive() && !fileExists )
+ if( !CacheableData.isCachingActive() && !fileExists ) {
+ if ( mo.isCleanupEnabled() && !getVariables().hasReferences(mo) )
+ mo.clearGPUData();
return;
+ }
+
try {
//compute ref count only if matrix cleanup actually necessary