Search in sources :

Example 21 with Data

use of org.apache.sysml.runtime.instructions.cp.Data in project incubator-systemml by apache.

the class ParForProgramBlock method createEmptyUnscopedVariables.

/**
 * Create empty matrix objects and scalars for all unscoped vars
 * (created within the parfor).
 *
 * NOTE: parfor gives no guarantees on the values of those objects - hence
 * we return -1 for sclars and empty matrix objects.
 *
 * @param out local variable map
 * @param sb statement block
 */
private static void createEmptyUnscopedVariables(LocalVariableMap out, StatementBlock sb) {
    VariableSet updated = sb.variablesUpdated();
    VariableSet livein = sb.liveIn();
    // for all vars IN <updated> AND NOT IN <livein>
    for (String var : updated.getVariableNames()) if (!livein.containsVariable(var)) {
        // create empty output
        DataIdentifier dat = updated.getVariable(var);
        DataType datatype = dat.getDataType();
        ValueType valuetype = dat.getValueType();
        Data dataObj = null;
        switch(datatype) {
            case SCALAR:
                switch(valuetype) {
                    case BOOLEAN:
                        dataObj = new BooleanObject(false);
                        break;
                    case INT:
                        dataObj = new IntObject(-1);
                        break;
                    case DOUBLE:
                        dataObj = new DoubleObject(-1d);
                        break;
                    case STRING:
                        dataObj = new StringObject("-1");
                        break;
                    default:
                        throw new DMLRuntimeException("Value type not supported: " + valuetype);
                }
                break;
            case MATRIX:
            case FRAME:
                // because metadata (e.g., outputinfo) not known at this place.
                break;
            case UNKNOWN:
                break;
            default:
                throw new DMLRuntimeException("Data type not supported: " + datatype);
        }
        if (dataObj != null)
            out.put(var, dataObj);
    }
}
Also used : VariableSet(org.apache.sysml.parser.VariableSet) DataIdentifier(org.apache.sysml.parser.DataIdentifier) IntObject(org.apache.sysml.runtime.instructions.cp.IntObject) ValueType(org.apache.sysml.parser.Expression.ValueType) DoubleObject(org.apache.sysml.runtime.instructions.cp.DoubleObject) StringObject(org.apache.sysml.runtime.instructions.cp.StringObject) DataType(org.apache.sysml.parser.Expression.DataType) Data(org.apache.sysml.runtime.instructions.cp.Data) BooleanObject(org.apache.sysml.runtime.instructions.cp.BooleanObject) DMLRuntimeException(org.apache.sysml.runtime.DMLRuntimeException)

Example 22 with Data

use of org.apache.sysml.runtime.instructions.cp.Data in project incubator-systemml by apache.

the class ProgramBlock method checkSparsity.

private static void checkSparsity(Instruction lastInst, LocalVariableMap vars) {
    for (String varname : vars.keySet()) {
        Data dat = vars.get(varname);
        if (dat instanceof MatrixObject) {
            MatrixObject mo = (MatrixObject) dat;
            if (mo.isDirty() && !mo.isPartitioned()) {
                MatrixBlock mb = mo.acquireRead();
                boolean sparse1 = mb.isInSparseFormat();
                long nnz1 = mb.getNonZeros();
                synchronized (mb) {
                    // potential state change
                    mb.recomputeNonZeros();
                    mb.examSparsity();
                }
                if (mb.isInSparseFormat() && mb.isAllocated()) {
                    mb.getSparseBlock().checkValidity(mb.getNumRows(), mb.getNumColumns(), mb.getNonZeros(), true);
                }
                boolean sparse2 = mb.isInSparseFormat();
                long nnz2 = mb.getNonZeros();
                mo.release();
                if (nnz1 != nnz2)
                    throw new DMLRuntimeException("Matrix nnz meta data was incorrect: (" + varname + ", actual=" + nnz1 + ", expected=" + nnz2 + ", inst=" + lastInst + ")");
                if (sparse1 != sparse2 && mb.isAllocated())
                    throw new DMLRuntimeException("Matrix was in wrong data representation: (" + varname + ", actual=" + sparse1 + ", expected=" + sparse2 + ", nrow=" + mb.getNumRows() + ", ncol=" + mb.getNumColumns() + ", nnz=" + nnz1 + ", inst=" + lastInst + ")");
            }
        }
    }
}
Also used : MatrixBlock(org.apache.sysml.runtime.matrix.data.MatrixBlock) MatrixObject(org.apache.sysml.runtime.controlprogram.caching.MatrixObject) Data(org.apache.sysml.runtime.instructions.cp.Data) DMLRuntimeException(org.apache.sysml.runtime.DMLRuntimeException)

Example 23 with Data

use of org.apache.sysml.runtime.instructions.cp.Data in project incubator-systemml by apache.

the class CostEstimator method maintainVariableStatistics.

private static void maintainVariableStatistics(LocalVariableMap vars, HashMap<String, VarStats> stats) {
    for (String varname : vars.keySet()) {
        Data dat = vars.get(varname);
        VarStats vs = null;
        if (// matrix
        dat instanceof MatrixObject) {
            MatrixObject mo = (MatrixObject) dat;
            MatrixCharacteristics mc = mo.getMatrixCharacteristics();
            long rlen = mc.getRows();
            long clen = mc.getCols();
            int brlen = mc.getRowsPerBlock();
            int bclen = mc.getColsPerBlock();
            long nnz = mc.getNonZeros();
            boolean inmem = mo.getStatusAsString().equals("CACHED");
            vs = new VarStats(rlen, clen, brlen, bclen, nnz, inmem);
        } else // scalar
        {
            vs = _scalarStats;
        }
        stats.put(varname, vs);
    }
}
Also used : MatrixObject(org.apache.sysml.runtime.controlprogram.caching.MatrixObject) Data(org.apache.sysml.runtime.instructions.cp.Data) MatrixCharacteristics(org.apache.sysml.runtime.matrix.MatrixCharacteristics)

Example 24 with Data

use of org.apache.sysml.runtime.instructions.cp.Data in project incubator-systemml by apache.

the class PreparedScript method executeScript.

/**
 * Executes the prepared script over the bound inputs, creating the
 * result variables according to bound and registered outputs.
 *
 * @return ResultVariables object encapsulating output results
 */
public ResultVariables executeScript() {
    // add reused variables
    _vars.putAll(_inVarReuse);
    // set thread-local configurations
    ConfigurationManager.setLocalConfig(_dmlconf);
    ConfigurationManager.setLocalConfig(_cconf);
    // create and populate execution context
    ExecutionContext ec = ExecutionContextFactory.createContext(_vars, _prog);
    // core execute runtime program
    _prog.execute(ec);
    // cleanup unnecessary outputs
    _vars.removeAllNotIn(_outVarnames);
    // construct results
    ResultVariables rvars = new ResultVariables();
    for (String ovar : _outVarnames) {
        Data tmpVar = _vars.get(ovar);
        if (tmpVar != null)
            rvars.addResult(ovar, tmpVar);
    }
    // clear thread-local configurations
    ConfigurationManager.clearLocalConfigs();
    return rvars;
}
Also used : ExecutionContext(org.apache.sysml.runtime.controlprogram.context.ExecutionContext) Data(org.apache.sysml.runtime.instructions.cp.Data)

Example 25 with Data

use of org.apache.sysml.runtime.instructions.cp.Data in project incubator-systemml by apache.

the class ResultVariables method getMatrixBlock.

/**
 * Obtain the matrix represented by the given output variable.
 * Calling this method avoids unnecessary output conversions.
 *
 * @param varname output variable name
 * @return matrix as matrix block
 */
public MatrixBlock getMatrixBlock(String varname) {
    Data dat = _out.get(varname);
    if (dat == null)
        throw new DMLException("Non-existent output variable: " + varname);
    // basic checks for data type
    if (!(dat instanceof MatrixObject))
        throw new DMLException("Expected matrix result '" + varname + "' not a matrix.");
    // convert output matrix to double array
    MatrixObject mo = (MatrixObject) dat;
    MatrixBlock mb = mo.acquireRead();
    mo.release();
    return mb;
}
Also used : MatrixBlock(org.apache.sysml.runtime.matrix.data.MatrixBlock) MatrixObject(org.apache.sysml.runtime.controlprogram.caching.MatrixObject) DMLException(org.apache.sysml.api.DMLException) Data(org.apache.sysml.runtime.instructions.cp.Data)

Aggregations

Data (org.apache.sysml.runtime.instructions.cp.Data)47 MatrixObject (org.apache.sysml.runtime.controlprogram.caching.MatrixObject)37 CacheableData (org.apache.sysml.runtime.controlprogram.caching.CacheableData)11 DMLRuntimeException (org.apache.sysml.runtime.DMLRuntimeException)10 MatrixCharacteristics (org.apache.sysml.runtime.matrix.MatrixCharacteristics)9 ResultVar (org.apache.sysml.parser.ParForStatementBlock.ResultVar)8 ArrayList (java.util.ArrayList)7 DataIdentifier (org.apache.sysml.parser.DataIdentifier)7 DataOp (org.apache.sysml.hops.DataOp)6 MatrixFormatMetaData (org.apache.sysml.runtime.matrix.MatrixFormatMetaData)6 MatrixBlock (org.apache.sysml.runtime.matrix.data.MatrixBlock)6 LiteralOp (org.apache.sysml.hops.LiteralOp)5 ParForProgramBlock (org.apache.sysml.runtime.controlprogram.ParForProgramBlock)5 ScalarObject (org.apache.sysml.runtime.instructions.cp.ScalarObject)5 DMLException (org.apache.sysml.api.DMLException)4 ParForStatementBlock (org.apache.sysml.parser.ParForStatementBlock)4 FrameObject (org.apache.sysml.runtime.controlprogram.caching.FrameObject)4 MetaDataFormat (org.apache.sysml.runtime.matrix.MetaDataFormat)4 HashMap (java.util.HashMap)3 Hop (org.apache.sysml.hops.Hop)3