[SYSTEMML-630] New parallel binary block frame writer, cleanup/tests This patch introduces a new multi-threaded frame binary block writer that parallelizes over row partitions creating up to num_thread files depending on the given data size. On a scenario of writing a 1Mx1k (8GB) frame to HDFS (k=24, num_disks=12), multi-threaded write resulted in a runtime improvement from 48.9s to 8.2s, i.e., roughly 1GB/s and thus, almost peak IO performance.
Furthermore, this patch also includes tests and cleanup to ensure consistency between the single-threaded and multi-threaded writers by relying on the same core primitive of writing a row partition to a single sequence file. Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/6bbae619 Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/6bbae619 Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/6bbae619 Branch: refs/heads/master Commit: 6bbae619a7f197b8b379c756aee0bc79ffcd7a63 Parents: 9e04719 Author: Matthias Boehm <[email protected]> Authored: Mon Jun 6 23:39:09 2016 -0700 Committer: Matthias Boehm <[email protected]> Committed: Mon Jun 6 23:39:45 2016 -0700 ---------------------------------------------------------------------- .../org/apache/sysml/conf/CompilerConfig.java | 11 +- .../runtime/io/FrameWriterBinaryBlock.java | 98 +++++++------- .../io/FrameWriterBinaryBlockParallel.java | 134 +++++++++++++++++++ .../sysml/runtime/io/FrameWriterFactory.java | 9 +- .../functions/frame/FrameReadWriteTest.java | 41 ++++-- .../functions/io/SeqParReadTest.java | 6 +- .../functions/io/csv/ReadCSVTest.java | 6 +- .../functions/io/matrixmarket/ReadMMTest.java | 6 +- 8 files changed, 235 insertions(+), 76 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/main/java/org/apache/sysml/conf/CompilerConfig.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/conf/CompilerConfig.java b/src/main/java/org/apache/sysml/conf/CompilerConfig.java index d0c7f7c..77c53ea 100644 --- a/src/main/java/org/apache/sysml/conf/CompilerConfig.java +++ b/src/main/java/org/apache/sysml/conf/CompilerConfig.java @@ -75,17 +75,18 @@ public class CompilerConfig //default flags (exposed for testing purposes only) public static boolean FLAG_DYN_RECOMPILE = true; - public static boolean FLAG_PARREAD_TEXT = true; + public static boolean FLAG_PARREADWRITE_TEXT = true; + public static boolean FLAG_PARREADWRITE_BINARY = true; private HashMap<ConfigType, Boolean> _bmap = null; private HashMap<ConfigType, Integer> _imap = null; public CompilerConfig() { _bmap = new HashMap<ConfigType, Boolean>(); - _bmap.put(ConfigType.PARALLEL_CP_READ_TEXTFORMATS, FLAG_PARREAD_TEXT); - _bmap.put(ConfigType.PARALLEL_CP_WRITE_TEXTFORMATS, true); - _bmap.put(ConfigType.PARALLEL_CP_READ_BINARYFORMATS, true); - _bmap.put(ConfigType.PARALLEL_CP_WRITE_BINARYFORMATS, true); + _bmap.put(ConfigType.PARALLEL_CP_READ_TEXTFORMATS, FLAG_PARREADWRITE_TEXT); + _bmap.put(ConfigType.PARALLEL_CP_WRITE_TEXTFORMATS, FLAG_PARREADWRITE_TEXT); + _bmap.put(ConfigType.PARALLEL_CP_READ_BINARYFORMATS, FLAG_PARREADWRITE_BINARY); + _bmap.put(ConfigType.PARALLEL_CP_WRITE_BINARYFORMATS, FLAG_PARREADWRITE_BINARY); _bmap.put(ConfigType.PARALLEL_CP_MATRIX_OPERATIONS, true); _bmap.put(ConfigType.PARALLEL_LOCAL_OR_REMOTE_PARFOR, true); _bmap.put(ConfigType.ALLOW_DYN_RECOMPILATION, FLAG_DYN_RECOMPILE); http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlock.java b/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlock.java index fd15ef3..dc96c3e 100644 --- a/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlock.java +++ b/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlock.java @@ -32,12 +32,10 @@ import org.apache.sysml.runtime.matrix.data.FrameBlock; import org.apache.sysml.runtime.util.MapReduceTool; -/* - * This write uses fixed size blocks with block-encoded keys. - * +/** + * Single-threaded frame binary block writer. * */ - public class FrameWriterBinaryBlock extends FrameWriter { /** @@ -50,7 +48,7 @@ public class FrameWriterBinaryBlock extends FrameWriter * @throws DMLRuntimeException */ @Override - public void writeFrameToHDFS( FrameBlock src, String fname, long rlen, long clen ) + public final void writeFrameToHDFS( FrameBlock src, String fname, long rlen, long clen ) throws IOException, DMLRuntimeException { //prepare file access @@ -59,11 +57,17 @@ public class FrameWriterBinaryBlock extends FrameWriter //if the file already exists on HDFS, remove it. MapReduceTool.deleteFileIfExistOnHDFS( fname ); - - //core write - writeBinaryBlockFrameToHDFS(path, job, src, rlen, clen); - } + //bound check for src block + if( src.getNumRows() > rlen || src.getNumColumns() > clen ) { + throw new IOException("Frame block [1:"+src.getNumRows()+",1:"+src.getNumColumns()+"] " + + "out of overall frame range [1:"+rlen+",1:"+clen+"]."); + } + + //write binary block to hdfs (sequential/parallel) + writeBinaryBlockFrameToHDFS( path, job, src, rlen, clen ); + } + /** * * @param path @@ -71,69 +75,73 @@ public class FrameWriterBinaryBlock extends FrameWriter * @param src * @param rlen * @param clen - * @return * @throws IOException - * @throws DMLRuntimeException + * @throws DMLRuntimeException */ - @SuppressWarnings("deprecation") protected void writeBinaryBlockFrameToHDFS( Path path, JobConf job, FrameBlock src, long rlen, long clen ) - throws IOException, DMLRuntimeException + throws IOException, DMLRuntimeException { FileSystem fs = FileSystem.get(job); - int brlen = ConfigurationManager.getBlocksize(); - int bclen = ConfigurationManager.getBlocksize(); + int blen = ConfigurationManager.getBlocksize(); + + //sequential write to single file + writeBinaryBlockFrameToSequenceFile(path, job, fs, src, blen, 0, (int)rlen); + } - // 1) create sequence file writer + /** + * Internal primitive to write a block-aligned row range of a frame to a single sequence file, + * which is used for both single- and multi-threaded writers (for consistency). + * + * @param path + * @param job + * @param fs + * @param src + * @param blen + * @param rl + * @param ru + * @throws DMLRuntimeException + * @throws IOException + */ + @SuppressWarnings("deprecation") + protected final void writeBinaryBlockFrameToSequenceFile( Path path, JobConf job, FileSystem fs, FrameBlock src, int blen, int rl, int ru ) + throws DMLRuntimeException, IOException + { + //1) create sequence file writer SequenceFile.Writer writer = null; writer = new SequenceFile.Writer(fs, job, path, LongWritable.class, FrameBlock.class); try { - // 2) bound check for src block - if( src.getNumRows() > rlen || src.getNumColumns() > clen ) - { - throw new IOException("Frame block [1:"+src.getNumRows()+",1:"+src.getNumColumns()+"] " + - "out of overall frame range [1:"+rlen+",1:"+clen+"]."); - } - - //3) reblock and write - LongWritable indexes = new LongWritable(); + //2) reblock and write + LongWritable index = new LongWritable(); - if( rlen <= brlen && clen <= bclen ) //opt for single block + if( src.getNumRows() <= blen ) //opt for single block { //directly write single block - indexes.set(1); - writer.append(indexes, src); + index.set(1); + writer.append(index, src); } else //general case { //initialize blocks for reuse (at most 4 different blocks required) - FrameBlock[] blocks = createFrameBlocksForReuse(src.getSchema(), src.getColumnNames(), rlen); + FrameBlock[] blocks = createFrameBlocksForReuse(src.getSchema(), src.getColumnNames(), src.getNumRows()); //create and write subblocks of frame - for(int blockRow = 0; blockRow < (int)Math.ceil(src.getNumRows()/(double)brlen); blockRow++) - { - int maxRow = (blockRow*brlen + brlen < src.getNumRows()) ? brlen : src.getNumRows() - blockRow*brlen; - - int row_offset = blockRow*brlen; + for(int bi = rl; bi < ru; bi += blen) { + int len = Math.min(blen, src.getNumRows()-bi); - //get reuse frame block + //get reuse frame block and copy subpart to block FrameBlock block = getFrameBlockForReuse(blocks); - - //copy subpart to block - src.sliceOperations( row_offset, row_offset+maxRow-1, - 0, src.getNumColumns()-1, block ); + src.sliceOperations( bi, bi+len-1, 0, src.getNumColumns()-1, block ); //append block to sequence file - indexes.set(row_offset+1); - writer.append(indexes, block); + index.set(bi+1); + writer.append(index, block); } } - } - finally - { + finally { IOUtilFunctions.closeSilently(writer); - } + } } } http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlockParallel.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlockParallel.java b/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlockParallel.java new file mode 100644 index 0000000..f0b5bd1 --- /dev/null +++ b/src/main/java/org/apache/sysml/runtime/io/FrameWriterBinaryBlockParallel.java @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.sysml.runtime.io; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.mapred.JobConf; +import org.apache.sysml.conf.ConfigurationManager; +import org.apache.sysml.conf.DMLConfig; +import org.apache.sysml.hops.OptimizerUtils; +import org.apache.sysml.runtime.DMLRuntimeException; +import org.apache.sysml.runtime.controlprogram.parfor.stat.InfrastructureAnalyzer; +import org.apache.sysml.runtime.matrix.data.FrameBlock; +import org.apache.sysml.runtime.util.MapReduceTool; + + +/** + * Multi-threaded frame binary block writer. + * + */ +public class FrameWriterBinaryBlockParallel extends FrameWriterBinaryBlock +{ + /** + * + * @param path + * @param job + * @param src + * @param rlen + * @param clen + * @throws IOException + * @throws DMLRuntimeException + */ + protected void writeBinaryBlockFrameToHDFS( Path path, JobConf job, FrameBlock src, long rlen, long clen ) + throws IOException, DMLRuntimeException + { + //estimate output size and number of output blocks (min 1) + int blen = ConfigurationManager.getBlocksize(); + int numPartFiles = (int)(OptimizerUtils.estimatePartitionedSizeExactSparsity(rlen, clen, blen, blen, rlen*clen) + / InfrastructureAnalyzer.getHDFSBlockSize()); + numPartFiles = Math.max(numPartFiles, 1); + + //determine degree of parallelism + int numThreads = OptimizerUtils.getParallelBinaryWriteParallelism(); + numThreads = Math.min(numThreads, numPartFiles); + + //fall back to sequential write if dop is 1 (e.g., <128MB) in order to create single file + if( numThreads <= 1 ) { + super.writeBinaryBlockFrameToHDFS(path, job, src, rlen, clen); + return; + } + + //create directory for concurrent tasks + MapReduceTool.createDirIfNotExistOnHDFS(path.toString(), DMLConfig.DEFAULT_SHARED_DIR_PERMISSION); + FileSystem fs = FileSystem.get(job); + + //create and execute write tasks + try + { + ExecutorService pool = Executors.newFixedThreadPool(numThreads); + ArrayList<WriteFileTask> tasks = new ArrayList<WriteFileTask>(); + int blklen = (int)Math.ceil((double)rlen / blen / numThreads) * blen; + for(int i=0; i<numThreads & i*blklen<rlen; i++) { + Path newPath = new Path(path, String.format("0-m-%05d",i)); + tasks.add(new WriteFileTask(newPath, job, fs, src, i*blklen, Math.min((i+1)*blklen, (int)rlen), blen)); + } + + //wait until all tasks have been executed + List<Future<Object>> rt = pool.invokeAll(tasks); + pool.shutdown(); + + //check for exceptions + for( Future<Object> task : rt ) + task.get(); + } + catch (Exception e) { + throw new IOException("Failed parallel write of binary block input.", e); + } + } + + /** + * + */ + private class WriteFileTask implements Callable<Object> + { + private Path _path = null; + private JobConf _job = null; + private FileSystem _fs = null; + private FrameBlock _src = null; + private int _blen = -1; + private int _rl = -1; + private int _ru = -1; + + public WriteFileTask(Path path, JobConf job, FileSystem fs, FrameBlock src, int rl, int ru, int blen) { + _path = path; + _fs = fs; + _job = job; + _src = src; + _rl = rl; + _ru = ru; + _blen = blen; + } + + @Override + public Object call() throws Exception { + writeBinaryBlockFrameToSequenceFile(_path, _job, _fs, _src, _blen, _rl, _ru); + return null; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/main/java/org/apache/sysml/runtime/io/FrameWriterFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/io/FrameWriterFactory.java b/src/main/java/org/apache/sysml/runtime/io/FrameWriterFactory.java index 578ba36..a7f132f 100644 --- a/src/main/java/org/apache/sysml/runtime/io/FrameWriterFactory.java +++ b/src/main/java/org/apache/sysml/runtime/io/FrameWriterFactory.java @@ -19,6 +19,8 @@ package org.apache.sysml.runtime.io; +import org.apache.sysml.conf.ConfigurationManager; +import org.apache.sysml.conf.CompilerConfig.ConfigType; import org.apache.sysml.runtime.DMLRuntimeException; import org.apache.sysml.runtime.matrix.data.CSVFileFormatProperties; import org.apache.sysml.runtime.matrix.data.FileFormatProperties; @@ -30,8 +32,6 @@ import org.apache.sysml.runtime.matrix.data.OutputInfo; */ public class FrameWriterFactory { - - /** * * @param oinfo @@ -65,7 +65,10 @@ public class FrameWriterFactory writer = new FrameWriterTextCSV((CSVFileFormatProperties)props); } else if( oinfo == OutputInfo.BinaryBlockOutputInfo ) { - writer = new FrameWriterBinaryBlock(); + if( ConfigurationManager.getCompilerConfigFlag(ConfigType.PARALLEL_CP_WRITE_BINARYFORMATS) ) + writer = new FrameWriterBinaryBlockParallel(); + else + writer = new FrameWriterBinaryBlock(); } else { throw new DMLRuntimeException("Failed to create frame writer for unknown output info: " http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameReadWriteTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameReadWriteTest.java b/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameReadWriteTest.java index c29f1ff..b07d09e 100644 --- a/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameReadWriteTest.java +++ b/src/test/java/org/apache/sysml/test/integration/functions/frame/FrameReadWriteTest.java @@ -23,9 +23,10 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; +import org.apache.sysml.conf.CompilerConfig; +import org.apache.sysml.conf.ConfigurationManager; import org.apache.sysml.parser.Expression.ValueType; import org.apache.sysml.runtime.DMLRuntimeException; -import org.apache.sysml.runtime.instructions.cp.AppendCPInstruction.AppendType; import org.apache.sysml.runtime.io.FrameReader; import org.apache.sysml.runtime.io.FrameReaderFactory; import org.apache.sysml.runtime.io.FrameWriter; @@ -61,33 +62,33 @@ public class FrameReadWriteTest extends AutomatedTestBase } @Test - public void testFrameStringsStringsCBind() { - runFrameCopyTest(schemaStrings, schemaStrings, AppendType.CBIND); + public void testFrameStringsStrings() { + runFrameReadWriteTest(schemaStrings, schemaStrings, false); } @Test - public void testFrameStringsStringsRBind() { //note: ncol(A)=ncol(B) - runFrameCopyTest(schemaStrings, schemaStrings, AppendType.RBIND); + public void testFrameStringsStringsParallel() { + runFrameReadWriteTest(schemaStrings, schemaStrings, true); } @Test - public void testFrameMixedStringsCBind() { - runFrameCopyTest(schemaMixed, schemaStrings, AppendType.CBIND); + public void testFrameMixedStrings() { + runFrameReadWriteTest(schemaMixed, schemaStrings, false); } @Test - public void testFrameStringsMixedCBind() { - runFrameCopyTest(schemaStrings, schemaMixed, AppendType.CBIND); + public void testFrameStringsMixedParallel() { + runFrameReadWriteTest(schemaStrings, schemaMixed, true); } @Test - public void testFrameMixedMixedCBind() { - runFrameCopyTest(schemaMixed, schemaMixed, AppendType.CBIND); + public void testFrameMixedMixed() { + runFrameReadWriteTest(schemaMixed, schemaMixed, false); } @Test - public void testFrameMixedMixedRBind() { //note: ncol(A)=ncol(B) - runFrameCopyTest(schemaMixed, schemaMixed, AppendType.RBIND); + public void testFrameMixedMixedParallel() { + runFrameReadWriteTest(schemaMixed, schemaMixed, true); } @@ -97,10 +98,17 @@ public class FrameReadWriteTest extends AutomatedTestBase * @param sparseM2 * @param instType */ - private void runFrameCopyTest( ValueType[] schema1, ValueType[] schema2, AppendType atype) + private void runFrameReadWriteTest( ValueType[] schema1, ValueType[] schema2, boolean parallel) { + boolean oldParText = CompilerConfig.FLAG_PARREADWRITE_TEXT; + boolean oldParBin = CompilerConfig.FLAG_PARREADWRITE_BINARY; + try { + CompilerConfig.FLAG_PARREADWRITE_TEXT = parallel; + CompilerConfig.FLAG_PARREADWRITE_BINARY = parallel; + ConfigurationManager.setGlobalConfig(new CompilerConfig()); + //data generation double[][] A = getRandomMatrix(rows, schema1.length, -10, 10, 0.9, 2373); double[][] B = getRandomMatrix(rows, schema2.length, -10, 10, 0.9, 129); @@ -129,6 +137,11 @@ public class FrameReadWriteTest extends AutomatedTestBase ex.printStackTrace(); throw new RuntimeException(ex); } + finally { + CompilerConfig.FLAG_PARREADWRITE_TEXT = oldParText; + CompilerConfig.FLAG_PARREADWRITE_BINARY = oldParBin; + ConfigurationManager.setGlobalConfig(new CompilerConfig()); + } } void initFrameData(FrameBlock frame, double[][] data, List<ValueType> lschema) http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/test/java/org/apache/sysml/test/integration/functions/io/SeqParReadTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/sysml/test/integration/functions/io/SeqParReadTest.java b/src/test/java/org/apache/sysml/test/integration/functions/io/SeqParReadTest.java index 81fda82..f33d728 100644 --- a/src/test/java/org/apache/sysml/test/integration/functions/io/SeqParReadTest.java +++ b/src/test/java/org/apache/sysml/test/integration/functions/io/SeqParReadTest.java @@ -210,11 +210,11 @@ public class SeqParReadTest extends AutomatedTestBase { private void runReadTypeFormatSparsitySizeTest(boolean parallel, OutputInfo fmt, boolean dense, boolean big ) { - boolean oldpar = CompilerConfig.FLAG_PARREAD_TEXT; + boolean oldpar = CompilerConfig.FLAG_PARREADWRITE_TEXT; try { - CompilerConfig.FLAG_PARREAD_TEXT = parallel; + CompilerConfig.FLAG_PARREADWRITE_TEXT = parallel; TestConfiguration config = getTestConfiguration(TEST_NAME); loadTestConfiguration(config); @@ -250,7 +250,7 @@ public class SeqParReadTest extends AutomatedTestBase { } finally { - CompilerConfig.FLAG_PARREAD_TEXT = oldpar; + CompilerConfig.FLAG_PARREADWRITE_TEXT = oldpar; } } http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/test/java/org/apache/sysml/test/integration/functions/io/csv/ReadCSVTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/sysml/test/integration/functions/io/csv/ReadCSVTest.java b/src/test/java/org/apache/sysml/test/integration/functions/io/csv/ReadCSVTest.java index ab1f23e..65fbfa0 100644 --- a/src/test/java/org/apache/sysml/test/integration/functions/io/csv/ReadCSVTest.java +++ b/src/test/java/org/apache/sysml/test/integration/functions/io/csv/ReadCSVTest.java @@ -137,12 +137,12 @@ public class ReadCSVTest extends AutomatedTestBase { RUNTIME_PLATFORM oldPlatform = rtplatform; - boolean oldpar = CompilerConfig.FLAG_PARREAD_TEXT; + boolean oldpar = CompilerConfig.FLAG_PARREADWRITE_TEXT; try { rtplatform = platform; - CompilerConfig.FLAG_PARREAD_TEXT = parallel; + CompilerConfig.FLAG_PARREADWRITE_TEXT = parallel; TestConfiguration config = getTestConfiguration(TEST_NAME); @@ -170,7 +170,7 @@ public class ReadCSVTest extends AutomatedTestBase finally { rtplatform = oldPlatform; - CompilerConfig.FLAG_PARREAD_TEXT = oldpar; + CompilerConfig.FLAG_PARREADWRITE_TEXT = oldpar; } } http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/6bbae619/src/test/java/org/apache/sysml/test/integration/functions/io/matrixmarket/ReadMMTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/sysml/test/integration/functions/io/matrixmarket/ReadMMTest.java b/src/test/java/org/apache/sysml/test/integration/functions/io/matrixmarket/ReadMMTest.java index 6be1b9c..c1e5a08 100644 --- a/src/test/java/org/apache/sysml/test/integration/functions/io/matrixmarket/ReadMMTest.java +++ b/src/test/java/org/apache/sysml/test/integration/functions/io/matrixmarket/ReadMMTest.java @@ -90,12 +90,12 @@ public class ReadMMTest extends AutomatedTestBase private void runMMTest(int testNumber, RUNTIME_PLATFORM platform, boolean parallel) { RUNTIME_PLATFORM oldPlatform = rtplatform; - boolean oldpar = CompilerConfig.FLAG_PARREAD_TEXT; + boolean oldpar = CompilerConfig.FLAG_PARREADWRITE_TEXT; try { rtplatform = platform; - CompilerConfig.FLAG_PARREAD_TEXT = parallel; + CompilerConfig.FLAG_PARREADWRITE_TEXT = parallel; TestConfiguration config = getTestConfiguration(TEST_NAME); loadTestConfiguration(config); @@ -122,7 +122,7 @@ public class ReadMMTest extends AutomatedTestBase finally { rtplatform = oldPlatform; - CompilerConfig.FLAG_PARREAD_TEXT = oldpar; + CompilerConfig.FLAG_PARREADWRITE_TEXT = oldpar; } }
