@Override public Accumulation execAndReturn(Accumulation op) { return (Accumulation) exec(op); }
@Override public IndexAccumulation execAndReturn(IndexAccumulation op) { return (IndexAccumulation) exec(op); }
/** * Execute and return the result from a vector op * * @param op */ @Override public INDArray execAndReturn(ShapeOp op) { exec(op); return op.z(); }
@Override public INDArray execAndReturn(TransformOp op) { Op result = exec(op); TransformOp t = (TransformOp) result; return t.z(); }
/** * This method executes specified RandomOp using default RNG available via Nd4j.getRandom() * * @param op */ @Override public INDArray exec(RandomOp op) { return exec(op, Nd4j.getRandom()); }
@Override public INDArray execAndReturn(ScalarOp op) { return exec(op).z(); }
@Override public INDArray exec(Variance accumulation, boolean biasCorrected, int... dimension) { accumulation.setBiasCorrected(biasCorrected); return exec(accumulation, dimension); }
@Override public INDArray execAndReturn(BroadcastOp op) { return exec(op).z(); }
@Override public Accumulation execAndReturn(Accumulation op) { return (Accumulation) exec(op); }
@Override public IndexAccumulation execAndReturn(IndexAccumulation op) { return (IndexAccumulation) exec(op); }
@Override public Op exec(Op op, int... dimension) { checkForCompression(op); Arrays.sort(dimension); return super.exec(op, dimension); }
@Override public Op exec(Op op, int... dimension) { checkForCompression(op); Arrays.sort(dimension); return super.exec(op, dimension); }
@Override public INDArray exec(Variance accumulation, boolean biasCorrected, int... dimension) { accumulation.setBiasCorrected(biasCorrected); return exec(accumulation, dimension); }
@Override public INDArray execAndReturn(TransformOp op) { Op result = exec(op); TransformOp t = (TransformOp) result; return t.z(); }
/** * This method executes specified RandomOp using default RNG available via Nd4j.getRandom() * * @param op */ @Override public INDArray exec(RandomOp op) { return exec(op, Nd4j.getRandom()); }
@Override public INDArray execAndReturn(ScalarOp op) { return exec(op).z(); }
@Override public INDArray execAndReturn(BroadcastOp op) { return exec(op).z(); }
@Override public Op exec(Op op) { //linear views and oblong offsets can't be handled by the gpu (due to the way the buffers are interpeted as vectors) if(op.x() instanceof LinearViewNDArray || op.x() instanceof IComplexNDArray || op.x().offset() > 0 && op.x().shape().length >= 2) return super.exec(op); if (op instanceof TransformOp) { TransformOp t = (TransformOp) op; invoke(t); } else if (op instanceof Accumulation) { Accumulation acc = (Accumulation) op; invoke(acc); } else if (op instanceof ScalarOp) { ScalarOp sc = (ScalarOp) op; invoke(sc); } return op; } @Override