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

baunsgaard 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 9c0d0b7  [MINOR] Check if NNZ is in mdt before parsing
9c0d0b7 is described below

commit 9c0d0b731be06f3112661a9c04740b91a3870e7e
Author: baunsgaard <[email protected]>
AuthorDate: Wed Aug 26 16:43:02 2020 +0200

    [MINOR] Check if NNZ is in mdt before parsing
    
    This commit change the behavior of a federated worker if the
    metadata file does not contain the number of non zeros.
    It makes it default to parse into a dense representation when the input
    is small, and sparse representation if large.
---
 .../controlprogram/federated/FederatedWorkerHandler.java    | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git 
a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java
 
b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java
index fb8c494..5dbccb4 100644
--- 
a/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java
+++ 
b/src/main/java/org/apache/sysds/runtime/controlprogram/federated/FederatedWorkerHandler.java
@@ -195,7 +195,18 @@ public class FederatedWorkerHandler extends 
ChannelInboundHandlerAdapter {
                                                        new 
FederatedWorkerHandlerException("Could not parse metadata file"));
                                        
mc.setRows(mtd.getLong(DataExpression.READROWPARAM));
                                        
mc.setCols(mtd.getLong(DataExpression.READCOLPARAM));
-                                       
mc.setNonZeros(mtd.getLong(DataExpression.READNNZPARAM));
+                                       
if(mtd.containsKey(DataExpression.READNNZPARAM)){
+                                               
mc.setNonZeros(mtd.getLong(DataExpression.READNNZPARAM));
+                                       }
+                                       else if (mc.getCols() * mc.getRows() < 
8000000){
+                                               // force dense allocation.
+                                               mc.setNonZeros(mc.getCols() 
*mc.getRows());
+                                       }
+                                       else{
+                                               // force sparse allocation 
+                                               
mc.setNonZeros((long)(mc.getCols() * mc.getRows() * 0.35));
+                                       }
+                                       
                                        cd = (CacheableData<?>) 
PrivacyPropagator.parseAndSetPrivacyConstraint(cd, mtd);
                                        fmt = 
FileFormat.safeValueOf(mtd.getString(DataExpression.FORMAT_TYPE));
                                }

Reply via email to