Repository: incubator-systemml Updated Branches: refs/heads/master 115d90639 -> 61b365820
[SYSTEMML-1196] Fix bufferpool robustness (flag visibility) Our bufferpool serializes matrices and frames outside a synchronized region in order to keep the serial fraction as small as possible. Since one thread blocks until another thread updates a certain flag, we now ensure - via volatile - that these updates are always visible. Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/61b36582 Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/61b36582 Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/61b36582 Branch: refs/heads/master Commit: 61b36582002e44ddc2c6555e1c393eabb942cc24 Parents: 115d906 Author: Matthias Boehm <[email protected]> Authored: Wed Jan 25 16:18:22 2017 +0100 Committer: Matthias Boehm <[email protected]> Committed: Wed Jan 25 16:18:38 2017 +0100 ---------------------------------------------------------------------- .../sysml/runtime/controlprogram/caching/ByteBuffer.java | 8 ++++---- .../runtime/controlprogram/caching/LazyWriteBuffer.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/61b36582/src/main/java/org/apache/sysml/runtime/controlprogram/caching/ByteBuffer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/ByteBuffer.java b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/ByteBuffer.java index a24dff3..807fdc4 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/ByteBuffer.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/ByteBuffer.java @@ -36,10 +36,10 @@ import org.apache.sysml.runtime.util.LocalFileUtils; */ public class ByteBuffer { - private boolean _serialized; - private boolean _shallow; - private boolean _matrix; - private long _size; + private volatile boolean _serialized; + private volatile boolean _shallow; + private volatile boolean _matrix; + private final long _size; protected byte[] _bdata = null; //sparse matrix protected CacheBlock _cdata = null; //dense matrix/frame http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/61b36582/src/main/java/org/apache/sysml/runtime/controlprogram/caching/LazyWriteBuffer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/LazyWriteBuffer.java b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/LazyWriteBuffer.java index 3447727..a230d7b 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/caching/LazyWriteBuffer.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/caching/LazyWriteBuffer.java @@ -38,7 +38,7 @@ public class LazyWriteBuffer } //global size limit in bytes - private static long _limit; + private static final long _limit; //current size in bytes private static long _size;
