Search in sources :

Example 51 with Data

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

the class RemoteParForUtils method exportResultVariables.

/**
	 * For remote Spark parfor workers. This is a simplified version compared to MR.
	 * 
	 * @param workerID worker id
	 * @param vars local variable map
	 * @param resultVars list of result variables
	 * @return list of result variables
	 * @throws DMLRuntimeException if DMLRuntimeException occurs
	 * @throws IOException if IOException occurs
	 */
public static ArrayList<String> exportResultVariables(long workerID, LocalVariableMap vars, ArrayList<String> resultVars) throws DMLRuntimeException, IOException {
    ArrayList<String> ret = new ArrayList<String>();
    //foreach result variables probe if export necessary
    for (String rvar : resultVars) {
        Data dat = vars.get(rvar);
        //export output variable to HDFS (see RunMRJobs)
        if (dat != null && dat.getDataType() == DataType.MATRIX) {
            MatrixObject mo = (MatrixObject) dat;
            if (mo.isDirty()) {
                //export result var (iff actually modified in parfor)
                mo.exportData();
                //pass output vars (scalars by value, matrix by ref) to result
                //(only if actually exported, hence in check for dirty, otherwise potential problems in result merge)
                ret.add(ProgramConverter.serializeDataObject(rvar, mo));
            }
        }
    }
    return ret;
}
Also used : MatrixObject(org.apache.sysml.runtime.controlprogram.caching.MatrixObject) ArrayList(java.util.ArrayList) CacheableData(org.apache.sysml.runtime.controlprogram.caching.CacheableData) Data(org.apache.sysml.runtime.instructions.cp.Data)

Example 52 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 53 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 54 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)

Example 55 with Data

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

the class Script method in.

/**
 * Register an input (parameter ($) or variable) with optional matrix
 * metadata.
 *
 * @param name
 *            name of the input
 * @param value
 *            value of the input
 * @param metadata
 *            optional matrix/frame metadata
 * @return {@code this} Script object to allow chaining of methods
 */
public Script in(String name, Object value, Metadata metadata) {
    if ((value != null) && (value instanceof Long)) {
        // convert Long to Integer since Long not a supported value type
        Long lng = (Long) value;
        value = lng.intValue();
    } else if ((value != null) && (value instanceof Float)) {
        // convert Float to Double since Float not a supported value type
        Float flt = (Float) value;
        value = flt.doubleValue();
    }
    MLContextUtil.checkInputValueType(name, value);
    if (inputs == null) {
        inputs = new LinkedHashMap<>();
    }
    inputs.put(name, value);
    if (name.startsWith("$")) {
        MLContextUtil.checkInputParameterType(name, value);
        if (inputParameters == null) {
            inputParameters = new LinkedHashMap<>();
        }
        inputParameters.put(name, value);
    } else {
        Data data = MLContextUtil.convertInputType(name, value, metadata);
        if (data != null) {
            // store input variable name and data
            symbolTable.put(name, data);
            inputVariables.add(name);
            // store matrix/frame meta data and disable variable cleanup
            if (data instanceof CacheableData) {
                if (metadata != null)
                    inputMetadata.put(name, metadata);
                ((CacheableData<?>) data).enableCleanup(false);
            }
        }
    }
    return this;
}
Also used : CacheableData(org.apache.sysml.runtime.controlprogram.caching.CacheableData) CacheableData(org.apache.sysml.runtime.controlprogram.caching.CacheableData) Data(org.apache.sysml.runtime.instructions.cp.Data)

Aggregations

Data (org.apache.sysml.runtime.instructions.cp.Data)83 MatrixObject (org.apache.sysml.runtime.controlprogram.caching.MatrixObject)64 DMLRuntimeException (org.apache.sysml.runtime.DMLRuntimeException)19 CacheableData (org.apache.sysml.runtime.controlprogram.caching.CacheableData)19 MatrixCharacteristics (org.apache.sysml.runtime.matrix.MatrixCharacteristics)17 ResultVar (org.apache.sysml.parser.ParForStatementBlock.ResultVar)16 DataIdentifier (org.apache.sysml.parser.DataIdentifier)13 ArrayList (java.util.ArrayList)12 DataOp (org.apache.sysml.hops.DataOp)11 MatrixBlock (org.apache.sysml.runtime.matrix.data.MatrixBlock)11 LiteralOp (org.apache.sysml.hops.LiteralOp)9 ParForProgramBlock (org.apache.sysml.runtime.controlprogram.ParForProgramBlock)9 ScalarObject (org.apache.sysml.runtime.instructions.cp.ScalarObject)9 ParForStatementBlock (org.apache.sysml.parser.ParForStatementBlock)8 MetaDataFormat (org.apache.sysml.runtime.matrix.MetaDataFormat)8 FrameObject (org.apache.sysml.runtime.controlprogram.caching.FrameObject)7 DMLException (org.apache.sysml.api.DMLException)6 UnaryOp (org.apache.sysml.hops.UnaryOp)6 DataType (org.apache.sysml.parser.Expression.DataType)6 IntObject (org.apache.sysml.runtime.instructions.cp.IntObject)6