public class MPSMatrixMultiplication extends MPSKernel
[@dependency] This depends on Metal.framework.
A matrix multiplication kernel.
A MPSMatrixMultiplication object computes:
C = alpha * op(A) * op(B) + beta * C
A, B, and C are matrices which are represented by MPSMatrix objects. alpha and beta are scalar values (of the same data type as values of C) which are applied as shown above. A and B may each have an optional transposition operation applied.
A, B, and C (also referred to in later discussions as the left input matrix, the right input matrix, and the result matrix respectively).
A MPSMatrixMultiplication object is initialized with the transpose operators to apply to A and B, sizes for the operation to perform, and the scalar values alpha and beta.
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
MPSMatrixMultiplication(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
_supportsSecureCoding()
This property must return YES on all classes that allow secure coding.
|
static boolean |
accessInstanceVariablesDirectly() |
static MPSMatrixMultiplication |
alloc() |
static MPSMatrixMultiplication |
allocWithZone(org.moe.natj.general.ptr.VoidPtr zone) |
static boolean |
automaticallyNotifiesObserversForKey(java.lang.String key) |
long |
batchSize()
[@property] batchSize
|
long |
batchStart()
[@property] batchStart
|
static void |
cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget) |
static void |
cancelPreviousPerformRequestsWithTargetSelectorObject(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.Class |
classForKeyedUnarchiver() |
static java.lang.String |
debugDescription_static() |
static java.lang.String |
description_static() |
void |
encodeToCommandBufferLeftMatrixRightMatrixResultMatrix(MTLCommandBuffer commandBuffer,
MPSMatrix leftMatrix,
MPSMatrix rightMatrix,
MPSMatrix resultMatrix)
Encode a MPSMatrixMultiplication object to a command buffer.
|
static long |
hash_static() |
MPSMatrixMultiplication |
init() |
MPSMatrixMultiplication |
initWithCoder(NSCoder aDecoder)
NS_DESIGNATED_INITIALIZER
|
MPSMatrixMultiplication |
initWithCoderDevice(NSCoder aDecoder,
java.lang.Object device)
NSSecureCoding compatability
|
MPSMatrixMultiplication |
initWithDevice(java.lang.Object device)
Standard init with default properties per filter type
|
MPSMatrixMultiplication |
initWithDeviceResultRowsResultColumnsInteriorColumns(MTLDevice device,
long resultRows,
long resultColumns,
long interiorColumns)
Convenience initialization for a matrix-matrix multiplication
with no transpositions, unit scaling of the product, and no
accumulation of the result.
|
MPSMatrixMultiplication |
initWithDeviceTransposeLeftTransposeRightResultRowsResultColumnsInteriorColumnsAlphaBeta(MTLDevice device,
boolean transposeLeft,
boolean transposeRight,
long resultRows,
long resultColumns,
long interiorColumns,
double alpha,
double beta)
Initialize an MPSMatrixMultiplication object on a device for a given size
and desired transpose and scale values.
|
static NSObject.Function_instanceMethodForSelector_ret |
instanceMethodForSelector(org.moe.natj.objc.SEL aSelector) |
static NSMethodSignature |
instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
instancesRespondToSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
isSubclassOfClass(org.moe.natj.objc.Class aClass) |
static NSSet<java.lang.String> |
keyPathsForValuesAffectingValueForKey(java.lang.String key) |
MTLOrigin |
leftMatrixOrigin()
[@property] leftMatrixOrigin
|
static MPSMatrixMultiplication |
new_objc() |
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
MTLOrigin |
resultMatrixOrigin()
[@property] resultMatrixOrigin
|
MTLOrigin |
rightMatrixOrigin()
[@property] rightMatrixOrigin
|
void |
setBatchSize(long value)
[@property] batchSize
|
void |
setBatchStart(long value)
[@property] batchStart
|
void |
setLeftMatrixOrigin(MTLOrigin value)
[@property] leftMatrixOrigin
|
void |
setResultMatrixOrigin(MTLOrigin value)
[@property] resultMatrixOrigin
|
void |
setRightMatrixOrigin(MTLOrigin value)
[@property] rightMatrixOrigin
|
static void |
setVersion_static(long aVersion) |
static org.moe.natj.objc.Class |
superclass_static() |
static boolean |
supportsSecureCoding() |
static long |
version_static() |
copyWithZone, copyWithZoneDevice, device, encodeWithCoder, label, options, setLabel, setOptionsaccessibilityActivate, 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, willChangeValuesAtIndexesForKeyprotected MPSMatrixMultiplication(org.moe.natj.general.Pointer peer)
public static boolean accessInstanceVariablesDirectly()
public static MPSMatrixMultiplication alloc()
public static MPSMatrixMultiplication allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument)
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
public static long hash_static()
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
public static MPSMatrixMultiplication new_objc()
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public static long version_static()
public void encodeToCommandBufferLeftMatrixRightMatrixResultMatrix(MTLCommandBuffer commandBuffer, MPSMatrix leftMatrix, MPSMatrix rightMatrix, MPSMatrix resultMatrix)
Certain constraints apply to the sizes of the matrices depending on the transposition operations and sizes requested at initialization time as well as the origins at the time this routine is called:
The left input matrix must be large enough to hold an array of size resultRows x interiorColumns elements beginning at leftMatrixOrigin.
The right input matrix must be large enough to hold an array of size interiorColumns x resultColumns elements beginning at rightMatrixOrigin.
The result matrix must be large enough to hold an array of size resultRows x resultColumns elements beginning at resultMatrixOrigin.
Each matrix within the range specified by batchStart and batchSize, which also specifies a valid set of matrices within leftMatrix, rightMatrix, and resultMatrix, will be processed.
commandBuffer - A valid MTLCommandBuffer to receive the encoded kernel.leftMatrix - A valid MPSMatrix object which specifies the left input matrix.rightMatrix - A valid MPSMatrix object which specifies the right input matrix.resultMatrix - A valid MPSMatrix object which specifies the addend matrix which will
also be overwritten by the result.public MPSMatrixMultiplication init()
public MPSMatrixMultiplication initWithDevice(java.lang.Object device)
MPSKernelinitWithDevice in class MPSKerneldevice - The device that the filter will be used on. May not be NULL.public MPSMatrixMultiplication initWithDeviceTransposeLeftTransposeRightResultRowsResultColumnsInteriorColumnsAlphaBeta(MTLDevice device, boolean transposeLeft, boolean transposeRight, long resultRows, long resultColumns, long interiorColumns, double alpha, double beta)
device - The device on which the kernel will execute.transposeLeft - A boolean value which indicates if the left input matrix should be
used in transposed form. If 'YES' then op(A) = A**T, otherwise
op(A) = A.transposeRight - A boolean value which indicates if the right input matrix should be
used in transposed form. If 'YES' then op(B) = B**T, otherwise
op(B) = B.resultRows - The number of rows in the result matrix, M in BLAS GEMM description.resultColumns - The number of columns in the result matrix, N in BLAS GEMM description.interiorColumns - The number of columns of the left input matrix after the
appropriate transpose operation has been applied. K in BLAS
GEMM description.alpha - The scale factor to apply to the product. Specified in double
precision. Will be converted to the appropriate precision in the
implementation subject to rounding and/or clamping as necessary.beta - The scale factor to apply to the initial values of C. Specified
in double precision. Will be converted to the appropriate precision in the
implementation subject to rounding and/or clamping as necessary.public MTLOrigin leftMatrixOrigin()
The origin, relative to [0, 0] in the left input matrix, at which to start reading values. This property is modifiable and defaults to [0, 0] at initialization time. If a different origin is desired then this should be modified prior to encoding the kernel. The z value must be 0.
public MTLOrigin resultMatrixOrigin()
The origin, relative to [0, 0] in the result matrix, at which to start writing (and reading if necessary) results. This property is modifiable and defaults to [0, 0] at initialization time. If a different origin is desired then this should be modified prior to encoding the kernel. The z value must be 0.
public MTLOrigin rightMatrixOrigin()
The origin, relative to [0, 0] in the right input matrix, at which to start reading values. This property is modifiable and defaults to [0, 0] at initialization time. If a different origin is desired then this should be modified prior to encoding the kernel. The z value must be 0.
public void setLeftMatrixOrigin(MTLOrigin value)
The origin, relative to [0, 0] in the left input matrix, at which to start reading values. This property is modifiable and defaults to [0, 0] at initialization time. If a different origin is desired then this should be modified prior to encoding the kernel. The z value must be 0.
public void setResultMatrixOrigin(MTLOrigin value)
The origin, relative to [0, 0] in the result matrix, at which to start writing (and reading if necessary) results. This property is modifiable and defaults to [0, 0] at initialization time. If a different origin is desired then this should be modified prior to encoding the kernel. The z value must be 0.
public void setRightMatrixOrigin(MTLOrigin value)
The origin, relative to [0, 0] in the right input matrix, at which to start reading values. This property is modifiable and defaults to [0, 0] at initialization time. If a different origin is desired then this should be modified prior to encoding the kernel. The z value must be 0.
public long batchSize()
The number of matrices in the batch to process. This property is modifiable and by default allows all matrices available at encoding time to be processed.
public long batchStart()
The index of the first matrix in the batch. This property is modifiable and defaults to 0 at initialization time. If batch processing should begin at a different matrix this value should be modified prior to encoding the kernel.
public MPSMatrixMultiplication initWithCoder(NSCoder aDecoder)
NSCodinginitWithCoder in interface NSCodinginitWithCoder in class MPSKernelpublic MPSMatrixMultiplication initWithCoderDevice(NSCoder aDecoder, java.lang.Object device)
MPSKernelWhile the standard NSSecureCoding/NSCoding method -initWithCoder: should work, since the file can't know which device your data is allocated on, we have to guess and may guess incorrectly. To avoid that problem, use initWithCoder:device instead.
initWithCoderDevice in class MPSKernelaDecoder - The NSCoder subclass with your serialized MPSKerneldevice - The MTLDevice on which to make the MPSKernelpublic MPSMatrixMultiplication initWithDeviceResultRowsResultColumnsInteriorColumns(MTLDevice device, long resultRows, long resultColumns, long interiorColumns)
device - The device on which the kernel will execute.resultRows - The number of rows in the result matrix, M in BLAS GEMM description.resultColumns - The number of columns in the result matrix, N in BLAS GEMM description.interiorColumns - The number of columns of the left input matrix. K in BLAS
GEMM description.public void setBatchSize(long value)
The number of matrices in the batch to process. This property is modifiable and by default allows all matrices available at encoding time to be processed.
public void setBatchStart(long value)
The index of the first matrix in the batch. This property is modifiable and defaults to 0 at initialization time. If batch processing should begin at a different matrix this value should be modified prior to encoding the kernel.
public static boolean supportsSecureCoding()
public boolean _supportsSecureCoding()
NSSecureCoding_supportsSecureCoding in interface NSSecureCoding_supportsSecureCoding in class MPSKernel