Package apple.metalperformanceshaders
Class MPSCNNConvolutionWeightsAndBiasesState
- java.lang.Object
-
- org.moe.natj.general.NativeObject
-
- org.moe.natj.objc.ObjCObject
-
- apple.NSObject
-
- apple.metalperformanceshaders.MPSState
-
- apple.metalperformanceshaders.MPSCNNConvolutionWeightsAndBiasesState
-
- All Implemented Interfaces:
NSObject
public class MPSCNNConvolutionWeightsAndBiasesState extends MPSState
MPSCNNConvolutionWeightsAndBiasesState The MPSCNNConvolutionWeightsAndBiasesState is returned by exportWeightsAndBiasesWithCommandBuffer: method on MPSCNNConvolution object. This is mainly used for GPU side weights/biases update process. During training, application can keep a copy of weights, velocity, momentum MTLBuffers in its data source, update the weights (in-place or out of place) with gradients obtained from MPSCNNConvolutionGradientState and call [MPSCNNConvolution reloadWeightsAndBiasesWithCommandBuffer] with resulting updated MTLBuffer. If application does not want to keep a copy of weights/biases, it can call [MPSCNNConvolution exportWeightsAndBiasesWithCommandBuffer:] to get the current weights from convolution itself, do the updated and call reloadWithCommandBuffer.
-
-
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 protectedMPSCNNConvolutionWeightsAndBiasesState(org.moe.natj.general.Pointer peer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static booleanaccessInstanceVariablesDirectly()static MPSCNNConvolutionWeightsAndBiasesStatealloc()static java.lang.ObjectallocWithZone(org.moe.natj.general.ptr.VoidPtr zone)static booleanautomaticallyNotifiesObserversForKey(java.lang.String key)MTLBufferbiases()[@property] biases A buffer that contains the biases.longbiasesOffset()[@property] biasesOffset Offset at which weights start in biases buffer Default value is 0.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()static java.lang.StringdebugDescription_static()static java.lang.Stringdescription_static()static longhash_static()MPSCNNConvolutionWeightsAndBiasesStateinit()MPSCNNConvolutionWeightsAndBiasesStateinitWithDeviceBufferSize(MTLDevice device, long bufferSize)MPSCNNConvolutionWeightsAndBiasesStateinitWithDeviceCnnConvolutionDescriptor(MTLDevice device, MPSCNNConvolutionDescriptor descriptor)Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided convolution descriptor Create weights and biases buffers of appropriate sizeMPSCNNConvolutionWeightsAndBiasesStateinitWithDeviceResourceList(MTLDevice device, MPSStateResourceList resourceList)Initialize a non-temporary state to hold a number of textures and buffers The allocation of each resource will be deferred until it is needed.MPSCNNConvolutionWeightsAndBiasesStateinitWithDeviceTextureDescriptor(MTLDevice device, MTLTextureDescriptor descriptor)MPSCNNConvolutionWeightsAndBiasesStateinitWithResource(MTLResource resource)Create a MPSState with a non-temporary MTLResourceMPSCNNConvolutionWeightsAndBiasesStateinitWithResources(NSArray<?> resources)Create a state object with a list of MTLResources Because MPS prefers deferred allocation of resources your application should use -initWithTextures:bufferSizes:bufferCount: whenever possible.MPSCNNConvolutionWeightsAndBiasesStateinitWithWeightsBiases(MTLBuffer weights, MTLBuffer biases)Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided weights and biases buffers.MPSCNNConvolutionWeightsAndBiasesStateinitWithWeightsWeightsOffsetBiasesBiasesOffsetCnnConvolutionDescriptor(MTLBuffer weights, long weightsOffset, MTLBuffer biases, long biasesOffset, MPSCNNConvolutionDescriptor descriptor)Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided weights and biases buffers.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()static booleanresolveClassMethod(org.moe.natj.objc.SEL sel)static booleanresolveInstanceMethod(org.moe.natj.objc.SEL sel)static voidsetVersion_static(long aVersion)static org.moe.natj.objc.Classsuperclass_static()static java.lang.ObjecttemporaryCNNConvolutionWeightsAndBiasesStateWithCommandBufferCnnConvolutionDescriptor(MTLCommandBuffer commandBuffer, MPSCNNConvolutionDescriptor descriptor)Create and initialize temporary MPSCNNConvolutionWeightsAndBiasesState with application provided convolution descriptor Create weights and biases buffers of appropriate size from command buffer cache.static java.lang.ObjecttemporaryStateWithCommandBuffer(MTLCommandBuffer cmdBuf)static java.lang.ObjecttemporaryStateWithCommandBufferBufferSize(MTLCommandBuffer cmdBuf, long bufferSize)static java.lang.ObjecttemporaryStateWithCommandBufferResourceList(MTLCommandBuffer commandBuffer, MPSStateResourceList resourceList)static java.lang.ObjecttemporaryStateWithCommandBufferTextureDescriptor(MTLCommandBuffer cmdBuf, MTLTextureDescriptor descriptor)static longversion_static()MTLBufferweights()[@property] weights A buffer that contains the weights.longweightsOffset()[@property] weightsOffset Offset at which weights start in weights buffer Default value is 0.-
Methods inherited from class apple.metalperformanceshaders.MPSState
bufferSizeAtIndex, destinationImageDescriptorForSourceImagesSourceStatesForKernelSuggestedDescriptor, isTemporary, label, readCount, resource, resourceAtIndexAllocateMemory, resourceCount, resourceSize, resourceTypeAtIndex, setLabel, setReadCount, synchronizeOnCommandBuffer, textureInfoAtIndex
-
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 MPSCNNConvolutionWeightsAndBiasesState alloc()
-
allocWithZone
public static java.lang.Object allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
-
automaticallyNotifiesObserversForKey
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
-
biases
public MTLBuffer biases()
[@property] biases A buffer that contains the biases. Each value is float and there are ouputFeatureChannels values.
-
biasesOffset
public long biasesOffset()
[@property] biasesOffset Offset at which weights start in biases buffer Default value is 0.
-
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()
-
debugDescription_static
public static java.lang.String debugDescription_static()
-
description_static
public static java.lang.String description_static()
-
hash_static
public static long hash_static()
-
init
public MPSCNNConvolutionWeightsAndBiasesState init()
-
initWithDeviceBufferSize
public MPSCNNConvolutionWeightsAndBiasesState initWithDeviceBufferSize(MTLDevice device, long bufferSize)
- Overrides:
initWithDeviceBufferSizein classMPSState
-
initWithDeviceCnnConvolutionDescriptor
public MPSCNNConvolutionWeightsAndBiasesState initWithDeviceCnnConvolutionDescriptor(MTLDevice device, MPSCNNConvolutionDescriptor descriptor)
Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided convolution descriptor Create weights and biases buffers of appropriate size
-
initWithDeviceResourceList
public MPSCNNConvolutionWeightsAndBiasesState initWithDeviceResourceList(MTLDevice device, MPSStateResourceList resourceList)
Description copied from class:MPSStateInitialize a non-temporary state to hold a number of textures and buffers The allocation of each resource will be deferred until it is needed. This occurs when -resource or -resourceAtIndex: is called.- Overrides:
initWithDeviceResourceListin classMPSStateresourceList- The list of resources to create.
-
initWithDeviceTextureDescriptor
public MPSCNNConvolutionWeightsAndBiasesState initWithDeviceTextureDescriptor(MTLDevice device, MTLTextureDescriptor descriptor)
- Overrides:
initWithDeviceTextureDescriptorin classMPSState
-
initWithResource
public MPSCNNConvolutionWeightsAndBiasesState initWithResource(MTLResource resource)
Description copied from class:MPSStateCreate a MPSState with a non-temporary MTLResource- Overrides:
initWithResourcein classMPSState- Parameters:
resource- A MTLBuffer or MTLTexture. May be nil.
-
initWithResources
public MPSCNNConvolutionWeightsAndBiasesState initWithResources(NSArray<?> resources)
Description copied from class:MPSStateCreate a state object with a list of MTLResources Because MPS prefers deferred allocation of resources your application should use -initWithTextures:bufferSizes:bufferCount: whenever possible. This method is useful for cases when the MTLResources must be initialized by the CPU.- Overrides:
initWithResourcesin classMPSState
-
initWithWeightsBiases
public MPSCNNConvolutionWeightsAndBiasesState initWithWeightsBiases(MTLBuffer weights, MTLBuffer biases)
Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided weights and biases buffers. This is the convinience API when buffers of exact size i.e. [weights length] = inputFeatureChannels*kernelWidth*kernelHeight*channelMultiplier*sizeof(float) // for depthwise convolution outputFeatureChannels*kernelWidth*kernelHeight*(inputChannels/groups)*sizeof(float) // for regular otherwise and [biases length] = outputFeatureChannels*sizeof(float)
-
initWithWeightsWeightsOffsetBiasesBiasesOffsetCnnConvolutionDescriptor
public MPSCNNConvolutionWeightsAndBiasesState initWithWeightsWeightsOffsetBiasesBiasesOffsetCnnConvolutionDescriptor(MTLBuffer weights, long weightsOffset, MTLBuffer biases, long biasesOffset, MPSCNNConvolutionDescriptor descriptor)
Create and initialize MPSCNNConvolutionWeightsAndBiasesState with application provided weights and biases buffers. It gives finer allocation control to application e.g. application can pass same buffer for weights and biases with appropriate offsets. Or offset into some larger buffer from application managed heap etc. Number of weights and biases or the length of weights and biases buffer this object owns (will read or write to), starting at offset is determined by MPSCNNConvolutionDescriptor passed in. weightsLength = inputFeatureChannels*kernelWidth*kernelHeight*channelMultiplier*sizeof(float) // for depthwise convolution outputFeatureChannels*kernelWidth*kernelHeight*(inputChannels/groups)*sizeof(float) // for regular otherwise biasesLength = outputFeatureChannels*sizeof(float) Thus filters operating on this object will read or write to NSRange(weightsOffset, weightsLength) of weights buffer and NSRange(biasesOffset, biasesLength) of biases buffer. Thus sizes of buffers provided must be such that weightsOffset + weightsLength <= [weights length] and biasesOffset + biasesLength <= [biases length] Offsets must of sizeof(float) aligned i.e. multiple of 4.
-
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()
-
resolveClassMethod
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
-
resolveInstanceMethod
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
-
setVersion_static
public static void setVersion_static(long aVersion)
-
superclass_static
public static org.moe.natj.objc.Class superclass_static()
-
temporaryCNNConvolutionWeightsAndBiasesStateWithCommandBufferCnnConvolutionDescriptor
public static java.lang.Object temporaryCNNConvolutionWeightsAndBiasesStateWithCommandBufferCnnConvolutionDescriptor(MTLCommandBuffer commandBuffer, MPSCNNConvolutionDescriptor descriptor)
Create and initialize temporary MPSCNNConvolutionWeightsAndBiasesState with application provided convolution descriptor Create weights and biases buffers of appropriate size from command buffer cache.
-
temporaryStateWithCommandBuffer
public static java.lang.Object temporaryStateWithCommandBuffer(MTLCommandBuffer cmdBuf)
-
temporaryStateWithCommandBufferBufferSize
public static java.lang.Object temporaryStateWithCommandBufferBufferSize(MTLCommandBuffer cmdBuf, long bufferSize)
-
temporaryStateWithCommandBufferResourceList
public static java.lang.Object temporaryStateWithCommandBufferResourceList(MTLCommandBuffer commandBuffer, MPSStateResourceList resourceList)
-
temporaryStateWithCommandBufferTextureDescriptor
public static java.lang.Object temporaryStateWithCommandBufferTextureDescriptor(MTLCommandBuffer cmdBuf, MTLTextureDescriptor descriptor)
-
version_static
public static long version_static()
-
weights
public MTLBuffer weights()
[@property] weights A buffer that contains the weights. Each value in the buffer is a float. The layout of the weights with respect to the weights is the same as the weights layout provided by data source i.e. it can be interpreted as 4D array weights[outputFeatureChannels][kernelHeight][kernelWidth][inputFeatureChannels/groups] for regular convolution. For depthwise convolution weights[outputFeatureChannels][kernelHeight][kernelWidth] as we currently only support channel multiplier of 1.
-
weightsOffset
public long weightsOffset()
[@property] weightsOffset Offset at which weights start in weights buffer Default value is 0.
-
-