You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2018/07/14 06:43:28 UTC

systemml git commit: [SYSTEMML-2434] Support for matrix market symmetry general/symmetric

Repository: systemml
Updated Branches:
  refs/heads/master 682da9cdc -> 614adecaf


[SYSTEMML-2434] Support for matrix market symmetry general/symmetric

This patch introduces support for matrix market symmetry types beyond
general in CP and Spark execution modes. Specifically, we now also
support symmetric inputs that are expanded into general matrices during
read. We do not support skew-symmetric (although easy to add) because R
does not implement this yet and hence we cannot compare for testing. 


Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/614adeca
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/614adeca
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/614adeca

Branch: refs/heads/master
Commit: 614adecaf5e2b1c4b0b9273fa0e63841307fb790
Parents: 682da9c
Author: Matthias Boehm <mb...@gmail.com>
Authored: Fri Jul 13 23:44:34 2018 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Fri Jul 13 23:44:34 2018 -0700

----------------------------------------------------------------------
 .../org/apache/sysml/parser/DataExpression.java |  37 +++--
 .../spark/utils/RDDConverterUtils.java          |   2 +
 .../runtime/io/FileFormatPropertiesMM.java      |  13 +-
 .../apache/sysml/runtime/io/ReaderTextCell.java |  36 +++--
 .../runtime/io/ReaderTextCellParallel.java      |  21 +--
 .../apache/sysml/runtime/matrix/data/IJV.java   |   4 +
 .../functions/data/MatrixMarketFormatTest.java  | 154 +++++++++----------
 7 files changed, 141 insertions(+), 126 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/614adeca/src/main/java/org/apache/sysml/parser/DataExpression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/DataExpression.java b/src/main/java/org/apache/sysml/parser/DataExpression.java
index eafdd13..44f368e 100644
--- a/src/main/java/org/apache/sysml/parser/DataExpression.java
+++ b/src/main/java/org/apache/sysml/parser/DataExpression.java
@@ -48,31 +48,31 @@ import org.apache.wink.json4j.JSONObject;
 
 public class DataExpression extends DataIdentifier 
 {
-	public static final String RAND_ROWS 	=  "rows";	 
-	public static final String RAND_COLS 	=  "cols";
-	public static final String RAND_MIN  	=  "min";
-	public static final String RAND_MAX  	=  "max";
-	public static final String RAND_SPARSITY = "sparsity"; 
-	public static final String RAND_SEED    =  "seed";
-	public static final String RAND_PDF		=  "pdf";
-	public static final String RAND_LAMBDA	=  "lambda";
+	public static final String RAND_ROWS = "rows";
+	public static final String RAND_COLS = "cols";
+	public static final String RAND_MIN = "min";
+	public static final String RAND_MAX = "max";
+	public static final String RAND_SPARSITY = "sparsity";
+	public static final String RAND_SEED = "seed";
+	public static final String RAND_PDF = "pdf";
+	public static final String RAND_LAMBDA = "lambda";
 	
 	public static final String RAND_PDF_UNIFORM = "uniform";
 	
-	public static final String RAND_BY_ROW 	 =  "byrow";	 
-	public static final String RAND_DIMNAMES =  "dimnames";
-	public static final String RAND_DATA 	 =  "data";
+	public static final String RAND_BY_ROW = "byrow";
+	public static final String RAND_DIMNAMES = "dimnames";
+	public static final String RAND_DATA = "data";
 	
 	public static final String IO_FILENAME = "iofilename";
 	public static final String READROWPARAM = "rows";
 	public static final String READCOLPARAM = "cols";
 	public static final String READNNZPARAM = "nnz";
 	
-	public static final String FORMAT_TYPE 						= "format";
-	public static final String FORMAT_TYPE_VALUE_TEXT 			= "text";
-	public static final String FORMAT_TYPE_VALUE_BINARY 		= "binary";
-	public static final String FORMAT_TYPE_VALUE_CSV			= "csv";
-	public static final String FORMAT_TYPE_VALUE_MATRIXMARKET	= "mm";
+	public static final String FORMAT_TYPE = "format";
+	public static final String FORMAT_TYPE_VALUE_TEXT = "text";
+	public static final String FORMAT_TYPE_VALUE_BINARY = "binary";
+	public static final String FORMAT_TYPE_VALUE_CSV = "csv";
+	public static final String FORMAT_TYPE_VALUE_MATRIXMARKET = "mm";
 	
 	public static final String ROWBLOCKCOUNTPARAM = "rows_in_block";
 	public static final String COLUMNBLOCKCOUNTPARAM = "cols_in_block";
@@ -663,7 +663,6 @@ public class DataExpression extends DataIdentifier
 					// process 1st line of MatrixMarket format to check for support types
 					
 					String firstLine = headerLines[0].trim();
-					@SuppressWarnings("unused")
 					FileFormatPropertiesMM props = FileFormatPropertiesMM.parse(firstLine);
 					
 					// process 2nd line of MatrixMarket format -- must have size information
@@ -672,7 +671,7 @@ public class DataExpression extends DataIdentifier
 					String[] sizeInfo = secondLine.trim().split("\\s+");
 					if (sizeInfo.length != 3){
 						raiseValidateError("Unsupported size line in MatrixMarket file: " +
-								headerLines[1] + ". Only supported format in MatrixMarket file has size line: <NUM ROWS> <NUM COLS> <NUM NON-ZEROS>, where each value is an integer.", conditional);
+							headerLines[1] + ". Only supported format in MatrixMarket file has size line: <NUM ROWS> <NUM COLS> <NUM NON-ZEROS>, where each value is an integer.", conditional);
 					}
 				
 					long rowsCount = Long.parseLong(sizeInfo[0]);
@@ -696,7 +695,7 @@ public class DataExpression extends DataIdentifier
 					}
 					addVarParam(READCOLPARAM, new IntIdentifier(colsCount, this));
 					
-					long nnzCount = Long.parseLong(sizeInfo[2]);
+					long nnzCount = Long.parseLong(sizeInfo[2]) * (props.isSymmetric() ? 2 : 1);
 					if (nnzCount < 0)
 						raiseValidateError("MM file: invalid number of non-zeros: "+nnzCount);
 					else if( getVarParam(READNNZPARAM) != null ) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/614adeca/src/main/java/org/apache/sysml/runtime/instructions/spark/utils/RDDConverterUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/spark/utils/RDDConverterUtils.java b/src/main/java/org/apache/sysml/runtime/instructions/spark/utils/RDDConverterUtils.java
index 4f9e5f9..f775e92 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/spark/utils/RDDConverterUtils.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/spark/utils/RDDConverterUtils.java
@@ -542,6 +542,8 @@ public class RDDConverterUtils
 				
 				//add value to reblock buffer
 				rbuff.appendCell(row, col, val);
+				if( _mmProps != null && _mmProps.isSymmetric() && row!=col )
+					rbuff.appendCell(col, row, val);
 			}
 			
 			//final flush buffer

http://git-wip-us.apache.org/repos/asf/systemml/blob/614adeca/src/main/java/org/apache/sysml/runtime/io/FileFormatPropertiesMM.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/io/FileFormatPropertiesMM.java b/src/main/java/org/apache/sysml/runtime/io/FileFormatPropertiesMM.java
index dd806d4..2640fe4 100644
--- a/src/main/java/org/apache/sysml/runtime/io/FileFormatPropertiesMM.java
+++ b/src/main/java/org/apache/sysml/runtime/io/FileFormatPropertiesMM.java
@@ -95,6 +95,11 @@ public class FileFormatPropertiesMM extends FileFormatProperties implements Seri
 	public boolean isPatternField() {
 		return _field == MMField.PATTERN;
 	}
+	
+	public boolean isSymmetric() {
+		return _symmetry == MMSymmetry.SYMMETRIC
+			|| _symmetry == MMSymmetry.SKEW_SYMMETRIC;
+	}
 
 	public static FileFormatPropertiesMM parse(String header) {
 		//example: %%MatrixMarket matrix coordinate real general
@@ -121,7 +126,7 @@ public class FileFormatPropertiesMM extends FileFormatProperties implements Seri
 			//case "array": fmt = MMFormat.ARRAY; break;
 			case "coordinate": fmt = MMFormat.COORDINATE; break;
 			default: throw new DMLRuntimeException("MatrixMarket: "
-				+ "Incorrect format: "+format+" (expected array | coordinate).");
+				+ "Incorrect format: "+format+" (expected coordinate).");
 		}
 		String field = st.nextToken();
 		MMField f = null;
@@ -137,11 +142,11 @@ public class FileFormatPropertiesMM extends FileFormatProperties implements Seri
 		MMSymmetry s = null;
 		switch( symmetry ) {
 			case "general": s = MMSymmetry.GENERAL; break;
-			//case "symmetric": s = MMSymmetry.SYMMETRIC; break;
-			//case "skew-symmetric": s = MMSymmetry.SKEW_SYMMETRIC; break;
+			case "symmetric": s = MMSymmetry.SYMMETRIC; break;
+			//case "skew-symmetric": s = MMSymmetry.SKEW_SYMMETRIC; break; //not support in R
 			//note: Hermitian not supported
 			default: throw new DMLRuntimeException("MatrixMarket: "
-				+ "Incorrect symmetry: "+symmetry+" (expected general | symmetric | skew-symmetric).");
+				+ "Incorrect symmetry: "+symmetry+" (expected general | symmetric).");
 		}
 		
 		//construct file properties and check valid combination

http://git-wip-us.apache.org/repos/asf/systemml/blob/614adeca/src/main/java/org/apache/sysml/runtime/io/ReaderTextCell.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/io/ReaderTextCell.java b/src/main/java/org/apache/sysml/runtime/io/ReaderTextCell.java
index 45f117f..1bf1e17 100644
--- a/src/main/java/org/apache/sysml/runtime/io/ReaderTextCell.java
+++ b/src/main/java/org/apache/sysml/runtime/io/ReaderTextCell.java
@@ -136,8 +136,7 @@ public class ReaderTextCell extends MatrixReader
 					if( sparse ) { //SPARSE<-value
 						while( reader.next(key, value) ) {
 							cell = parseCell(value.toString(), st, cell, _mmProps);
-							if( cell.getV() != 0 )
-								dest.appendValue(cell.getI(), cell.getJ(), cell.getV());
+							appendCell(cell, dest, _mmProps);
 						}
 						dest.sortSparseRows();
 					} 
@@ -145,10 +144,7 @@ public class ReaderTextCell extends MatrixReader
 						DenseBlock a = dest.getDenseBlock();
 						while( reader.next(key, value) ) {
 							cell = parseCell(value.toString(), st, cell, _mmProps);
-							if( cell.getV() != 0 ) {
-								a.set( cell.getI(), cell.getJ(), cell.getV() );
-								nnz ++;
-							}
+							nnz += appendCell(cell, a, _mmProps);
 						}
 					}
 				}
@@ -178,6 +174,26 @@ public class ReaderTextCell extends MatrixReader
 			mmProps.isPatternField() ? 1 : mmProps.isIntField() ? st.nextLong() : st.nextDouble();
 		return cell.set(row, col, value);
 	}
+	
+	protected static int appendCell(IJV cell, MatrixBlock dest, FileFormatPropertiesMM mmProps) {
+		if( cell.getV() == 0 ) return 0;
+		dest.appendValue(cell.getI(), cell.getJ(), cell.getV());
+		if( mmProps != null && mmProps.isSymmetric() && !cell.onDiag() ) {
+			dest.appendValue(cell.getJ(), cell.getI(), cell.getV());
+			return 2;
+		}
+		return 1;
+	}
+	
+	protected static int appendCell(IJV cell, DenseBlock dest, FileFormatPropertiesMM mmProps) {
+		if( cell.getV() == 0 ) return 0;
+		dest.set(cell.getI(), cell.getJ(), cell.getV());
+		if( mmProps != null && mmProps.isSymmetric() && ! cell.onDiag() ) {
+			dest.set(cell.getJ(), cell.getI(), cell.getV());
+			return 2;
+		}
+		return 1;
+	}
 
 	private static void readRawTextCellMatrixFromHDFS( Path path, JobConf job, FileSystem fs, MatrixBlock dest, long rlen, long clen, int brlen, int bclen, boolean matrixMarket )
 		throws IOException
@@ -230,8 +246,7 @@ public class ReaderTextCell extends MatrixReader
 			if( sparse ) { //SPARSE<-value
 				while( (value=br.readLine())!=null ) {
 					cell = parseCell(value.toString(), st, cell, mmProps);
-					if( cell.getV() != 0 )
-						dest.appendValue(cell.getI(), cell.getJ(), cell.getV());
+					appendCell(cell, dest, mmProps);
 				}
 				dest.sortSparseRows();
 			} 
@@ -239,10 +254,7 @@ public class ReaderTextCell extends MatrixReader
 				DenseBlock a = dest.getDenseBlock();
 				while( (value=br.readLine())!=null ) {
 					cell = parseCell(value.toString(), st, cell, mmProps);
-					if( cell.getV() != 0 ) {
-						a.set( cell.getI(), cell.getJ(), cell.getV() );
-						nnz ++;
-					}
+					nnz += appendCell(cell, a, mmProps);
 				}
 				dest.setNonZeros(nnz);
 			}

http://git-wip-us.apache.org/repos/asf/systemml/blob/614adeca/src/main/java/org/apache/sysml/runtime/io/ReaderTextCellParallel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/io/ReaderTextCellParallel.java b/src/main/java/org/apache/sysml/runtime/io/ReaderTextCellParallel.java
index 1ce0164..de948f3 100644
--- a/src/main/java/org/apache/sysml/runtime/io/ReaderTextCellParallel.java
+++ b/src/main/java/org/apache/sysml/runtime/io/ReaderTextCellParallel.java
@@ -171,11 +171,8 @@ public class ReaderTextCellParallel extends ReaderTextCell
 					//process current value (otherwise ignore following meta data)
 					if( !foundComment ) {
 						cell = parseCell(value.toString(), st, cell, _mmProps);
-						if( cell.getV() != 0 ) {
-							synchronized( _dest ){ //sparse requires lock
-								_dest.appendValue(cell.getI(), cell.getJ(), cell.getV());
-								lnnz++;
-							}
+						synchronized( _dest ){ //sparse requires lock
+							lnnz += appendCell(cell, _dest, _mmProps);
 						}
 					}
 				}
@@ -183,7 +180,10 @@ public class ReaderTextCellParallel extends ReaderTextCell
 				if( _sparse ) { //SPARSE<-value
 					CellBuffer buff = new CellBuffer();
 					while( reader.next(key, value) ) {
-						buff.addCell(parseCell(value.toString(), st, cell, _mmProps));
+						cell = parseCell(value.toString(), st, cell, _mmProps);
+						buff.addCell(cell.getI(), cell.getJ(), cell.getV());
+						if( _mmProps != null && _mmProps.isSymmetric() && !cell.onDiag() )
+							buff.addCell(cell.getJ(), cell.getI(), cell.getV());
 						if( buff.size()>=CellBuffer.CAPACITY ) 
 							synchronized( _dest ){ //sparse requires lock
 								lnnz += buff.size();
@@ -200,10 +200,7 @@ public class ReaderTextCellParallel extends ReaderTextCell
 					DenseBlock a = _dest.getDenseBlock();
 					while( reader.next(key, value) ) {
 						cell = parseCell(value.toString(), st, cell, _mmProps);
-						if( cell.getV() != 0 ) {
-							a.set( cell.getI(), cell.getJ(), cell.getV() );
-							lnnz ++;
-						}
+						lnnz += appendCell(cell, a, _mmProps);
 					}
 				}
 			}
@@ -244,10 +241,6 @@ public class ReaderTextCellParallel extends ReaderTextCell
 			_pos = -1;
 		}
 		
-		public void addCell(IJV cell) {
-			addCell(cell.getI(), cell.getJ(), cell.getV());
-		}
-		
 		public void addCell(int rlen, int clen, double val) {
 			if( val==0 ) return;
 			_pos++;

http://git-wip-us.apache.org/repos/asf/systemml/blob/614adeca/src/main/java/org/apache/sysml/runtime/matrix/data/IJV.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/IJV.java b/src/main/java/org/apache/sysml/runtime/matrix/data/IJV.java
index 86c25e3..36bbe39 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/IJV.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/IJV.java
@@ -52,6 +52,10 @@ public class IJV
 		return _v;
 	}
 	
+	public boolean onDiag() {
+		return _i == _j;
+	}
+	
 	@Override
 	public String toString() {
 		return "("+_i+", "+_j+"): "+_v;

http://git-wip-us.apache.org/repos/asf/systemml/blob/614adeca/src/test/java/org/apache/sysml/test/integration/functions/data/MatrixMarketFormatTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/data/MatrixMarketFormatTest.java b/src/test/java/org/apache/sysml/test/integration/functions/data/MatrixMarketFormatTest.java
index 59e3aa5..2ecad5f 100644
--- a/src/test/java/org/apache/sysml/test/integration/functions/data/MatrixMarketFormatTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/functions/data/MatrixMarketFormatTest.java
@@ -83,15 +83,15 @@ public class MatrixMarketFormatTest extends AutomatedTestBase
 		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.REAL, MMSymmetry.SYMMETRIC, ExecType.SPARK);
 	}
 
-	@Test
-	public void testMMCooRealSkewSymmetricCP() {
-		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMCooRealSkewSymmetricSp() {
-		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
-	}
+//	@Test
+//	public void testMMCooRealSkewSymmetricCP() {
+//		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMCooRealSkewSymmetricSp() {
+//		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
+//	}
 	
 	@Test
 	public void testMMCooIntegerGeneralCP() {
@@ -118,15 +118,15 @@ public class MatrixMarketFormatTest extends AutomatedTestBase
 		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.INTEGER, MMSymmetry.SYMMETRIC, ExecType.SPARK);
 	}
 
-	@Test
-	public void testMMCooIntegerSkewSymmetricCP() {
-		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMCooIntegerSkewSymmetricSp() {
-		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
-	}
+//	@Test
+//	public void testMMCooIntegerSkewSymmetricCP() {
+//		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMCooIntegerSkewSymmetricSp() {
+//		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
+//	}
 	
 	@Test
 	public void testMMCooPatternGeneralCP() {
@@ -148,65 +148,65 @@ public class MatrixMarketFormatTest extends AutomatedTestBase
 		runMatrixMarketFormatTest(MMFormat.COORDINATE, MMField.PATTERN, MMSymmetry.SYMMETRIC, ExecType.SPARK);
 	}
 
-	@Test
-	public void testMMArrRealGeneralCP() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.GENERAL, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMArrRealGeneralSp() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.GENERAL, ExecType.SPARK);
-	}
-	
-	@Test
-	public void testMMArrRealSymmetricCP() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SYMMETRIC, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMArrRealSymmetricSp() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SYMMETRIC, ExecType.SPARK);
-	}
-	
-	@Test
-	public void testMMArrRealSkewSymmetricCP() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMArrRealSkewSymmetricSp() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
-	}
-	
-	@Test
-	public void testMMArrIntegerGeneralCP() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.GENERAL, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMArrIntegerGeneralSp() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.GENERAL, ExecType.SPARK);
-	}
-	
-	@Test
-	public void testMMArrIntegerSymmetricCP() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SYMMETRIC, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMArrIntegerSymmetricSp() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SYMMETRIC, ExecType.SPARK);
-	}
-	
-	@Test
-	public void testMMArrIntegerSkewSymmetricCP() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
-	}
-	
-	@Test
-	public void testMMArrIntegerSkewSymmetricSp() {
-		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
-	}
+//	@Test
+//	public void testMMArrRealGeneralCP() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.GENERAL, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMArrRealGeneralSp() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.GENERAL, ExecType.SPARK);
+//	}
+//	
+//	@Test
+//	public void testMMArrRealSymmetricCP() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SYMMETRIC, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMArrRealSymmetricSp() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SYMMETRIC, ExecType.SPARK);
+//	}
+//	
+//	@Test
+//	public void testMMArrRealSkewSymmetricCP() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMArrRealSkewSymmetricSp() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.REAL, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
+//	}
+//	
+//	@Test
+//	public void testMMArrIntegerGeneralCP() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.GENERAL, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMArrIntegerGeneralSp() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.GENERAL, ExecType.SPARK);
+//	}
+//	
+//	@Test
+//	public void testMMArrIntegerSymmetricCP() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SYMMETRIC, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMArrIntegerSymmetricSp() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SYMMETRIC, ExecType.SPARK);
+//	}
+//	
+//	@Test
+//	public void testMMArrIntegerSkewSymmetricCP() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.CP);
+//	}
+//	
+//	@Test
+//	public void testMMArrIntegerSkewSymmetricSp() {
+//		runMatrixMarketFormatTest(MMFormat.ARRAY, MMField.INTEGER, MMSymmetry.SKEW_SYMMETRIC, ExecType.SPARK);
+//	}
 
 	private void runMatrixMarketFormatTest(MMFormat fmt, MMField field, MMSymmetry symmetry, ExecType et)
 	{