Class DefaultOpExecutioner
- java.lang.Object
-
- org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner
-
- All Implemented Interfaces:
OpExecutioner
public abstract class DefaultOpExecutioner extends Object implements OpExecutioner
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.nd4j.linalg.api.ops.executioner.OpExecutioner
OpExecutioner.ExecutionerType, OpExecutioner.ProfilingMode
-
-
Field Summary
Fields Modifier and Type Field Description protected AtomicBoolean
debug
protected OpExecutioner.ProfilingMode
profilingMode
protected AtomicBoolean
verbose
-
Constructor Summary
Constructors Constructor Description DefaultOpExecutioner()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description INDArray[]
allocateOutputArrays(CustomOp op)
Equivalent to callistatic List<String>
allOpenWorkspaces()
String
arrayInfo(INDArray arr)
INDArray
bitmapDecode(INDArray encoded, INDArray target)
INDArray
bitmapEncode(INDArray indArray, double threshold)
long
bitmapEncode(INDArray indArray, INDArray target, double threshold)
This method returns number of elements affected by encoderOpContext
buildContext()
This method returns OpContext which can be used (and reused) to execute custom opsList<LongShapeDescriptor>
calculateOutputShape(CustomOp op)
List<LongShapeDescriptor>
calculateOutputShape(CustomOp op, OpContext opContext)
protected void
checkForCompression(Op op)
protected void
checkForWorkspaces(CustomOp op, OpContext oc)
protected void
checkForWorkspaces(Op op, OpContext oc)
protected void
checkWorkspace(String opName, INDArray array)
void
commit()
This method ensures all operations that supposed to be executed at this moment, are executed and finished.DataBuffer
createConstantBuffer(double[] values, DataType desiredType)
DataBuffer
createConstantBuffer(float[] values, DataType desiredType)
DataBuffer
createConstantBuffer(int[] values, DataType desiredType)
DataBuffer
createConstantBuffer(long[] values, DataType desiredType)
This method returns constant buffer for the given jvm arrayDataBuffer
createShapeInfo(long[] shape, long[] stride, long elementWiseStride, char order, DataType dtype, boolean empty)
This method returns shapeInfo DataBufferDataBuffer
createShapeInfo(long[] shape, long[] stride, long elementWiseStride, char order, DataType dtype, long extras)
void
enableDebugMode(boolean reallyEnable)
void
enableVerboseMode(boolean reallyEnable)
void
exec(List<Aggregate> batch)
This method takes arbitrary sized list of aggregates, and packs them into batchesvoid
exec(Aggregate op)
<T extends Aggregate>
voidexec(Batch<T> batch)
This method executes previously built batchabstract INDArray
exec(BroadcastOp broadcast)
Execute a broadcast op, possibly along one or more dimensionsINDArray[]
exec(CustomOp op)
INDArray[]
exec(CustomOp op, OpContext context)
This method executes op with given contextvoid
exec(GridOp op)
Execute GridOpabstract INDArray
exec(Variance accumulation)
Execute an variance accumulation op, possibly along one or more dimensionsabstract INDArray
exec(IndexAccumulation op)
Execute an index accumulation along one or more dimensionsvoid
exec(MetaOp op)
Execute MetaOpabstract INDArray
exec(Op op)
Execute the operationabstract INDArray
exec(Op op, OpContext opContext)
Execute the operationINDArray
exec(RandomOp op)
This method executes specified RandomOp using default RNG available via Nd4j.getRandom()abstract INDArray
exec(RandomOp op, Random rng)
This method executes specific RandomOp against specified RNGabstract INDArray
exec(ReduceOp op)
Execute a reduceOp, possibly along one or more dimensionsabstract INDArray
exec(ScalarOp op)
Execute ScalarOpBroadcastOp
execAndReturn(BroadcastOp op)
Execute and return the result from a vector opCustomOp
execAndReturn(CustomOp op)
This method executes given CustomOp PLEASE NOTE: You're responsible for input/output validationVariance
execAndReturn(Variance op)
Execute and return the result from an accumulationIndexAccumulation
execAndReturn(IndexAccumulation op)
Execute and return the result from an index accumulationOp
execAndReturn(Op op)
Execute and return a result ndarray from the given opReduceOp
execAndReturn(ReduceOp op)
Execute and return the result from an accumulationScalarOp
execAndReturn(ScalarOp op)
Execute and return the result from a scalar opTransformOp
execAndReturn(TransformOp op)
Execute a TransformOp and return the resultMap<String,INDArray>
executeGraph(long id, Map<String,INDArray> map, Map<String,Integer> reverseMap)
protected static String
firstX(INDArray array, int x)
void
forgetGraph(long id)
Map<String,CustomOpDescriptor>
getCustomOperations()
This method returns names of all custom operations available in current backend, and their number of input/output argumentsProperties
getEnvironmentInformation()
This method return set of key/value and key/key/value objects, describing current environmentString
getLastOp()
This method returns opName of the last invoked opOpExecutioner.ProfilingMode
getProfilingMode()
Deprecated.String
getString(DataBuffer buffer, long index)
This method extracts String from Utf8BufferTADManager
getTADManager()
This method returns TADManager instance used for this OpExecutionerINDArray
getX(Op op, OpContext oc)
INDArray
getY(Op op, OpContext oc)
INDArray
getZ(Op op, OpContext oc)
INDArrayStatistics
inspectArray(INDArray array)
protected void
interceptIntDataType(Op op)
This method checks if any Op operand has data opType of INT, and throws exception if any.boolean
isDebug()
This method returns true if debug mode is enabled, false otherwiseboolean
isExperimentalMode()
boolean
isVerbose()
This method returns true if verbose mode is enabled, false otherwiseString
opInfoString(Op op, Optional<int[]> dimensions)
Get the information about the op in a String representation, for throwing more useful exceptions (mainly for debugging)void
printEnvironmentInformation()
This method prints out environmental information returned by getEnvironmentInformation() methodlong
profilingConfigurableHookIn(CustomOp op, OpContext oc)
long
profilingConfigurableHookIn(Op op, DataBuffer... tadBuffers)
void
profilingConfigurableHookOut(CustomOp op, OpContext oc, long timeStart)
void
profilingConfigurableHookOut(Op op, OpContext oc, long timeStart)
long
profilingHookIn(CustomOp op, OpContext oc)
Deprecated.long
profilingHookIn(Op op, DataBuffer... tadBuffers)
Deprecated.void
profilingHookOut(CustomOp op, OpContext oc, long timeStart)
Deprecated.void
profilingHookOut(Op op, OpContext oc, long timeStart)
Deprecated.void
push()
This method ensures all operations that supposed to be executed at this moment, are executed.void
registerGraph(long id, org.bytedeco.javacpp.Pointer graph)
void
scatterUpdate(ScatterUpdate.UpdateOp op, INDArray array, INDArray indices, INDArray updates, int[] axis)
Temporary hookvoid
setElementsThreshold(int threshold)
This method allows to set desired number of elements per thread, for performance optimization purposes.void
setProfilingConfig(ProfilerConfig config)
This method stores specified configuration.void
setProfilingMode(OpExecutioner.ProfilingMode mode)
Deprecated.void
setTadThreshold(int threshold)
This method allows to set desired number of sub-arrays per thread, for performance optimization purposes.void
setX(INDArray x, Op op, OpContext oc)
void
setY(INDArray y, Op op, OpContext oc)
void
setZ(INDArray z, Op op, OpContext oc)
TadPack
tadShapeInfoAndOffsets(INDArray array, int[] dimension)
This method returns host/device tad buffersINDArray
thresholdDecode(INDArray encoded, INDArray target)
This method decodes thresholds array, and puts it into target arrayINDArray
thresholdEncode(INDArray input, double threshold)
This method encodes array as thresholds, updating input array at the same timeINDArray
thresholdEncode(INDArray input, double threshold, Integer boundary)
This method encodes array as thresholds, updating input array at the same timeOpExecutioner.ExecutionerType
type()
This method returns type for this executioner instanceint
useCount(DataBuffer buffer)
This method returns reference use count from the Bufferstatic void
validateDataType(DataType expectedType, Object op, INDArray... operands)
static void
validateDataType(DataType expectedType, Op op)
Validate the data types for the given operation
-
-
-
Field Detail
-
profilingMode
protected OpExecutioner.ProfilingMode profilingMode
-
verbose
protected AtomicBoolean verbose
-
debug
protected AtomicBoolean debug
-
-
Method Detail
-
checkForCompression
protected void checkForCompression(Op op)
-
getLastOp
public String getLastOp()
Description copied from interface:OpExecutioner
This method returns opName of the last invoked op- Specified by:
getLastOp
in interfaceOpExecutioner
- Returns:
-
interceptIntDataType
protected void interceptIntDataType(Op op)
This method checks if any Op operand has data opType of INT, and throws exception if any.- Parameters:
op
-
-
exec
public abstract INDArray exec(Op op)
Description copied from interface:OpExecutioner
Execute the operation- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
op
- the operation to execute
-
exec
public abstract INDArray exec(Op op, OpContext opContext)
Description copied from interface:OpExecutioner
Execute the operation- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
op
- the operation to execute
-
execAndReturn
public Op execAndReturn(Op op)
Description copied from interface:OpExecutioner
Execute and return a result ndarray from the given op- Specified by:
execAndReturn
in interfaceOpExecutioner
- Parameters:
op
- the operation to execute- Returns:
- the result from the operation
-
execAndReturn
public TransformOp execAndReturn(TransformOp op)
Description copied from interface:OpExecutioner
Execute a TransformOp and return the result- Specified by:
execAndReturn
in interfaceOpExecutioner
- Parameters:
op
- the operation to execute
-
execAndReturn
public ReduceOp execAndReturn(ReduceOp op)
Description copied from interface:OpExecutioner
Execute and return the result from an accumulation- Specified by:
execAndReturn
in interfaceOpExecutioner
- Parameters:
op
- the operation to execute- Returns:
- the accumulated result
-
execAndReturn
public Variance execAndReturn(Variance op)
Description copied from interface:OpExecutioner
Execute and return the result from an accumulation- Specified by:
execAndReturn
in interfaceOpExecutioner
- Parameters:
op
- the operation to execute- Returns:
- the accumulated result
-
execAndReturn
public ScalarOp execAndReturn(ScalarOp op)
Description copied from interface:OpExecutioner
Execute and return the result from a scalar op- Specified by:
execAndReturn
in interfaceOpExecutioner
- Parameters:
op
- the operation to execute- Returns:
- the accumulated result
-
execAndReturn
public IndexAccumulation execAndReturn(IndexAccumulation op)
Description copied from interface:OpExecutioner
Execute and return the result from an index accumulation- Specified by:
execAndReturn
in interfaceOpExecutioner
- Parameters:
op
- the index accumulation operation to execute- Returns:
- the accumulated index
-
execAndReturn
public BroadcastOp execAndReturn(BroadcastOp op)
Description copied from interface:OpExecutioner
Execute and return the result from a vector op- Specified by:
execAndReturn
in interfaceOpExecutioner
-
exec
public INDArray[] exec(CustomOp op)
- Specified by:
exec
in interfaceOpExecutioner
-
exec
public abstract INDArray exec(ReduceOp op)
Description copied from interface:OpExecutioner
Execute a reduceOp, possibly along one or more dimensions- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
op
- the reduceOp- Returns:
- the reduceOp op
-
exec
public abstract INDArray exec(Variance accumulation)
Description copied from interface:OpExecutioner
Execute an variance accumulation op, possibly along one or more dimensions- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
accumulation
- the accumulation- Returns:
- the accmulation op
-
exec
public abstract INDArray exec(IndexAccumulation op)
Description copied from interface:OpExecutioner
Execute an index accumulation along one or more dimensions- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
op
- the index accumulation operation- Returns:
- result
-
exec
public abstract INDArray exec(BroadcastOp broadcast)
Description copied from interface:OpExecutioner
Execute a broadcast op, possibly along one or more dimensions- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
broadcast
- the accumulation- Returns:
- the broadcast op
-
exec
public void exec(MetaOp op)
Description copied from interface:OpExecutioner
Execute MetaOp- Specified by:
exec
in interfaceOpExecutioner
-
exec
public void exec(GridOp op)
Description copied from interface:OpExecutioner
Execute GridOp- Specified by:
exec
in interfaceOpExecutioner
-
exec
public <T extends Aggregate> void exec(Batch<T> batch)
Description copied from interface:OpExecutioner
This method executes previously built batch- Specified by:
exec
in interfaceOpExecutioner
-
exec
public void exec(Aggregate op)
- Specified by:
exec
in interfaceOpExecutioner
-
exec
public abstract INDArray exec(ScalarOp op)
Description copied from interface:OpExecutioner
Execute ScalarOp- Specified by:
exec
in interfaceOpExecutioner
- Returns:
-
exec
public void exec(List<Aggregate> batch)
Description copied from interface:OpExecutioner
This method takes arbitrary sized list of aggregates, and packs them into batches- Specified by:
exec
in interfaceOpExecutioner
-
exec
public INDArray exec(RandomOp op)
This method executes specified RandomOp using default RNG available via Nd4j.getRandom()- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
op
-
-
exec
public abstract INDArray exec(RandomOp op, Random rng)
This method executes specific RandomOp against specified RNG- Specified by:
exec
in interfaceOpExecutioner
- Parameters:
op
-rng
-
-
setProfilingMode
@Deprecated public void setProfilingMode(OpExecutioner.ProfilingMode mode)
Deprecated.Description copied from interface:OpExecutioner
This method specifies desired profiling mode- Specified by:
setProfilingMode
in interfaceOpExecutioner
-
setProfilingConfig
public void setProfilingConfig(ProfilerConfig config)
Description copied from interface:OpExecutioner
This method stores specified configuration.- Specified by:
setProfilingConfig
in interfaceOpExecutioner
-
getProfilingMode
@Deprecated public OpExecutioner.ProfilingMode getProfilingMode()
Deprecated.Description copied from interface:OpExecutioner
Ths method returns current profiling- Specified by:
getProfilingMode
in interfaceOpExecutioner
- Returns:
-
profilingHookIn
@Deprecated public long profilingHookIn(Op op, DataBuffer... tadBuffers)
Deprecated.
-
profilingHookIn
@Deprecated public long profilingHookIn(CustomOp op, OpContext oc)
Deprecated.
-
profilingHookOut
@Deprecated public void profilingHookOut(Op op, OpContext oc, long timeStart)
Deprecated.
-
profilingHookOut
@Deprecated public void profilingHookOut(CustomOp op, OpContext oc, long timeStart)
Deprecated.
-
profilingConfigurableHookIn
public long profilingConfigurableHookIn(Op op, DataBuffer... tadBuffers)
-
profilingConfigurableHookOut
public void profilingConfigurableHookOut(Op op, OpContext oc, long timeStart)
-
profilingConfigurableHookOut
public void profilingConfigurableHookOut(CustomOp op, OpContext oc, long timeStart)
-
validateDataType
public static void validateDataType(DataType expectedType, Op op)
Validate the data types for the given operation- Parameters:
expectedType
-op
-
-
validateDataType
public static void validateDataType(DataType expectedType, Object op, INDArray... operands)
-
getTADManager
public TADManager getTADManager()
Description copied from interface:OpExecutioner
This method returns TADManager instance used for this OpExecutioner- Specified by:
getTADManager
in interfaceOpExecutioner
- Returns:
-
getEnvironmentInformation
public Properties getEnvironmentInformation()
This method return set of key/value and key/key/value objects, describing current environment- Specified by:
getEnvironmentInformation
in interfaceOpExecutioner
- Returns:
-
printEnvironmentInformation
public void printEnvironmentInformation()
Description copied from interface:OpExecutioner
This method prints out environmental information returned by getEnvironmentInformation() method- Specified by:
printEnvironmentInformation
in interfaceOpExecutioner
-
push
public void push()
Description copied from interface:OpExecutioner
This method ensures all operations that supposed to be executed at this moment, are executed.- Specified by:
push
in interfaceOpExecutioner
-
commit
public void commit()
Description copied from interface:OpExecutioner
This method ensures all operations that supposed to be executed at this moment, are executed and finished.- Specified by:
commit
in interfaceOpExecutioner
-
thresholdEncode
public INDArray thresholdEncode(INDArray input, double threshold)
Description copied from interface:OpExecutioner
This method encodes array as thresholds, updating input array at the same time- Specified by:
thresholdEncode
in interfaceOpExecutioner
- Returns:
- encoded array is returned
-
thresholdEncode
public INDArray thresholdEncode(INDArray input, double threshold, Integer boundary)
Description copied from interface:OpExecutioner
This method encodes array as thresholds, updating input array at the same time- Specified by:
thresholdEncode
in interfaceOpExecutioner
- Returns:
- encoded array is returned
-
thresholdDecode
public INDArray thresholdDecode(INDArray encoded, INDArray target)
Description copied from interface:OpExecutioner
This method decodes thresholds array, and puts it into target array- Specified by:
thresholdDecode
in interfaceOpExecutioner
- Returns:
- target is returned
-
bitmapEncode
public long bitmapEncode(INDArray indArray, INDArray target, double threshold)
Description copied from interface:OpExecutioner
This method returns number of elements affected by encoder- Specified by:
bitmapEncode
in interfaceOpExecutioner
- Returns:
-
bitmapEncode
public INDArray bitmapEncode(INDArray indArray, double threshold)
- Specified by:
bitmapEncode
in interfaceOpExecutioner
- Returns:
-
bitmapDecode
public INDArray bitmapDecode(INDArray encoded, INDArray target)
- Specified by:
bitmapDecode
in interfaceOpExecutioner
- Returns:
-
getCustomOperations
public Map<String,CustomOpDescriptor> getCustomOperations()
Description copied from interface:OpExecutioner
This method returns names of all custom operations available in current backend, and their number of input/output arguments- Specified by:
getCustomOperations
in interfaceOpExecutioner
- Returns:
-
execAndReturn
public CustomOp execAndReturn(CustomOp op)
Description copied from interface:OpExecutioner
This method executes given CustomOp PLEASE NOTE: You're responsible for input/output validation- Specified by:
execAndReturn
in interfaceOpExecutioner
-
calculateOutputShape
public List<LongShapeDescriptor> calculateOutputShape(CustomOp op)
- Specified by:
calculateOutputShape
in interfaceOpExecutioner
-
calculateOutputShape
public List<LongShapeDescriptor> calculateOutputShape(CustomOp op, OpContext opContext)
- Specified by:
calculateOutputShape
in interfaceOpExecutioner
-
allocateOutputArrays
public INDArray[] allocateOutputArrays(CustomOp op)
Description copied from interface:OpExecutioner
Equivalent to calli- Specified by:
allocateOutputArrays
in interfaceOpExecutioner
-
enableDebugMode
public void enableDebugMode(boolean reallyEnable)
- Specified by:
enableDebugMode
in interfaceOpExecutioner
-
enableVerboseMode
public void enableVerboseMode(boolean reallyEnable)
- Specified by:
enableVerboseMode
in interfaceOpExecutioner
-
registerGraph
public void registerGraph(long id, org.bytedeco.javacpp.Pointer graph)
- Specified by:
registerGraph
in interfaceOpExecutioner
-
executeGraph
public Map<String,INDArray> executeGraph(long id, Map<String,INDArray> map, Map<String,Integer> reverseMap)
- Specified by:
executeGraph
in interfaceOpExecutioner
-
forgetGraph
public void forgetGraph(long id)
- Specified by:
forgetGraph
in interfaceOpExecutioner
-
setElementsThreshold
public void setElementsThreshold(int threshold)
This method allows to set desired number of elements per thread, for performance optimization purposes. I.e. if array contains 2048 elements, and threshold is set to 1024, 2 threads will be used for given op execution.Default value: 1024
- Specified by:
setElementsThreshold
in interfaceOpExecutioner
- Parameters:
threshold
-
-
setTadThreshold
public void setTadThreshold(int threshold)
This method allows to set desired number of sub-arrays per thread, for performance optimization purposes. I.e. if matrix has shape of 64 x 128, and threshold is set to 8, each thread will be processing 8 sub-arrays (sure, if you have 8 core cpu). If your cpu has, say, 4, cores, only 4 threads will be spawned, and each will process 16 sub-arraysDefault value: 8
- Specified by:
setTadThreshold
in interfaceOpExecutioner
- Parameters:
threshold
-
-
isVerbose
public boolean isVerbose()
Description copied from interface:OpExecutioner
This method returns true if verbose mode is enabled, false otherwise- Specified by:
isVerbose
in interfaceOpExecutioner
- Returns:
-
isDebug
public boolean isDebug()
Description copied from interface:OpExecutioner
This method returns true if debug mode is enabled, false otherwise- Specified by:
isDebug
in interfaceOpExecutioner
- Returns:
-
type
public OpExecutioner.ExecutionerType type()
Description copied from interface:OpExecutioner
This method returns type for this executioner instance- Specified by:
type
in interfaceOpExecutioner
- Returns:
-
getString
public String getString(DataBuffer buffer, long index)
Description copied from interface:OpExecutioner
This method extracts String from Utf8Buffer- Specified by:
getString
in interfaceOpExecutioner
- Returns:
-
scatterUpdate
public void scatterUpdate(ScatterUpdate.UpdateOp op, INDArray array, INDArray indices, INDArray updates, int[] axis)
Description copied from interface:OpExecutioner
Temporary hook- Specified by:
scatterUpdate
in interfaceOpExecutioner
-
opInfoString
public String opInfoString(Op op, Optional<int[]> dimensions)
Get the information about the op in a String representation, for throwing more useful exceptions (mainly for debugging)- Parameters:
op
-dimensions
- Use optional here for 3 states: null = "not an exec(Op, int... dim) call". empty = "exec(Op, null)". Otherwise present = "exec(Op,int[])" call- Returns:
-
isExperimentalMode
public boolean isExperimentalMode()
- Specified by:
isExperimentalMode
in interfaceOpExecutioner
-
buildContext
public OpContext buildContext()
Description copied from interface:OpExecutioner
This method returns OpContext which can be used (and reused) to execute custom ops- Specified by:
buildContext
in interfaceOpExecutioner
- Returns:
-
exec
public INDArray[] exec(CustomOp op, OpContext context)
Description copied from interface:OpExecutioner
This method executes op with given context- Specified by:
exec
in interfaceOpExecutioner
- Returns:
- method returns output arrays defined within context
-
inspectArray
public INDArrayStatistics inspectArray(INDArray array)
- Specified by:
inspectArray
in interfaceOpExecutioner
-
createShapeInfo
public DataBuffer createShapeInfo(long[] shape, long[] stride, long elementWiseStride, char order, DataType dtype, boolean empty)
Description copied from interface:OpExecutioner
This method returns shapeInfo DataBuffer- Specified by:
createShapeInfo
in interfaceOpExecutioner
- Returns:
-
createShapeInfo
public DataBuffer createShapeInfo(long[] shape, long[] stride, long elementWiseStride, char order, DataType dtype, long extras)
- Specified by:
createShapeInfo
in interfaceOpExecutioner
-
tadShapeInfoAndOffsets
public TadPack tadShapeInfoAndOffsets(INDArray array, int[] dimension)
Description copied from interface:OpExecutioner
This method returns host/device tad buffers- Specified by:
tadShapeInfoAndOffsets
in interfaceOpExecutioner
-
createConstantBuffer
public DataBuffer createConstantBuffer(long[] values, DataType desiredType)
Description copied from interface:OpExecutioner
This method returns constant buffer for the given jvm array- Specified by:
createConstantBuffer
in interfaceOpExecutioner
- Returns:
-
createConstantBuffer
public DataBuffer createConstantBuffer(int[] values, DataType desiredType)
- Specified by:
createConstantBuffer
in interfaceOpExecutioner
-
createConstantBuffer
public DataBuffer createConstantBuffer(float[] values, DataType desiredType)
- Specified by:
createConstantBuffer
in interfaceOpExecutioner
-
createConstantBuffer
public DataBuffer createConstantBuffer(double[] values, DataType desiredType)
- Specified by:
createConstantBuffer
in interfaceOpExecutioner
-
useCount
public int useCount(DataBuffer buffer)
Description copied from interface:OpExecutioner
This method returns reference use count from the Buffer- Specified by:
useCount
in interfaceOpExecutioner
- Returns:
-
-