nd4j-backends/nd4j-backend-impls/nd4j-cuda/src/main/java/org/nd4j/linalg/jcublas/ops/executioner/CudaGridExecutioner.java
@Override
    public Op exec(Op op) {
        /*
            We pass this op to GridProcessor through check for possible MetaOp concatenation
            Also, it's the GriOp entry point
         */
        checkForCompression(op);

        invokeWatchdog(op);

        if (op instanceof Accumulation) {
            exec((Accumulation) op, new int[] {Integer.MAX_VALUE});
        } else if (op instanceof IndexAccumulation) {
            exec((IndexAccumulation) op, new int[] {Integer.MAX_VALUE});
        } else if (op instanceof ScalarOp || op instanceof TransformOp) {
            // the only entry place for TADless ops
            processAsGridOp(op);
        } else if (op instanceof BroadcastOp) {
            invoke((BroadcastOp) op);
        } else {
            //logger.info("Random op: {}", op.getClass().getSimpleName());
            pushToGrid(new OpDescriptor(op));
        }

        return op;
    }
@Override
    public Op exec(Op op) {
        /*
            We pass this op to GridProcessor through check for possible MetaOp concatenation
            Also, it's the GriOp entry point
         */
        checkForCompression(op);

        invokeWatchdog(op);

        if (op instanceof Accumulation) {
            exec((Accumulation) op, new int[] {Integer.MAX_VALUE});
        } else if (op instanceof IndexAccumulation) {
            exec((IndexAccumulation) op, new int[] {Integer.MAX_VALUE});
        } else if (op instanceof ScalarOp || op instanceof TransformOp) {
            // the only entry place for TADless ops
            processAsGridOp(op);
        } else if (op instanceof BroadcastOp) {
            invoke((BroadcastOp) op);
        } else {
            //logger.info("Random op: {}", op.getClass().getSimpleName());
            pushToGrid(new OpDescriptor(op));
        }

        return op;
    }
@ Override public Op exec ( Op op ) { /*
            We pass this op to GridProcessor through check for possible MetaOp concatenation
            Also, it's the GriOp entry point
         */ checkForCompression ( op ) ; invokeWatchdog ( op ) ; if ( op instanceof Accumulation ) { exec ( ( Accumulation ) op , new int [ ] { Integer . MAX_VALUE } ) ; } else if ( op instanceof IndexAccumulation ) { exec ( ( IndexAccumulation ) op , new int [ ] { Integer . MAX_VALUE } ) ; } else if ( op instanceof ScalarOp || op instanceof TransformOp ) { // the only entry place for TADless ops processAsGridOp ( op ) ; } else if ( op instanceof BroadcastOp ) { invoke ( ( BroadcastOp ) op ) ; } else { //logger.info("Random op: {}", op.getClass().getSimpleName()); pushToGrid ( new OpDescriptor ( op ) ) ; } return op ; }
This is one of the main entry points for ops that are executed without respect to dimension.

Developers note: For CudaGridExecutioner that's also the MetaOp/GridOp creation point.

@param op
@return
This is one of the main entry points for ops that are executed without respect to dimension .