Search in sources :

Example 61 with Hop

use of org.apache.sysml.hops.Hop in project incubator-systemml by apache.

the class HopRewriteUtils method createDataGenOpByVal.

public static Hop createDataGenOpByVal(ArrayList<LiteralOp> values, long rows, long cols) {
    StringBuilder sb = new StringBuilder();
    for (LiteralOp lit : values) {
        if (sb.length() > 0)
            sb.append(StringInitCPInstruction.DELIM);
        sb.append(lit.getStringValue());
    }
    LiteralOp str = new LiteralOp(sb.toString());
    HashMap<String, Hop> params = new HashMap<>();
    params.put(DataExpression.RAND_ROWS, new LiteralOp(rows));
    params.put(DataExpression.RAND_COLS, new LiteralOp(cols));
    params.put(DataExpression.RAND_MIN, str);
    params.put(DataExpression.RAND_MAX, str);
    params.put(DataExpression.RAND_SEED, new LiteralOp(DataGenOp.UNSPECIFIED_SEED));
    Hop datagen = new DataGenOp(DataGenMethod.SINIT, new DataIdentifier("tmp"), params);
    int blksz = ConfigurationManager.getBlocksize();
    datagen.setOutputBlocksizes(blksz, blksz);
    copyLineNumbers(values.get(0), datagen);
    return datagen;
}
Also used : DataIdentifier(org.apache.sysml.parser.DataIdentifier) HashMap(java.util.HashMap) DataGenOp(org.apache.sysml.hops.DataGenOp) Hop(org.apache.sysml.hops.Hop) LiteralOp(org.apache.sysml.hops.LiteralOp)

Example 62 with Hop

use of org.apache.sysml.hops.Hop in project incubator-systemml by apache.

the class HopRewriteUtils method isNotMatrixVectorBinaryOperation.

public static boolean isNotMatrixVectorBinaryOperation(Hop hop) {
    boolean ret = true;
    if (hop instanceof BinaryOp) {
        BinaryOp bop = (BinaryOp) hop;
        Hop left = bop.getInput().get(0);
        Hop right = bop.getInput().get(1);
        boolean mv = (left.getDim1() > 1 && right.getDim1() == 1) || (left.getDim2() > 1 && right.getDim2() == 1);
        ret = isDimsKnown(bop) && !mv;
    }
    return ret;
}
Also used : Hop(org.apache.sysml.hops.Hop) AggBinaryOp(org.apache.sysml.hops.AggBinaryOp) BinaryOp(org.apache.sysml.hops.BinaryOp)

Example 63 with Hop

use of org.apache.sysml.hops.Hop in project incubator-systemml by apache.

the class HopRewriteUtils method isBasic1NSequence.

public static boolean isBasic1NSequence(Hop hop) {
    if (hop instanceof DataGenOp && ((DataGenOp) hop).getOp() == DataGenMethod.SEQ) {
        DataGenOp dgop = (DataGenOp) hop;
        Hop from = dgop.getInput().get(dgop.getParamIndex(Statement.SEQ_FROM));
        Hop incr = dgop.getInput().get(dgop.getParamIndex(Statement.SEQ_INCR));
        return (from instanceof LiteralOp && getDoubleValueSafe((LiteralOp) from) == 1) && (incr instanceof LiteralOp && getDoubleValueSafe((LiteralOp) incr) == 1);
    }
    return false;
}
Also used : DataGenOp(org.apache.sysml.hops.DataGenOp) Hop(org.apache.sysml.hops.Hop) LiteralOp(org.apache.sysml.hops.LiteralOp)

Example 64 with Hop

use of org.apache.sysml.hops.Hop in project incubator-systemml by apache.

the class HopRewriteUtils method createDataGenOp.

public static Hop createDataGenOp(Hop rowInput, boolean tRowInput, Hop colInput, boolean tColInput, double value) {
    long nrow = tRowInput ? rowInput.getDim2() : rowInput.getDim1();
    long ncol = tColInput ? colInput.getDim1() : rowInput.getDim2();
    Hop rows = (nrow >= 0) ? new LiteralOp(nrow) : new UnaryOp("tmprows", DataType.SCALAR, ValueType.INT, tRowInput ? OpOp1.NCOL : OpOp1.NROW, rowInput);
    Hop cols = (ncol >= 0) ? new LiteralOp(ncol) : new UnaryOp("tmpcols", DataType.SCALAR, ValueType.INT, tColInput ? OpOp1.NROW : OpOp1.NCOL, colInput);
    Hop val = new LiteralOp(value);
    HashMap<String, Hop> params = new HashMap<>();
    params.put(DataExpression.RAND_ROWS, rows);
    params.put(DataExpression.RAND_COLS, cols);
    params.put(DataExpression.RAND_MIN, val);
    params.put(DataExpression.RAND_MAX, val);
    params.put(DataExpression.RAND_PDF, new LiteralOp(DataExpression.RAND_PDF_UNIFORM));
    params.put(DataExpression.RAND_LAMBDA, new LiteralOp(-1.0));
    params.put(DataExpression.RAND_SPARSITY, new LiteralOp(1.0));
    params.put(DataExpression.RAND_SEED, new LiteralOp(DataGenOp.UNSPECIFIED_SEED));
    // note internal refresh size information
    Hop datagen = new DataGenOp(DataGenMethod.RAND, new DataIdentifier("tmp"), params);
    datagen.setOutputBlocksizes(rowInput.getRowsInBlock(), colInput.getColsInBlock());
    copyLineNumbers(rowInput, datagen);
    if (value == 0)
        datagen.setNnz(0);
    return datagen;
}
Also used : AggUnaryOp(org.apache.sysml.hops.AggUnaryOp) UnaryOp(org.apache.sysml.hops.UnaryOp) DataIdentifier(org.apache.sysml.parser.DataIdentifier) HashMap(java.util.HashMap) DataGenOp(org.apache.sysml.hops.DataGenOp) Hop(org.apache.sysml.hops.Hop) LiteralOp(org.apache.sysml.hops.LiteralOp)

Example 65 with Hop

use of org.apache.sysml.hops.Hop in project incubator-systemml by apache.

the class HopRewriteUtils method copyDataGenOp.

/**
 * Assumes that min and max are literal ops, needs to be checked from outside.
 *
 * @param inputGen input data gen op
 * @param scale the scale
 * @param shift the shift
 * @return data gen op
 */
public static DataGenOp copyDataGenOp(DataGenOp inputGen, double scale, double shift) {
    HashMap<String, Integer> params = inputGen.getParamIndexMap();
    Hop rows = inputGen.getInput().get(params.get(DataExpression.RAND_ROWS));
    Hop cols = inputGen.getInput().get(params.get(DataExpression.RAND_COLS));
    Hop min = inputGen.getInput().get(params.get(DataExpression.RAND_MIN));
    Hop max = inputGen.getInput().get(params.get(DataExpression.RAND_MAX));
    Hop pdf = inputGen.getInput().get(params.get(DataExpression.RAND_PDF));
    Hop mean = inputGen.getInput().get(params.get(DataExpression.RAND_LAMBDA));
    Hop sparsity = inputGen.getInput().get(params.get(DataExpression.RAND_SPARSITY));
    Hop seed = inputGen.getInput().get(params.get(DataExpression.RAND_SEED));
    // check for literal ops
    if (!(min instanceof LiteralOp) || !(max instanceof LiteralOp))
        return null;
    // scale and shift
    double smin = getDoubleValue((LiteralOp) min);
    double smax = getDoubleValue((LiteralOp) max);
    smin = smin * scale + shift;
    smax = smax * scale + shift;
    Hop sminHop = new LiteralOp(smin);
    Hop smaxHop = new LiteralOp(smax);
    HashMap<String, Hop> params2 = new HashMap<>();
    params2.put(DataExpression.RAND_ROWS, rows);
    params2.put(DataExpression.RAND_COLS, cols);
    params2.put(DataExpression.RAND_MIN, sminHop);
    params2.put(DataExpression.RAND_MAX, smaxHop);
    params2.put(DataExpression.RAND_PDF, pdf);
    params2.put(DataExpression.RAND_LAMBDA, mean);
    params2.put(DataExpression.RAND_SPARSITY, sparsity);
    params2.put(DataExpression.RAND_SEED, seed);
    // note internal refresh size information
    DataGenOp datagen = new DataGenOp(DataGenMethod.RAND, new DataIdentifier("tmp"), params2);
    datagen.setOutputBlocksizes(inputGen.getRowsInBlock(), inputGen.getColsInBlock());
    copyLineNumbers(inputGen, datagen);
    if (smin == 0 && smax == 0)
        datagen.setNnz(0);
    return datagen;
}
Also used : DataIdentifier(org.apache.sysml.parser.DataIdentifier) HashMap(java.util.HashMap) DataGenOp(org.apache.sysml.hops.DataGenOp) Hop(org.apache.sysml.hops.Hop) LiteralOp(org.apache.sysml.hops.LiteralOp)

Aggregations

Hop (org.apache.sysml.hops.Hop)307 LiteralOp (org.apache.sysml.hops.LiteralOp)94 AggBinaryOp (org.apache.sysml.hops.AggBinaryOp)65 BinaryOp (org.apache.sysml.hops.BinaryOp)63 ArrayList (java.util.ArrayList)61 AggUnaryOp (org.apache.sysml.hops.AggUnaryOp)61 HashMap (java.util.HashMap)44 DataOp (org.apache.sysml.hops.DataOp)41 UnaryOp (org.apache.sysml.hops.UnaryOp)41 HashSet (java.util.HashSet)39 ReorgOp (org.apache.sysml.hops.ReorgOp)32 MemoTableEntry (org.apache.sysml.hops.codegen.template.CPlanMemoTable.MemoTableEntry)28 StatementBlock (org.apache.sysml.parser.StatementBlock)28 IndexingOp (org.apache.sysml.hops.IndexingOp)24 ForStatementBlock (org.apache.sysml.parser.ForStatementBlock)23 WhileStatementBlock (org.apache.sysml.parser.WhileStatementBlock)23 IfStatementBlock (org.apache.sysml.parser.IfStatementBlock)22 DataGenOp (org.apache.sysml.hops.DataGenOp)21 DMLRuntimeException (org.apache.sysml.runtime.DMLRuntimeException)21 HopsException (org.apache.sysml.hops.HopsException)18