Package apple.metalperformanceshaders
Class MPSRNNMatrixInferenceLayer
- java.lang.Object
-
- org.moe.natj.general.NativeObject
-
- org.moe.natj.objc.ObjCObject
-
- apple.NSObject
-
- apple.metalperformanceshaders.MPSKernel
-
- apple.metalperformanceshaders.MPSRNNMatrixInferenceLayer
-
- All Implemented Interfaces:
NSCoding,NSCopying,NSSecureCoding,NSObject
public class MPSRNNMatrixInferenceLayer extends MPSKernel
MPSRNNMatrixInferenceLayer [@dependency] This depends on Metal.framework The MPSRNNMatrixInferenceLayer specifies a recurrent neural network layer for inference on MPSMatrices. Currently two types of recurrent layers are supported: ones that operate with convolutions on images: @ref MPSRNNImageInferenceLayer and one that operates on matrices: @ref MPSRNNMatrixInferenceLayer. The former can be often used to implement the latter by using 1x1-matrices, but due to image size restrictions and performance, it is advisable to use @ref MPSRNNMatrixInferenceLayer for linear recurrent layers. A MPSRNNMatrixInferenceLayer is initialized using a @ref MPSRNNLayerDescriptor, which further specifies the recurrent network layer, or an array of @ref MPSRNNLayerDescriptors, which specifies a stack of recurrent layers, that can operate in parallel a subset of the inputs in a sequence of inputs and recurrent outputs. Note that currently stacks with bidirectionally traversing encode functions do not support starting from a previous set of recurrent states, but this can be achieved quite easily by defining two separate unidirectional stacks of layers, and running the same input sequence on them separately (one forwards and one backwards) and ultimately combining the two result sequences as desired with auxiliary functions. The input and output vectors in encode calls are stored as rows of the input and output matrices and MPSRNNMatrixInferenceLayer supports matrices with decreasing number of rows: The row-indices identify the different sequences that may be of different lengths - for example if we have three sequences: ( x1, x2, x3 ), ( y1, y2, y3, y4 ) and ( z1, z2 ) of vectors xi, yi and zi, then these can be inserted together as a batch to the sequence encoding kernel by using the matrices: [@code] ( y1 ) ( y2 ) ( y3 ) ( y4 ) m1 = ( x1 ), m2 = ( x2 ), m3 = ( x3 ), m4 = ( z1 ) ( z2 ) [@endcode] If a recurrent output state is requested then it will contain the state corresponding to last inputs to each sequence and if all the intermediate states are requested (see storeAllIntermediateStates), then the shorter sequences will be propagated by copying the state of the previous output if the input vector is not present in the sequence - in the example above the output states would be: [@code] ( s_y1 ) ( s_y2 ) ( s_y3 ) ( s_y4 ) s1 = ( s_x1 ), s2 = ( s_x2 ), s3 = ( s_x3 ), s4 = ( s_x3 ) ( s_z1 ) ( s_z2 ) ( s_z2 ) ( s_z2 ) [@endcode] The mathematical operation described in the linear transformations of @ref MPSRNNSingleGateDescriptor [@ref] MPSLSTMDescriptor and @ref MPSGRUDescriptor are y^T = W x^T <=> y = x W^T, where x is the matrix containing the input vectors as rows, y is the matrix containing the output vectors as rows and W is the weight matrix.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class apple.NSObject
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedMPSRNNMatrixInferenceLayer(org.moe.natj.general.Pointer peer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean_supportsSecureCoding()This property must return YES on all classes that allow secure coding.static booleanaccessInstanceVariablesDirectly()static MPSRNNMatrixInferenceLayeralloc()static java.lang.ObjectallocWithZone(org.moe.natj.general.ptr.VoidPtr zone)static booleanautomaticallyNotifiesObserversForKey(java.lang.String key)longbidirectionalCombineMode()[@property] bidirectionalCombineMode Defines how to combine the output-results, when encoding bidirectional layers using [@ref] encodeBidirectionalSequenceToCommandBuffer.static voidcancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)static voidcancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget, org.moe.natj.objc.SEL aSelector, java.lang.Object anArgument)static NSArray<java.lang.String>classFallbacksForKeyedArchiver()static org.moe.natj.objc.ClassclassForKeyedUnarchiver()java.lang.ObjectcopyWithZoneDevice(org.moe.natj.general.ptr.VoidPtr zone, MTLDevice device)Make a copy of this kernel for a new device - @see MPSKernelstatic java.lang.StringdebugDescription_static()static java.lang.Stringdescription_static()voidencodeBidirectionalSequenceToCommandBufferSourceSequenceDestinationForwardMatricesDestinationBackwardMatrices(MTLCommandBuffer commandBuffer, NSArray<? extends MPSMatrix> sourceSequence, NSArray<? extends MPSMatrix> destinationForwardMatrices, NSArray<? extends MPSMatrix> destinationBackwardMatrices)Encode an MPSRNNMatrixInferenceLayer kernel stack for an input matrix sequences into a command buffer bidirectionally.voidencodeSequenceToCommandBufferSourceMatricesDestinationMatricesRecurrentInputStateRecurrentOutputStates(MTLCommandBuffer commandBuffer, NSArray<? extends MPSMatrix> sourceMatrices, NSArray<? extends MPSMatrix> destinationMatrices, MPSRNNRecurrentMatrixState recurrentInputState, NSMutableArray<MPSRNNRecurrentMatrixState> recurrentOutputStates)voidencodeSequenceToCommandBufferSourceMatricesSourceOffsetsDestinationMatricesDestinationOffsetsRecurrentInputStateRecurrentOutputStates(MTLCommandBuffer commandBuffer, NSArray<? extends MPSMatrix> sourceMatrices, org.moe.natj.general.ptr.NUIntPtr sourceOffsets, NSArray<? extends MPSMatrix> destinationMatrices, org.moe.natj.general.ptr.NUIntPtr destinationOffsets, MPSRNNRecurrentMatrixState recurrentInputState, NSMutableArray<MPSRNNRecurrentMatrixState> recurrentOutputStates)Encode an MPSRNNMatrixInferenceLayer kernel (stack) for a sequence of inputs into a command buffer.static longhash_static()MPSRNNMatrixInferenceLayerinit()MPSRNNMatrixInferenceLayerinitWithCoder(NSCoder aDecoder)NS_DESIGNATED_INITIALIZERMPSRNNMatrixInferenceLayerinitWithCoderDevice(NSCoder aDecoder, java.lang.Object device)NSSecureCoding compatability See @ref MPSKernel#initWithCoder.MPSRNNMatrixInferenceLayerinitWithDevice(java.lang.Object device)Standard init with default properties per filter typeMPSRNNMatrixInferenceLayerinitWithDeviceRnnDescriptor(MTLDevice device, MPSRNNDescriptor rnnDescriptor)Initializes a linear (fully connected) RNN kernelMPSRNNMatrixInferenceLayerinitWithDeviceRnnDescriptors(MTLDevice device, NSArray<? extends MPSRNNDescriptor> rnnDescriptors)Initializes a kernel that implements a stack of linear (fully connected) RNN layerslonginputFeatureChannels()[@property] inputFeatureChannels The number of feature channels input vector/matrix.static NSObject.Function_instanceMethodForSelector_retinstanceMethodForSelector(org.moe.natj.objc.SEL aSelector)static NSMethodSignatureinstanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)static booleaninstancesRespondToSelector(org.moe.natj.objc.SEL aSelector)static booleanisSubclassOfClass(org.moe.natj.objc.Class aClass)static NSSet<java.lang.String>keyPathsForValuesAffectingValueForKey(java.lang.String key)static java.lang.Objectnew_objc()longnumberOfLayers()[@property] numberOfLayers Number of layers in the filter-stack.longoutputFeatureChannels()[@property] outputFeatureChannels The number of feature channels in the output vector/matrix.booleanrecurrentOutputIsTemporary()[@property] recurrentOutputIsTemporary How output states from @ref encodeSequenceToCommandBuffer are constructed.static booleanresolveClassMethod(org.moe.natj.objc.SEL sel)static booleanresolveInstanceMethod(org.moe.natj.objc.SEL sel)voidsetBidirectionalCombineMode(long value)[@property] bidirectionalCombineMode Defines how to combine the output-results, when encoding bidirectional layers using [@ref] encodeBidirectionalSequenceToCommandBuffer.voidsetRecurrentOutputIsTemporary(boolean value)[@property] recurrentOutputIsTemporary How output states from @ref encodeSequenceToCommandBuffer are constructed.voidsetStoreAllIntermediateStates(boolean value)[@property] storeAllIntermediateStates If YES then calls to @ref encodeSequenceToCommandBuffer return every recurrent state in the array: recurrentOutputStates.static voidsetVersion_static(long aVersion)booleanstoreAllIntermediateStates()[@property] storeAllIntermediateStates If YES then calls to @ref encodeSequenceToCommandBuffer return every recurrent state in the array: recurrentOutputStates.static org.moe.natj.objc.Classsuperclass_static()static booleansupportsSecureCoding()static longversion_static()-
Methods inherited from class apple.metalperformanceshaders.MPSKernel
copyWithZone, device, encodeWithCoder, label, options, setLabel, setOptions
-
Methods inherited from class apple.NSObject
accessibilityActivate, accessibilityActivationPoint, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedLabel, accessibilityAttributedUserInputLabels, accessibilityAttributedValue, accessibilityContainerType, accessibilityCustomActions, accessibilityCustomRotors, accessibilityDecrement, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsHidden, accessibilityFrame, accessibilityHint, accessibilityIncrement, accessibilityLabel, accessibilityLanguage, accessibilityNavigationStyle, accessibilityPath, accessibilityPerformEscape, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityScroll, accessibilityTextualContext, accessibilityTraits, accessibilityUserInputLabels, accessibilityValue, accessibilityViewIsModal, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, hash, indexOfAccessibilityElement, isAccessibilityElement, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivationPoint, setAccessibilityAttributedHint, setAccessibilityAttributedLabel, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedValue, setAccessibilityContainerType, setAccessibilityCustomActions, setAccessibilityCustomRotors, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsHidden, setAccessibilityFrame, setAccessibilityHint, setAccessibilityLabel, setAccessibilityLanguage, setAccessibilityNavigationStyle, setAccessibilityPath, setAccessibilityRespondsToUserInteraction, setAccessibilityTextualContext, setAccessibilityTraits, setAccessibilityUserInputLabels, setAccessibilityValue, setAccessibilityViewIsModal, setIsAccessibilityElement, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, superclass, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKey
-
-
-
-
Method Detail
-
accessInstanceVariablesDirectly
public static boolean accessInstanceVariablesDirectly()
-
alloc
public static MPSRNNMatrixInferenceLayer alloc()
-
allocWithZone
public static java.lang.Object allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
-
automaticallyNotifiesObserversForKey
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
-
bidirectionalCombineMode
public long bidirectionalCombineMode()
[@property] bidirectionalCombineMode Defines how to combine the output-results, when encoding bidirectional layers using [@ref] encodeBidirectionalSequenceToCommandBuffer. Defaults to @ref MPSRNNBidirectionalCombineModeNone.
-
cancelPreviousPerformRequestsWithTarget
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
-
cancelPreviousPerformRequestsWithTargetSelectorObject
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget, org.moe.natj.objc.SEL aSelector, java.lang.Object anArgument)
-
classFallbacksForKeyedArchiver
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
-
classForKeyedUnarchiver
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
-
copyWithZoneDevice
public java.lang.Object copyWithZoneDevice(org.moe.natj.general.ptr.VoidPtr zone, MTLDevice device)Make a copy of this kernel for a new device - @see MPSKernel- Overrides:
copyWithZoneDevicein classMPSKernel- Parameters:
zone- The NSZone in which to allocate the objectdevice- The device for the new MPSKernel. If nil, then use self.device.- Returns:
- a pointer to a copy of this MPSKernel. This will fail, returning nil if the device is not supported. Devices must be MTLFeatureSet_iOS_GPUFamily2_v1 or later.
-
debugDescription_static
public static java.lang.String debugDescription_static()
-
description_static
public static java.lang.String description_static()
-
encodeBidirectionalSequenceToCommandBufferSourceSequenceDestinationForwardMatricesDestinationBackwardMatrices
public void encodeBidirectionalSequenceToCommandBufferSourceSequenceDestinationForwardMatricesDestinationBackwardMatrices(MTLCommandBuffer commandBuffer, NSArray<? extends MPSMatrix> sourceSequence, NSArray<? extends MPSMatrix> destinationForwardMatrices, NSArray<? extends MPSMatrix> destinationBackwardMatrices)
Encode an MPSRNNMatrixInferenceLayer kernel stack for an input matrix sequences into a command buffer bidirectionally. The operation proceeds as follows: The first source matrix x0 is passed through all forward traversing layers in the stack, ie. those that were initialized with MPSRNNSequenceDirectionForward, recurrent input is assumed zero. This produces forward output yf0 and recurrent states hf00, hf01, hf02, ... hf0n, one for each forward layer in the stack. Then x1 is passed to forward layers together with recurrent state hf00, hf01, ..., hf0n, which produces yf1, and hf10,... This procedure is iterated until the last matrix in the input sequence x_(N-1), which produces forward output yf(N-1). The backwards layers iterate the same sequence backwards, starting from input x_(N-1) (recurrent state zero), that produces yb(N-1) and recurrent output hb(N-1)0, hf(N-1)1, ... hb(N-1)m, one for each backwards traversing layer. Then the backwards layers handle input x_(N-2) using recurrent state hb(N-1)0, ..., et cetera, until the first matrix of the sequence is computed, producing output yb0. The result of the operation is either pair of sequences ({yf0, yf1, ... , yf(N-1)}, {yb0, yb1, ... , yb(N-1)}) or a combined sequence, {(yf0 + yb0), ... , (yf(N-1) + yb(N-1)) }, where '+' stands either for sum, or concatenation along feature channels, as specified by @ref bidirectionalCombineMode.- Parameters:
commandBuffer- A valid MTLCommandBuffer to receive the encoded filtersourceSequence- An array of valid MPSMatrix objects containing the source matrix sequence (x0, x1, ... x_n-1).destinationForwardMatrices- An array of valid MPSMatrices to be overwritten by result from forward input matrices. If bidirectionalCombineMode is either MPSRNNBidirectionalCombineModeAdd or MPSRNNBidirectionalCombineModeConcatenate, then will contain the combined results. destinationForwardMatrix may not alias with any of the source matrices.destinationBackwardMatrices- If bidirectionalCombineMode is MPSRNNBidirectionalCombineModeNone, then must be an array of valid MPSMatrices that will be overwritten by result from backward input matrices. Otherwise this parameter is ignored and can be nil. destinationBackwardMatrices may not alias to any of the source matrices.
-
encodeSequenceToCommandBufferSourceMatricesDestinationMatricesRecurrentInputStateRecurrentOutputStates
public void encodeSequenceToCommandBufferSourceMatricesDestinationMatricesRecurrentInputStateRecurrentOutputStates(MTLCommandBuffer commandBuffer, NSArray<? extends MPSMatrix> sourceMatrices, NSArray<? extends MPSMatrix> destinationMatrices, MPSRNNRecurrentMatrixState recurrentInputState, NSMutableArray<MPSRNNRecurrentMatrixState> recurrentOutputStates)
-
hash_static
public static long hash_static()
-
init
public MPSRNNMatrixInferenceLayer init()
-
initWithCoder
public MPSRNNMatrixInferenceLayer initWithCoder(NSCoder aDecoder)
Description copied from interface:NSCodingNS_DESIGNATED_INITIALIZER- Specified by:
initWithCoderin interfaceNSCoding- Overrides:
initWithCoderin classMPSKernel
-
initWithCoderDevice
public MPSRNNMatrixInferenceLayer initWithCoderDevice(NSCoder aDecoder, java.lang.Object device)
NSSecureCoding compatability See @ref MPSKernel#initWithCoder.- Overrides:
initWithCoderDevicein classMPSKernel- Parameters:
aDecoder- The NSCoder subclass with your serialized MPSRNNMatrixInferenceLayerdevice- The MTLDevice on which to make the MPSRNNMatrixInferenceLayer- Returns:
- A new MPSRNNMatrixInferenceLayer object, or nil if failure.
-
initWithDevice
public MPSRNNMatrixInferenceLayer initWithDevice(java.lang.Object device)
Description copied from class:MPSKernelStandard init with default properties per filter type- Overrides:
initWithDevicein classMPSKernel- Parameters:
device- The device that the filter will be used on. May not be NULL.- Returns:
- a pointer to the newly initialized object. This will fail, returning nil if the device is not supported. Devices must be MTLFeatureSet_iOS_GPUFamily2_v1 or later.
-
initWithDeviceRnnDescriptor
public MPSRNNMatrixInferenceLayer initWithDeviceRnnDescriptor(MTLDevice device, MPSRNNDescriptor rnnDescriptor)
Initializes a linear (fully connected) RNN kernel- Parameters:
device- The MTLDevice on which this MPSRNNMatrixLayer filter will be usedrnnDescriptor- The descriptor that defines the RNN layer- Returns:
- A valid MPSRNNMatrixInferenceLayer object or nil, if failure.
-
initWithDeviceRnnDescriptors
public MPSRNNMatrixInferenceLayer initWithDeviceRnnDescriptors(MTLDevice device, NSArray<? extends MPSRNNDescriptor> rnnDescriptors)
Initializes a kernel that implements a stack of linear (fully connected) RNN layers- Parameters:
device- The MTLDevice on which this MPSRNNMatrixLayer filter will be usedrnnDescriptors- An array of RNN descriptors that defines a stack of RNN layers, starting at index zero. The number of layers in stack is the number of entries in the array. All entries in the array must be valid MPSRNNDescriptors.- Returns:
- A valid MPSRNNMatrixInferenceLayer object or nil, if failure.
-
inputFeatureChannels
public long inputFeatureChannels()
[@property] inputFeatureChannels The number of feature channels input vector/matrix.
-
instanceMethodForSelector
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
-
instanceMethodSignatureForSelector
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
-
instancesRespondToSelector
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
-
isSubclassOfClass
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
-
keyPathsForValuesAffectingValueForKey
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
-
new_objc
public static java.lang.Object new_objc()
-
numberOfLayers
public long numberOfLayers()
[@property] numberOfLayers Number of layers in the filter-stack. This will be one when using initWithDevice:rnnDescriptor to initialize this filter and the number of entries in the array 'rnnDescriptors' when initializing this filter with initWithDevice:rnnDescriptors.
-
outputFeatureChannels
public long outputFeatureChannels()
[@property] outputFeatureChannels The number of feature channels in the output vector/matrix.
-
recurrentOutputIsTemporary
public boolean recurrentOutputIsTemporary()
[@property] recurrentOutputIsTemporary How output states from @ref encodeSequenceToCommandBuffer are constructed. Defaults to NO. For reference @see MPSState.
-
resolveClassMethod
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
-
resolveInstanceMethod
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
-
setBidirectionalCombineMode
public void setBidirectionalCombineMode(long value)
[@property] bidirectionalCombineMode Defines how to combine the output-results, when encoding bidirectional layers using [@ref] encodeBidirectionalSequenceToCommandBuffer. Defaults to @ref MPSRNNBidirectionalCombineModeNone.
-
setRecurrentOutputIsTemporary
public void setRecurrentOutputIsTemporary(boolean value)
[@property] recurrentOutputIsTemporary How output states from @ref encodeSequenceToCommandBuffer are constructed. Defaults to NO. For reference @see MPSState.
-
setStoreAllIntermediateStates
public void setStoreAllIntermediateStates(boolean value)
[@property] storeAllIntermediateStates If YES then calls to @ref encodeSequenceToCommandBuffer return every recurrent state in the array: recurrentOutputStates. Defaults to NO.
-
setVersion_static
public static void setVersion_static(long aVersion)
-
storeAllIntermediateStates
public boolean storeAllIntermediateStates()
[@property] storeAllIntermediateStates If YES then calls to @ref encodeSequenceToCommandBuffer return every recurrent state in the array: recurrentOutputStates. Defaults to NO.
-
superclass_static
public static org.moe.natj.objc.Class superclass_static()
-
supportsSecureCoding
public static boolean supportsSecureCoding()
-
_supportsSecureCoding
public boolean _supportsSecureCoding()
Description copied from interface:NSSecureCodingThis property must return YES on all classes that allow secure coding. Subclasses of classes that adopt NSSecureCoding and override initWithCoder: must also override this method and return YES. The Secure Coding Guide should be consulted when writing methods that decode data.- Specified by:
_supportsSecureCodingin interfaceNSSecureCoding- Overrides:
_supportsSecureCodingin classMPSKernel
-
version_static
public static long version_static()
-
encodeSequenceToCommandBufferSourceMatricesSourceOffsetsDestinationMatricesDestinationOffsetsRecurrentInputStateRecurrentOutputStates
public void encodeSequenceToCommandBufferSourceMatricesSourceOffsetsDestinationMatricesDestinationOffsetsRecurrentInputStateRecurrentOutputStates(MTLCommandBuffer commandBuffer, NSArray<? extends MPSMatrix> sourceMatrices, org.moe.natj.general.ptr.NUIntPtr sourceOffsets, NSArray<? extends MPSMatrix> destinationMatrices, org.moe.natj.general.ptr.NUIntPtr destinationOffsets, MPSRNNRecurrentMatrixState recurrentInputState, NSMutableArray<MPSRNNRecurrentMatrixState> recurrentOutputStates)
Encode an MPSRNNMatrixInferenceLayer kernel (stack) for a sequence of inputs into a command buffer. Note that when encoding using this function the @see layerSequenceDirection is ignored and the layer stack operates as if all layers were forward feeding layers. In order to run bidirectional sequences use @ref encodeBidirectionalSequenceToCommandBuffer:sourceSequence: or alternatively run two layer stacks and combine results at the end using utility functions. [@code] MPSRNNRecurrentMatrixState* recurrent0 = nil; [filter encodeToCommandBuffer: cmdBuf sourceMatrix: source0 destinationMatrix: destination0 recurrentInputState: nil recurrentOutputState: &recurrent0]; [@endcode] Then use it for the next input in sequence: [@code] [filter encodeToCommandBuffer: cmdBuf sourceMatrix: source1 destinationMatrix: destination1 recurrentInputState: recurrent0 recurrentOutputState: &recurrent0]; [@endcode] And discard recurrent output of the third input: [@code] [filter encodeToCommandBuffer: cmdBuf sourceMatrix: source2 destinationMatrix: destination2 recurrentInputState: recurrent0 recurrentOutputState: nil]; [@endcode]- Parameters:
commandBuffer- A valid MTLCommandBuffer to receive the encoded filtersourceMatrices- An array of valid MPSMatrix objects containing the sequence of source matrices.sourceOffsets- An array of byte-offsets into the sourceMatrices, if nil zeros are assumed and if not nil must contain offset for every matrix in sourceMatrices.destinationMatrices- An array valid MPSMatrices to be overwritten by result matrix sequence. destinationMatrices may not alias sourceMatrices.destinationOffsets- An array of byte-offsets into the destinationMatrices, if nil zeros are assumed and if not nil must contain offset for every matrix in destinationMatrices.recurrentInputState- An optional state containing the output matrices and memory cells (for LSTMs) of the layer obtained from the previous input matrices in a sequence of inputs. Has to be the output of a previous call to this function or nil (assumed zero). Note: can be one of the states returned in @ref intermediateRecurrentStates.recurrentOutputStates- An optional array that will contain the recurrent output states. If nil then the recurrent output state is discarded. If @ref storeAllIntermediateStates is YES, then all intermediate states of the sequence are returned in the array, the first one corresponding to the first input in the sequence, otherwise only the last recurrent output state is returned. If recurrentOutputIsTemporary is YES and then all returned recurrent states will be temporary. @see MPSState:isTemporary. Example: In order to get a new state one can do the following:
-
-