Class 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.
    • Constructor Detail

      • MPSCNNConvolutionWeightsAndBiasesState

        protected MPSCNNConvolutionWeightsAndBiasesState​(org.moe.natj.general.Pointer peer)
    • Method Detail

      • accessInstanceVariablesDirectly

        public static boolean accessInstanceVariablesDirectly()
      • 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()
      • initWithResources

        public MPSCNNConvolutionWeightsAndBiasesState initWithResources​(NSArray<?> resources)
        Description copied from class: MPSState
        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. This method is useful for cases when the MTLResources must be initialized by the CPU.
        Overrides:
        initWithResources in class MPSState
      • 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.
      • 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.