in src/main/java/org/apache/sysds/runtime/instructions/InstructionUtils.java [305:475]
public static AggregateUnaryOperator parseBasicAggregateUnaryOperator(String opcode, int numThreads)
{
AggregateUnaryOperator aggun = null;
if ( opcode.equalsIgnoreCase(Opcodes.UAKP.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, KahanPlus.getKahanPlusFnObject(), CorrectionLocationType.LASTCOLUMN);
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARKP.toString()) ) { // RowSums
AggregateOperator agg = new AggregateOperator(0, KahanPlus.getKahanPlusFnObject(), CorrectionLocationType.LASTCOLUMN);
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACKP.toString()) ) { // ColSums
AggregateOperator agg = new AggregateOperator(0, KahanPlus.getKahanPlusFnObject(), CorrectionLocationType.LASTROW);
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UASQKP.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, KahanPlusSq.getKahanPlusSqFnObject(), CorrectionLocationType.LASTCOLUMN);
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARSQKP.toString()) ) {
// RowSums
AggregateOperator agg = new AggregateOperator(0, KahanPlusSq.getKahanPlusSqFnObject(), CorrectionLocationType.LASTCOLUMN);
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACSQKP.toString()) ) {
// ColSums
AggregateOperator agg = new AggregateOperator(0, KahanPlusSq.getKahanPlusSqFnObject(), CorrectionLocationType.LASTROW);
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UAMEAN.toString()) ) {
// Mean
AggregateOperator agg = new AggregateOperator(0, Mean.getMeanFnObject(), CorrectionLocationType.LASTTWOCOLUMNS);
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARMEAN.toString()) ) {
// RowMeans
AggregateOperator agg = new AggregateOperator(0, Mean.getMeanFnObject(), CorrectionLocationType.LASTTWOCOLUMNS);
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACMEAN.toString()) ) {
// ColMeans
AggregateOperator agg = new AggregateOperator(0, Mean.getMeanFnObject(), CorrectionLocationType.LASTTWOROWS);
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UAVAR.toString()) ) {
// Variance
CM varFn = CM.getCMFnObject(AggregateOperationTypes.VARIANCE);
CorrectionLocationType cloc = CorrectionLocationType.LASTFOURCOLUMNS;
AggregateOperator agg = new AggregateOperator(0, varFn, cloc);
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARVAR.toString()) ) {
// RowVariances
CM varFn = CM.getCMFnObject(AggregateOperationTypes.VARIANCE);
CorrectionLocationType cloc = CorrectionLocationType.LASTFOURCOLUMNS;
AggregateOperator agg = new AggregateOperator(0, varFn, cloc);
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACVAR.toString()) ) {
// ColVariances
CM varFn = CM.getCMFnObject(AggregateOperationTypes.VARIANCE);
CorrectionLocationType cloc = CorrectionLocationType.LASTFOURROWS;
AggregateOperator agg = new AggregateOperator(0, varFn, cloc);
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UAP.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, Plus.getPlusFnObject());
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARP.toString()) ) {
// RowSums
AggregateOperator agg = new AggregateOperator(0, Plus.getPlusFnObject());
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACP.toString()) ) {
// ColSums
AggregateOperator agg = new AggregateOperator(0, Plus.getPlusFnObject());
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UAM.toString()) ) {
AggregateOperator agg = new AggregateOperator(1, Multiply.getMultiplyFnObject());
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARM.toString()) ) {
AggregateOperator agg = new AggregateOperator(1, Multiply.getMultiplyFnObject());
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACM.toString()) ) {
AggregateOperator agg = new AggregateOperator(1, Multiply.getMultiplyFnObject());
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UAMAX.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.NEGATIVE_INFINITY, Builtin.getBuiltinFnObject("max"));
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UAMIN.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.POSITIVE_INFINITY, Builtin.getBuiltinFnObject("min"));
aggun = new AggregateUnaryOperator(agg, ReduceAll.getReduceAllFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UATRACE.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, Plus.getPlusFnObject());
aggun = new AggregateUnaryOperator(agg, ReduceDiag.getReduceDiagFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UAKTRACE.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, KahanPlus.getKahanPlusFnObject(), CorrectionLocationType.LASTCOLUMN);
aggun = new AggregateUnaryOperator(agg, ReduceDiag.getReduceDiagFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARMAX.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.NEGATIVE_INFINITY, Builtin.getBuiltinFnObject("max"));
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if (opcode.equalsIgnoreCase(Opcodes.UARIMAX.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.NEGATIVE_INFINITY, Builtin.getBuiltinFnObject("maxindex"), CorrectionLocationType.LASTCOLUMN);
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UARMIN.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.POSITIVE_INFINITY, Builtin.getBuiltinFnObject("min"));
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if (opcode.equalsIgnoreCase(Opcodes.UARIMIN.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.POSITIVE_INFINITY, Builtin.getBuiltinFnObject("minindex"), CorrectionLocationType.LASTCOLUMN);
aggun = new AggregateUnaryOperator(agg, ReduceCol.getReduceColFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACMAX.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.NEGATIVE_INFINITY, Builtin.getBuiltinFnObject("max"));
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACMIN.toString()) ) {
AggregateOperator agg = new AggregateOperator(Double.POSITIVE_INFINITY, Builtin.getBuiltinFnObject("min"));
aggun = new AggregateUnaryOperator(agg, ReduceRow.getReduceRowFnObject(), numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACD.toString()) ) {
aggun = new CountDistinctOperator(AggregateUnaryCPInstruction.AUType.COUNT_DISTINCT,
Direction.RowCol, ReduceAll.getReduceAllFnObject());
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACDR.toString()) ) {
aggun = new CountDistinctOperator(AggregateUnaryCPInstruction.AUType.COUNT_DISTINCT,
Direction.Row, ReduceCol.getReduceColFnObject());
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACDC.toString()) ) {
aggun = new CountDistinctOperator(AggregateUnaryCPInstruction.AUType.COUNT_DISTINCT,
Direction.Col, ReduceRow.getReduceRowFnObject());
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACDAP.toString()) ) {
aggun = new CountDistinctOperator(AggregateUnaryCPInstruction.AUType.COUNT_DISTINCT_APPROX,
Direction.RowCol, ReduceAll.getReduceAllFnObject());
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACDAPR.toString()) ) {
aggun = new CountDistinctOperator(AggregateUnaryCPInstruction.AUType.COUNT_DISTINCT_APPROX,
Direction.Row, ReduceCol.getReduceColFnObject());
}
else if ( opcode.equalsIgnoreCase(Opcodes.UACDAPC.toString()) ) {
aggun = new CountDistinctOperator(AggregateUnaryCPInstruction.AUType.COUNT_DISTINCT_APPROX,
Direction.Col, ReduceRow.getReduceRowFnObject());
}
else if ( opcode.equalsIgnoreCase(Opcodes.UNIQUE.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, Builtin.getBuiltinFnObject("unique"));
aggun = new UnarySketchOperator(agg, ReduceAll.getReduceAllFnObject(), Direction.RowCol, numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UNIQUER.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, Builtin.getBuiltinFnObject("unique"));
aggun = new UnarySketchOperator(agg, ReduceCol.getReduceColFnObject(), Direction.Row, numThreads);
}
else if ( opcode.equalsIgnoreCase(Opcodes.UNIQUEC.toString()) ) {
AggregateOperator agg = new AggregateOperator(0, Builtin.getBuiltinFnObject("unique"));
aggun = new UnarySketchOperator(agg, ReduceRow.getReduceRowFnObject(), Direction.Col, numThreads);
}
return aggun;
}