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

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


The following commit(s) were added to refs/heads/main by this push:
     new e473bb22db [MINOR] Cleanup buffer pool handling of new data objects
e473bb22db is described below

commit e473bb22db53fbe5b68c91c0a6240974bcd2553c
Author: Matthias Boehm <mboe...@gmail.com>
AuthorDate: Fri Apr 5 18:00:13 2024 +0200

    [MINOR] Cleanup buffer pool handling of new data objects
    
    The patch removes redundant compaction logic, which might cause
    multiple compactions to MCSR (before conversion to CSR during shallow
    serialize), and handling of all blocks in the buffer pool on writing
    a single larger than buffer pool object.
---
 .../controlprogram/caching/LazyWriteBuffer.java    | 50 ++--------------------
 1 file changed, 3 insertions(+), 47 deletions(-)

diff --git 
a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/LazyWriteBuffer.java
 
b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/LazyWriteBuffer.java
index 73c86f9edc..48fb8c81e8 100644
--- 
a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/LazyWriteBuffer.java
+++ 
b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/LazyWriteBuffer.java
@@ -27,10 +27,6 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sysds.api.DMLScript;
 import org.apache.sysds.hops.OptimizerUtils;
-import org.apache.sysds.runtime.data.SparseBlock.Type;
-import org.apache.sysds.runtime.data.SparseBlockFactory;
-import org.apache.sysds.runtime.data.SparseBlockMCSR;
-import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.util.LocalFileUtils;
 
 public class LazyWriteBuffer {
@@ -58,16 +54,11 @@ public class LazyWriteBuffer {
                throws IOException
        {
                //obtain basic meta data of cache block
+               //(size refers to potentially compact converted 
shallow-serialize
+               //representation if the current in-memory size does not yet 
qualify)
                long lSize = getCacheBlockSize(cb);
 
-               if(lSize > _limit){ // if this block goes above limit
-                       cb = compact(cb); // try to compact it
-                       lSize = getCacheBlockSize(cb); // and update to new 
size of block
-                       if(lSize > _limit){// if we are still above limit
-                               reAllocate(lSize); // try to compact all blocks 
in memory.
-                       }
-               }
-
+               //check if size is too large for entire buffer pool (bypass to 
file system)
                boolean requiresWrite = (lSize > _limit        //global buffer 
limit
                        || !ByteBuffer.isValidCapacity(lSize, cb)); //local 
buffer limit
                int numEvicted = 0;
@@ -107,41 +98,6 @@ public class LazyWriteBuffer {
                return numEvicted;
        }
 
-       private static CacheBlock<?> compact(CacheBlock<?> cb){
-               // compact this block 
-               if(cb instanceof MatrixBlock){
-                       MatrixBlock mb = (MatrixBlock) cb;
-
-                       // convert MCSR to CSR
-                       if(mb.isInSparseFormat() && mb.getSparseBlock() 
instanceof SparseBlockMCSR)
-                               
mb.setSparseBlock(SparseBlockFactory.copySparseBlock(Type.MCSR, 
mb.getSparseBlock(), false));
-               
-                       return mb;
-               }
-               else {
-                       return cb;
-               }
-       }
-
-       private static int reAllocate(long lSize) {
-               int numReAllocated = 0;
-               synchronized(_mQueue) {
-                       if(_size + lSize > _limit) {
-                               // compact all elements in buffer.
-                               for(Entry<String, ByteBuffer> elm : 
_mQueue.entrySet()) {
-                                       ByteBuffer bf = elm.getValue();
-                                       if(bf._cdata != null){ // not 
serialized to bytes.
-                                               long before = 
getCacheBlockSize(bf._cdata);
-                                               bf._cdata = compact(bf._cdata);
-                                               long after = 
getCacheBlockSize(bf._cdata);
-                                               _size -= before - after;
-                                       }
-                               }
-                       }
-               }
-               return numReAllocated;
-       }
-
        private static int evict(long lSize) throws IOException {
                int numEvicted = 0;
                while(_size + lSize > _limit && !_mQueue.isEmpty()) {

Reply via email to