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;
}
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);
}
}
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;
}
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;
}
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;
}
Aggregations