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 b50885f4a8 [MINOR] Cleanup sparse block API (estimate size) and 
warnings
b50885f4a8 is described below

commit b50885f4a8afc8c095ee4d87faddc2689117b7c2
Author: Matthias Boehm <[email protected]>
AuthorDate: Sat Jul 27 09:46:44 2024 +0200

    [MINOR] Cleanup sparse block API (estimate size) and warnings
---
 .../org/apache/sysds/runtime/data/SparseBlock.java |  6 +++
 .../apache/sysds/runtime/data/SparseBlockCOO.java  |  5 +--
 .../apache/sysds/runtime/data/SparseBlockCSR.java  |  5 +--
 .../apache/sysds/runtime/data/SparseBlockDCSR.java |  5 +--
 .../apache/sysds/runtime/data/SparseBlockMCSC.java |  6 +--
 .../apache/sysds/runtime/data/SparseBlockMCSR.java |  5 +--
 .../java/org/apache/sysds/utils/Statistics.java    |  4 +-
 .../org/apache/sysds/utils/stats/NGramBuilder.java |  1 +
 .../sysds/performance/matrix/MatrixStorage.java    | 50 ++++++----------------
 .../test/applications/ApplyTransformTest.java      |  5 ---
 10 files changed, 29 insertions(+), 63 deletions(-)

diff --git a/src/main/java/org/apache/sysds/runtime/data/SparseBlock.java 
b/src/main/java/org/apache/sysds/runtime/data/SparseBlock.java
index ebe9e7bf04..648f42b690 100644
--- a/src/main/java/org/apache/sysds/runtime/data/SparseBlock.java
+++ b/src/main/java/org/apache/sysds/runtime/data/SparseBlock.java
@@ -274,6 +274,12 @@ public abstract class SparseBlock implements Serializable, 
Block
 
        public abstract boolean checkValidity(int rlen, int clen, long nnz, 
boolean strict);
 
+       /**
+        * Computes the exact size in memory of the materialized block
+        * @return the exact size in memory
+        */
+       public abstract long getExactSizeInMemory();
+       
        ////////////////////////
        //obtain indexes/values/positions
        
diff --git a/src/main/java/org/apache/sysds/runtime/data/SparseBlockCOO.java 
b/src/main/java/org/apache/sysds/runtime/data/SparseBlockCOO.java
index d83a9263dc..c4e60c10cf 100644
--- a/src/main/java/org/apache/sysds/runtime/data/SparseBlockCOO.java
+++ b/src/main/java/org/apache/sysds/runtime/data/SparseBlockCOO.java
@@ -158,10 +158,7 @@ public class SparseBlockCOO extends SparseBlock
                return (long) Math.min(size, Long.MAX_VALUE);
        }
 
-       /**
-        * Computes the exact size in memory of the materialized block
-        * @return the exact size in memory
-        */
+       @Override
        public long getExactSizeInMemory() {
                //32B overhead per array, int/int/double arr in nnz
                double size = 16 + 8;   //object + 2 int fields
diff --git a/src/main/java/org/apache/sysds/runtime/data/SparseBlockCSR.java 
b/src/main/java/org/apache/sysds/runtime/data/SparseBlockCSR.java
index 68cc6c8f86..cfa1258d37 100644
--- a/src/main/java/org/apache/sysds/runtime/data/SparseBlockCSR.java
+++ b/src/main/java/org/apache/sysds/runtime/data/SparseBlockCSR.java
@@ -285,10 +285,7 @@ public class SparseBlockCSR extends SparseBlock
                return (long) Math.min(size, Long.MAX_VALUE);
        }
 
-       /**
-        * Computes the exact size in memory of the materialized block
-        * @return the exact size in memory
-        */
+       @Override
        public long getExactSizeInMemory() {
                //32B overhead per array, int arr in nrows, int/double arr in 
nnz
                double size = 16 + 4 + 4;                                
//object + int field + padding
diff --git a/src/main/java/org/apache/sysds/runtime/data/SparseBlockDCSR.java 
b/src/main/java/org/apache/sysds/runtime/data/SparseBlockDCSR.java
index 3029370d63..b369992efa 100644
--- a/src/main/java/org/apache/sysds/runtime/data/SparseBlockDCSR.java
+++ b/src/main/java/org/apache/sysds/runtime/data/SparseBlockDCSR.java
@@ -175,10 +175,7 @@ public class SparseBlockDCSR extends SparseBlock
                return (long) Math.min(size, Long.MAX_VALUE);
        }
 
-       /**
-        * Computes the exact size in memory of the materialized block
-        * @return the exact size in memory
-        */
+       @Override
        public long getExactSizeInMemory() {
                double size = 16;
                size += 4 + 4 + 4 + 4;
diff --git a/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSC.java 
b/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSC.java
index 7a12d3e7aa..fd0b3906bc 100644
--- a/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSC.java
+++ b/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSC.java
@@ -211,11 +211,7 @@ public class SparseBlockMCSC extends SparseBlock {
                return (long) Math.min(size, Long.MAX_VALUE);
        }
 
-       /**
-        * Computes the exact size in memory of the materialized block
-        *
-        * @return the exact size in memory
-        */
+       @Override
        public long getExactSizeInMemory() {
                double size = 16; //object
                size += MemoryEstimates.objectArrayCost(_columns.length); 
//references
diff --git a/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSR.java 
b/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSR.java
index d232a0041a..f94b6bf7f4 100644
--- a/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSR.java
+++ b/src/main/java/org/apache/sysds/runtime/data/SparseBlockMCSR.java
@@ -136,10 +136,7 @@ public class SparseBlockMCSR extends SparseBlock
                return (long) Math.min(size, Long.MAX_VALUE);
        }
 
-       /**
-        * Computes the exact size in memory of the materialized block
-        * @return the exact size in memory
-        */
+       @Override
        public long getExactSizeInMemory() {
                double size = 16; //object
                size += MemoryEstimates.objectArrayCost(_rows.length); 
//references
diff --git a/src/main/java/org/apache/sysds/utils/Statistics.java 
b/src/main/java/org/apache/sysds/utils/Statistics.java
index a7c764cf78..3ad613c842 100644
--- a/src/main/java/org/apache/sysds/utils/Statistics.java
+++ b/src/main/java/org/apache/sysds/utils/Statistics.java
@@ -401,6 +401,7 @@ public class Statistics
                tmp.count.increment();
        }
 
+       @SuppressWarnings("unchecked")
        public static void maintainNGrams(String instName, long timeNanos) {
                NGramBuilder<String, NGramStats>[] tmp = 
_instStatsNGram.computeIfAbsent(Thread.currentThread().getName(), k -> {
                        NGramBuilder<String, NGramStats>[] threadEntry = new 
NGramBuilder[DMLScript.STATISTICS_NGRAM_SIZES.length];
@@ -414,6 +415,7 @@ public class Statistics
                        tmp[i].append(instName, new NGramStats(1, timeNanos, 
0));
        }
 
+       @SuppressWarnings("unchecked")
        public static NGramBuilder<String, NGramStats>[] mergeNGrams() {
                NGramBuilder<String, NGramStats>[] builders = new 
NGramBuilder[DMLScript.STATISTICS_NGRAM_SIZES.length];
 
@@ -545,7 +547,7 @@ public class Statistics
 
                        //long timeNs = tmp[len - 1 - 
i].getValue().time.longValue();
                        double timeS = topNGrams[i].getCumStats().cumTimeNanos 
/ 1000000000d;
-                       double timeVar = 
topNGrams[i].getCumStats().getTimeVariance();
+                       //double timeVar = 
topNGrams[i].getCumStats().getTimeVariance();
                        String timeSString = sFormat.format(timeS);
                        String timeVarString = 
getNGramStdDevs(topNGrams[i].getStats(), topNGrams[i].getOffset(), 3, 
false);//sFormat.format(timeVar);
 
diff --git a/src/main/java/org/apache/sysds/utils/stats/NGramBuilder.java 
b/src/main/java/org/apache/sysds/utils/stats/NGramBuilder.java
index 7554fdcd67..e0212e5c73 100644
--- a/src/main/java/org/apache/sysds/utils/stats/NGramBuilder.java
+++ b/src/main/java/org/apache/sysds/utils/stats/NGramBuilder.java
@@ -115,6 +115,7 @@ public class NGramBuilder<T, U> {
                        return this;
                }
 
+               @SuppressWarnings("unused")
                private NGramEntry<T, U> add(NGramEntry<T, U> entry) {
                        return add(entry.occurrences);
                }
diff --git 
a/src/test/java/org/apache/sysds/performance/matrix/MatrixStorage.java 
b/src/test/java/org/apache/sysds/performance/matrix/MatrixStorage.java
index 1a911fed7b..c23b157799 100644
--- a/src/test/java/org/apache/sysds/performance/matrix/MatrixStorage.java
+++ b/src/test/java/org/apache/sysds/performance/matrix/MatrixStorage.java
@@ -21,10 +21,7 @@ package org.apache.sysds.performance.matrix;
 
 import org.apache.sysds.runtime.data.DenseBlockFP64;
 import org.apache.sysds.runtime.data.SparseBlock;
-import org.apache.sysds.runtime.data.SparseBlockCOO;
-import org.apache.sysds.runtime.data.SparseBlockCSR;
-import org.apache.sysds.runtime.data.SparseBlockDCSR;
-import org.apache.sysds.runtime.data.SparseBlockMCSR;
+import org.apache.sysds.runtime.data.SparseBlockFactory;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.util.DataConverter;
 import org.apache.sysds.test.TestUtils;
@@ -183,37 +180,18 @@ public class MatrixStorage {
        }
 
        private long evaluateMemoryConsumption(SparseBlock.Type btype, double 
sparsity, int rl, int cl) {
-               try
-               {
-                       if (btype == null)
-                               return Math.min(Long.MAX_VALUE, (long) 
DenseBlockFP64.estimateMemory(rl, cl));
-
-                       double[][] A = TestUtils.generateTestMatrix(rl, cl, 
-10, 10, sparsity, 7654321);
-
-                       MatrixBlock mbtmp = 
DataConverter.convertToMatrixBlock(A);
-
-                       if (!mbtmp.isInSparseFormat())
-                               mbtmp.denseToSparse(true);
-
-                       SparseBlock srtmp = mbtmp.getSparseBlock();
-                       switch (btype) {
-                               case MCSR:
-                                       SparseBlockMCSR mcsr = new 
SparseBlockMCSR(srtmp);
-                                       return mcsr.getExactSizeInMemory();
-                               case CSR:
-                                       SparseBlockCSR csr = new 
SparseBlockCSR(srtmp);
-                                       return csr.getExactSizeInMemory();
-                               case COO:
-                                       SparseBlockCOO coo = new 
SparseBlockCOO(srtmp);
-                                       return coo.getExactSizeInMemory();
-                               case DCSR:
-                                       SparseBlockDCSR dcsr = new 
SparseBlockDCSR(srtmp);
-                                       return dcsr.getExactSizeInMemory();
-                       }
-               } catch(Exception ex) {
-                       ex.printStackTrace();
-                       throw new RuntimeException(ex);
-               }
-               throw new IllegalArgumentException();
+               if (btype == null)
+                       return Math.min(Long.MAX_VALUE, (long) 
DenseBlockFP64.estimateMemory(rl, cl));
+
+               double[][] A = TestUtils.generateTestMatrix(rl, cl, -10, 10, 
sparsity, 7654321);
+
+               MatrixBlock mbtmp = DataConverter.convertToMatrixBlock(A);
+
+               if (!mbtmp.isInSparseFormat())
+                       mbtmp.denseToSparse(true);
+
+               SparseBlock srtmp = mbtmp.getSparseBlock();
+               SparseBlock sb = SparseBlockFactory.copySparseBlock(btype, 
srtmp, true);
+               return sb.getExactSizeInMemory();
        }
 }
diff --git 
a/src/test/java/org/apache/sysds/test/applications/ApplyTransformTest.java 
b/src/test/java/org/apache/sysds/test/applications/ApplyTransformTest.java
index bdd0a9b415..9914caa6ec 100644
--- a/src/test/java/org/apache/sysds/test/applications/ApplyTransformTest.java
+++ b/src/test/java/org/apache/sysds/test/applications/ApplyTransformTest.java
@@ -19,8 +19,6 @@
 
 package org.apache.sysds.test.applications;
 
-import java.io.FileWriter;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -29,9 +27,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.sysds.api.DMLScript;
-import org.apache.sysds.utils.Statistics;
-import org.apache.sysds.utils.stats.NGramBuilder;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;

Reply via email to