You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemds.apache.org by mb...@apache.org on 2021/06/07 09:39:10 UTC

[systemds] branch master updated: [SYSTEMDS-2953] Fix robustness parfor program serialization

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

mboehm7 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 d43cc72  [SYSTEMDS-2953] Fix robustness parfor program serialization
d43cc72 is described below

commit d43cc728a9dfb7e0164c741a1d73f010896b7d45
Author: Matthias Boehm <mb...@gmail.com>
AuthorDate: Mon Jun 7 11:38:40 2021 +0200

    [SYSTEMDS-2953] Fix robustness parfor program serialization
---
 .../sysds/runtime/util/ProgramConverter.java       | 25 +++++++---------------
 1 file changed, 8 insertions(+), 17 deletions(-)

diff --git a/src/main/java/org/apache/sysds/runtime/util/ProgramConverter.java b/src/main/java/org/apache/sysds/runtime/util/ProgramConverter.java
index ae27d6c..e3213f4 100644
--- a/src/main/java/org/apache/sysds/runtime/util/ProgramConverter.java
+++ b/src/main/java/org/apache/sysds/runtime/util/ProgramConverter.java
@@ -1120,14 +1120,15 @@ public class ProgramConverter
 		for( String fkey : prog.getFunctionProgramBlocks().keySet() ) {
 			if( !cand.contains(fkey) ) //skip function not included in the parfor body
 				continue;
-			if( count>0 ) {
+			if( count>0 )
 				sb.append( ELEMENT_DELIM );
-			}
 			sb.append( fkey );
 			sb.append( KEY_VALUE_DELIM );
 			FunctionProgramBlock fpb1 = prog.getFunctionProgramBlock(fkey, true);
 			sb.append( rSerializeProgramBlock(fpb1, clsMap) );
 			if( prog.containsFunctionProgramBlock(fkey, false) ) {
+				sb.append( ELEMENT_DELIM );
+				sb.append( fkey );
 				sb.append( KEY_VALUE_DELIM );
 				FunctionProgramBlock fpb2 = prog.getFunctionProgramBlock(fkey, false);
 				sb.append( rSerializeProgramBlock(fpb2, clsMap) );
@@ -1392,21 +1393,11 @@ public class ProgramConverter
 			String lvar  = st.nextToken(); //with ID = CP_CHILD_THREAD+id for current use
 			//put first copy into prog (for direct use)
 			int index = lvar.indexOf( KEY_VALUE_DELIM );
-			String tmp1 = lvar.substring(0, index);
-			String tmp2 = lvar.substring(index + 1);
-			if( tmp2.contains(KEY_VALUE_DELIM) ) {
-				int index2 = tmp2.indexOf( KEY_VALUE_DELIM );
-				String tmp21 = tmp2.substring(0, index2);
-				String tmp22 = tmp2.substring(index2 + 1);
-				prog.addFunctionProgramBlock(tmp1,
-					(FunctionProgramBlock)rParseProgramBlock(tmp21, prog, id), true);
-				prog.addFunctionProgramBlock(tmp1,
-					(FunctionProgramBlock)rParseProgramBlock(tmp22, prog, id), false);
-			}
-			else {
-				prog.addFunctionProgramBlock(tmp1,
-					(FunctionProgramBlock)rParseProgramBlock(tmp2, prog, id), true);
-			}
+			String fkey = lvar.substring(0, index);
+			String tmp = lvar.substring(index + 1);
+			boolean opt = !prog.containsFunctionProgramBlock(fkey, true);
+			prog.addFunctionProgramBlock(fkey,
+				(FunctionProgramBlock)rParseProgramBlock(tmp, prog, id), opt);
 		}
 		return ret;
 	}