blob: 86866c1791bd33e8ed38cb5f3d2d40a7d1e6f62a [file] [log] [blame]
/*
* 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.lops;
import org.apache.sysml.hops.HopsException;
import org.apache.sysml.runtime.controlprogram.caching.MatrixObject.UpdateType;
/**
* class to maintain output parameters for a lop.
*
*/
public class OutputParameters
{
public enum Format {
TEXT, BINARY, MM, CSV
};
private boolean _blocked = true;
private long _num_rows = -1;
private long _num_cols = -1;
private long _nnz = -1;
private UpdateType _updateType = UpdateType.COPY;
private long _num_rows_in_block = -1;
private long _num_cols_in_block = -1;
private String _file_name = null;
private String _file_label = null;
Format matrix_format = Format.BINARY;
public String getFile_name() {
return _file_name;
}
public void setFile_name(String fileName) {
_file_name = fileName;
}
public String getLabel() {
return _file_label;
}
public void setLabel(String label) {
_file_label = label;
}
public void setDimensions(long rows, long cols, long rows_per_block, long cols_per_block, long nnz) throws HopsException {
_num_rows = rows;
_num_cols = cols;
_nnz = nnz;
_num_rows_in_block = rows_per_block;
_num_cols_in_block = cols_per_block;
if ( _num_rows_in_block == 0 && _num_cols_in_block == 0 ) {
_blocked = false;
}
else if (_num_rows_in_block == -1 && _num_cols_in_block == -1) {
_blocked = false;
}
else if ( _num_rows_in_block > 0 && _num_cols_in_block > 0 ) {
_blocked = true;
}
else {
throw new HopsException("In OutputParameters Lop, Invalid values for blocking dimensions: [" + _num_rows_in_block + "," + _num_cols_in_block +"].");
}
}
public void setDimensions(long rows, long cols, long rows_per_block, long cols_per_block, long nnz, UpdateType update) throws HopsException {
_updateType = update;
setDimensions(rows, cols, rows_per_block, cols_per_block, nnz);
}
public Format getFormat() {
return matrix_format;
}
public void setFormat(Format fmt) {
matrix_format = fmt;
}
public boolean isBlocked() {
return _blocked;
}
public void setBlocked(boolean blocked)
{
_blocked = blocked;
}
public long getNumRows()
{
return _num_rows;
}
public void setNumRows(long rows)
{
_num_rows = rows;
}
public long getNumCols()
{
return _num_cols;
}
public void setNumCols(long cols)
{
_num_cols = cols;
}
public Long getNnz() {
return _nnz;
}
public void setNnz(long nnz)
{
_nnz = nnz;
}
public UpdateType getUpdateType() {
return _updateType;
}
public void setUpdateType(UpdateType update)
{
_updateType = update;
}
public long getRowsInBlock() {
return _num_rows_in_block;
}
public void setRowsInBlock(long rows_in_block) {
_num_rows_in_block = rows_in_block;
}
public long getColsInBlock() {
return _num_cols_in_block;
}
public void setColsInBlock(long cols_in_block) {
_num_cols_in_block = cols_in_block;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("rows=" + getNumRows() + Lop.VALUETYPE_PREFIX);
sb.append("cols=" + getNumCols() + Lop.VALUETYPE_PREFIX);
sb.append("nnz=" + getNnz() + Lop.VALUETYPE_PREFIX);
sb.append("updateInPlace=" + getUpdateType().toString() + Lop.VALUETYPE_PREFIX);
sb.append("rowsInBlock=" + getRowsInBlock() + Lop.VALUETYPE_PREFIX);
sb.append("colsInBlock=" + getColsInBlock() + Lop.VALUETYPE_PREFIX);
sb.append("isBlockedRepresentation=" + isBlocked() + Lop.VALUETYPE_PREFIX);
sb.append("format=" + getFormat() + Lop.VALUETYPE_PREFIX);
sb.append("label=" + getLabel() + Lop.VALUETYPE_PREFIX);
sb.append("filename=" + getFile_name());
return sb.toString();
}
}