You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemds.apache.org by ba...@apache.org on 2020/08/26 15:58:52 UTC

[systemds] branch master updated: [MINOR] Check if NNZ is in mdt before parsing

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 <ba...@tugraz.at>
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));
 				}