[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.
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 @@
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));
}