Search in sources :

Example 21 with Matrix

use of org.apache.sysml.udf.Matrix in project incubator-systemml by apache.

the class DeNegInfinityWrapper method execute.

@Override
public void execute() {
    try {
        Matrix inM = (Matrix) getFunctionInput(0);
        double[][] inData = inM.getMatrixAsDoubleArray();
        for (int i = 0; i < inData.length; i++) {
            for (int j = 0; j < inData[i].length; j++) {
                if (Double.NEGATIVE_INFINITY == inData[i][j]) {
                    inData[i][j] = 0.0;
                }
            }
        }
        //create and copy output matrix		
        String dir = createOutputFilePathAndName(OUTPUT_FILE);
        ret = new Matrix(dir, inM.getNumRows(), inM.getNumCols(), ValueType.Double);
        ret.setMatrixDoubleArray(inData);
    } catch (Exception e) {
        throw new RuntimeException("Error executing external order function", e);
    }
}
Also used : Matrix(org.apache.sysml.udf.Matrix)

Example 22 with Matrix

use of org.apache.sysml.udf.Matrix in project incubator-systemml by apache.

the class DeNaNWrapper method execute.

@Override
public void execute() {
    try {
        Matrix inM = (Matrix) getFunctionInput(0);
        double[][] inData = inM.getMatrixAsDoubleArray();
        for (int i = 0; i < inData.length; i++) {
            for (int j = 0; j < inData[i].length; j++) {
                if (Double.isNaN(inData[i][j])) {
                    inData[i][j] = 0.0;
                }
            }
        }
        //create and copy output matrix		
        String dir = createOutputFilePathAndName(OUTPUT_FILE);
        ret = new Matrix(dir, inM.getNumRows(), inM.getNumCols(), ValueType.Double);
        ret.setMatrixDoubleArray(inData);
    } catch (Exception e) {
        throw new RuntimeException("Error executing external removeNaN function", e);
    }
}
Also used : Matrix(org.apache.sysml.udf.Matrix)

Example 23 with Matrix

use of org.apache.sysml.udf.Matrix in project incubator-systemml by apache.

the class PermutationMatrixWrapper method execute.

@Override
public void execute() {
    try {
        Matrix inM = (Matrix) getFunctionInput(0);
        double[][] inData = inM.getMatrixAsDoubleArray();
        boolean desc = Boolean.parseBoolean(((Scalar) getFunctionInput(1)).getValue());
        // add index column as first column
        double[][] idxData = new double[(int) inM.getNumRows()][2];
        for (int i = 0; i < idxData.length; i++) {
            idxData[i][0] = i;
            idxData[i][1] = inData[i][0];
        }
        // sort input matrix (in-place)
        if (// asc
        !desc)
            Arrays.sort(idxData, new AscRowComparator(1));
        else
            // desc
            Arrays.sort(idxData, new DescRowComparator(1));
        // create and populate sparse matrixblock for result
        MatrixBlock mb = new MatrixBlock(idxData.length, idxData.length, true, idxData.length);
        for (int i = 0; i < idxData.length; i++) {
            mb.quickSetValue(i, (int) idxData[i][0], 1.0);
        }
        mb.examSparsity();
        // set result
        String dir = createOutputFilePathAndName(OUTPUT_FILE);
        _ret = new Matrix(dir, mb.getNumRows(), mb.getNumColumns(), ValueType.Double);
        _ret.setMatrixDoubleArray(mb, OutputInfo.BinaryBlockOutputInfo, InputInfo.BinaryBlockInputInfo);
    } catch (Exception e) {
        throw new RuntimeException("Error executing external permutation_matrix function", e);
    }
}
Also used : MatrixBlock(org.apache.sysml.runtime.matrix.data.MatrixBlock) Matrix(org.apache.sysml.udf.Matrix)

Example 24 with Matrix

use of org.apache.sysml.udf.Matrix in project incubator-systemml by apache.

the class ExternalFunctionProgramBlock method getInputObjects.

/**
	 * Method to convert string representation of input into function input
	 * object.
	 * 
	 * @param inputs list of inputs
	 * @param variableMapping local variable map
	 * @return list of function parameters
	 */
protected ArrayList<FunctionParameter> getInputObjects(ArrayList<String> inputs, LocalVariableMap variableMapping) {
    ArrayList<FunctionParameter> inputObjects = new ArrayList<FunctionParameter>();
    for (int i = 0; i < inputs.size(); i++) {
        ArrayList<String> tokens = new ArrayList<String>();
        StringTokenizer tk = new StringTokenizer(inputs.get(i), ":");
        while (tk.hasMoreTokens()) {
            tokens.add(tk.nextToken());
        }
        if (tokens.get(0).equals("Matrix")) {
            String varName = tokens.get(1);
            MatrixObject mobj = (MatrixObject) variableMapping.get(varName);
            MatrixCharacteristics mc = mobj.getMatrixCharacteristics();
            Matrix m = new Matrix(mobj.getFileName(), mc.getRows(), mc.getCols(), getMatrixValueType(tokens.get(2)));
            modifyInputMatrix(m, mobj);
            inputObjects.add(m);
        }
        if (tokens.get(0).equals("Scalar")) {
            String varName = tokens.get(1);
            ScalarObject so = (ScalarObject) variableMapping.get(varName);
            Scalar s = new Scalar(getScalarValueType(tokens.get(2)), so.getStringValue());
            inputObjects.add(s);
        }
        if (tokens.get(0).equals("Object")) {
            String varName = tokens.get(1);
            Object o = variableMapping.get(varName);
            BinaryObject obj = new BinaryObject(o);
            inputObjects.add(obj);
        }
    }
    return inputObjects;
}
Also used : MatrixObject(org.apache.sysml.runtime.controlprogram.caching.MatrixObject) ArrayList(java.util.ArrayList) MatrixCharacteristics(org.apache.sysml.runtime.matrix.MatrixCharacteristics) Scalar(org.apache.sysml.udf.Scalar) ScalarObject(org.apache.sysml.runtime.instructions.cp.ScalarObject) StringTokenizer(java.util.StringTokenizer) Matrix(org.apache.sysml.udf.Matrix) BinaryObject(org.apache.sysml.udf.BinaryObject) BooleanObject(org.apache.sysml.runtime.instructions.cp.BooleanObject) MatrixObject(org.apache.sysml.runtime.controlprogram.caching.MatrixObject) IntObject(org.apache.sysml.runtime.instructions.cp.IntObject) BinaryObject(org.apache.sysml.udf.BinaryObject) ScalarObject(org.apache.sysml.runtime.instructions.cp.ScalarObject) DoubleObject(org.apache.sysml.runtime.instructions.cp.DoubleObject) StringObject(org.apache.sysml.runtime.instructions.cp.StringObject) FunctionParameter(org.apache.sysml.udf.FunctionParameter)

Example 25 with Matrix

use of org.apache.sysml.udf.Matrix in project incubator-systemml by apache.

the class EvalFunction method execute.

@Override
public void execute(ExecutionContext ec) {
    String fname = ((Scalar) getFunctionInput(0)).getValue();
    MatrixObject in = ((Matrix) getFunctionInput(1)).getMatrixObject();
    ArrayList<String> inputs = new ArrayList<>();
    inputs.add("A");
    ArrayList<String> outputs = new ArrayList<>();
    outputs.add("B");
    ExecutionContext ec2 = ExecutionContextFactory.createContext(ec.getProgram());
    CPOperand inName = new CPOperand("TMP", org.apache.sysml.parser.Expression.ValueType.DOUBLE, DataType.MATRIX);
    ec2.setVariable("TMP", in);
    FunctionCallCPInstruction fcpi = new FunctionCallCPInstruction(null, fname, new CPOperand[] { inName }, inputs, outputs, "eval func");
    fcpi.processInstruction(ec2);
    MatrixObject out = (MatrixObject) ec2.getVariable("B");
    _ret = new Matrix(out, ValueType.Double);
}
Also used : MatrixObject(org.apache.sysml.runtime.controlprogram.caching.MatrixObject) Matrix(org.apache.sysml.udf.Matrix) ExecutionContext(org.apache.sysml.runtime.controlprogram.context.ExecutionContext) FunctionCallCPInstruction(org.apache.sysml.runtime.instructions.cp.FunctionCallCPInstruction) ArrayList(java.util.ArrayList) CPOperand(org.apache.sysml.runtime.instructions.cp.CPOperand) Scalar(org.apache.sysml.udf.Scalar)

Aggregations

Matrix (org.apache.sysml.udf.Matrix)33 MatrixBlock (org.apache.sysml.runtime.matrix.data.MatrixBlock)19 Scalar (org.apache.sysml.udf.Scalar)14 IOException (java.io.IOException)8 MatrixObject (org.apache.sysml.runtime.controlprogram.caching.MatrixObject)8 OutputInfo (org.apache.sysml.runtime.matrix.data.OutputInfo)6 DMLRuntimeException (org.apache.sysml.runtime.DMLRuntimeException)5 ArrayList (java.util.ArrayList)4 HashMap (java.util.HashMap)4 StringTokenizer (java.util.StringTokenizer)4 InputInfo (org.apache.sysml.runtime.matrix.data.InputInfo)4 MatrixCharacteristics (org.apache.sysml.runtime.matrix.MatrixCharacteristics)3 DataOutputStream (java.io.DataOutputStream)2 FileSystem (org.apache.hadoop.fs.FileSystem)2 Path (org.apache.hadoop.fs.Path)2 LongWritable (org.apache.hadoop.io.LongWritable)2 Text (org.apache.hadoop.io.Text)2 InputSplit (org.apache.hadoop.mapred.InputSplit)2 JobConf (org.apache.hadoop.mapred.JobConf)2 TextInputFormat (org.apache.hadoop.mapred.TextInputFormat)2