use of org.nd4j.linalg.api.ops.impl.accum.Variance in project nd4j by deeplearning4j.
the class CudaGridExecutioner method pushToGrid.
/**
* This method adds op into GridOp queue
*
* @return
*/
protected void pushToGrid(OpDescriptor descriptor, boolean flush) {
// we should just add op to queue here
// deviceQueues.get().add(descriptor);
// FIXME: following code should be removed, since it's just executing supers instead of batching
execCounter.incrementAndGet();
Op op = descriptor.getOp();
int[] dimensions = descriptor.getDimensions();
if (op instanceof TransformOp) {
TransformOp t = (TransformOp) op;
if (flush)
flushQueue();
// logger.info("Sending TransformOp to CudaExecutioner");
super.invoke(t);
} else if (op instanceof Variance) {
Variance acc = (Variance) op;
if (flush)
flushQueue();
super.naiveExec(acc, dimensions);
} else if (op instanceof Accumulation) {
Accumulation acc = (Accumulation) op;
if (flush)
flushQueue();
// logger.info("Sending AccumulationOp to CudaExecutioner: {}", Arrays.toString(dimensions));
super.naiveExec(acc, dimensions);
} else if (op instanceof ScalarOp) {
ScalarOp sc = (ScalarOp) op;
if (flush)
flushQueue();
// logger.info("Sending ScalarOp to CudaExecutioner");
super.invoke(sc);
} else if (op instanceof BroadcastOp) {
BroadcastOp broadcastOp = (BroadcastOp) op;
if (flush)
flushQueue();
// logger.info("Sending BroadcastOp to CudaExecutioner");
if (dimensions != null) {
super.exec(broadcastOp, dimensions);
} else {
super.invoke(broadcastOp);
}
} else if (op instanceof IndexAccumulation) {
IndexAccumulation indexAccumulation = (IndexAccumulation) op;
if (flush)
flushQueue();
// logger.info("Sending IndexAccumulationOp to CudaExecutioner");
super.exec(indexAccumulation, dimensions);
} else if (op instanceof MetaOp) {
// logger.info("Executing MetaOp");
metaCounter.incrementAndGet();
exec((MetaOp) op);
} else if (op instanceof GridOp) {
// logger.info("Executing GridOp");
exec((GridOp) op);
}
}
Aggregations