-
Notifications
You must be signed in to change notification settings - Fork 515
MetalPerformanceShadersGraph iOS xcode13.3 beta2
Alex Soto edited this page Feb 11, 2022
·
1 revision
#MetalPerformanceShadersGraph.framework
diff -ruN /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphLinearAlgebraOps.h /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphLinearAlgebraOps.h
--- /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphLinearAlgebraOps.h 1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphLinearAlgebraOps.h 2022-02-04 13:46:13.000000000 -0500
@@ -0,0 +1,64 @@
+//
+// MPSGraphLinearAlgebraOps.h
+// MPSGraph
+//
+// Created by local on 1/21/22.
+// Copyright © 2022 Apple Inc. All rights reserved.
+//
+
+#ifndef MPSGraphLinearAlgebraOps_h
+#define MPSGraphLinearAlgebraOps_h
+
+#import <MetalPerformanceShadersGraph/MPSGraph.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+MPS_CLASS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4))
+@interface MPSGraph(MPSGraphLinearAlgebraOps)
+
+/*!
+ * @abstract Create band part op and return the result
+ * @discussion Copies a diagonal band of values from input tensor to a result tensor of the same size.
+ * A coordinate @code [..., i, j] @endcode is in the band if
+ * @code
+ * (numLower < 0 || (i-j) <= numLower) && (numUpper < 0 || (j-i) <= numUpper)
+ * @endcode
+ * Values outside of the band are set to 0.
+ *
+ * @param inputTensor The source tensor to copy
+ * @param numLower The number of diagonals in the lower triangle to keep. If -1, keep all
+ * @param numUpper The number of diagonals in the upper triangle to keep. If -1, keep all
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) bandPartWithTensor:(MPSGraphTensor *) inputTensor
+ numLower:(NSInteger) numLower
+ numUpper:(NSInteger) numUpper
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( bandPart(_:numLower:numUpper:name:) );
+
+/*!
+ * @abstract Create band part op and return the result
+ * @discussion See above discussion of bandPartWithTensor: numLower: numUpper: name:
+ *
+ * @param inputTensor The source tensor to copy
+ * @param numLowerTensor Scalar Int32 tensor. The number of diagonals in the lower triangle to keep. If -1, keep all.
+ * @param numUpperTensor Scalar Int32 tensor. The number of diagonals in the upper triangle to keep. If -1, keep all.
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) bandPartWithTensor:(MPSGraphTensor *) inputTensor
+ numLowerTensor:(MPSGraphTensor *) numLowerTensor
+ numUpperTensor:(MPSGraphTensor *) numUpperTensor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( bandPart(_:numLowerTensor:numUpperTensor:name:) );
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+
+#endif /* MPSGraphLinearAlgebraOps_h */
diff -ruN /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphRNNOps.h /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphRNNOps.h
--- /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphRNNOps.h 2022-01-25 13:13:24.000000000 -0500
+++ /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphRNNOps.h 2022-02-04 13:41:46.000000000 -0500
@@ -20,15 +20,15 @@
*/
typedef NS_ENUM(NSUInteger, MPSGraphRNNActivation)
{
- MPSGraphRNNActivationNone MPS_ENUM_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3)) MPS_SWIFT_NAME(none) = 0L,
- MPSGraphRNNActivationRelu MPS_ENUM_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3)),
- MPSGraphRNNActivationTanh MPS_ENUM_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3)),
- MPSGraphRNNActivationSigmoid MPS_ENUM_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3)),
- MPSGraphRNNActivationHardSigmoid MPS_ENUM_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3)),
+ MPSGraphRNNActivationNone MPS_ENUM_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4)) MPS_SWIFT_NAME(none) = 0L,
+ MPSGraphRNNActivationRelu MPS_ENUM_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4)),
+ MPSGraphRNNActivationTanh MPS_ENUM_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4)),
+ MPSGraphRNNActivationSigmoid MPS_ENUM_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4)),
+ MPSGraphRNNActivationHardSigmoid MPS_ENUM_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4)),
};
-MPS_CLASS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3))
+MPS_CLASS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4))
@interface MPSGraphSingleGateRNNDescriptor : NSObject<NSCopying>
/*!
@@ -66,7 +66,86 @@
@end
-MPS_CLASS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3))
+MPS_CLASS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4))
+@interface MPSGraphLSTMDescriptor : NSObject<NSCopying>
+
+/*!
+ * @property reverse
+ * @discussion If set then the input sequence is passed in reverse time order to the layer.
+ * Note: Ignored when @code bidirectional = YES @endcode.
+ * Default value: @code NO @endcode
+ */
+@property (readwrite, nonatomic) BOOL reverse;
+
+/*!
+ * @property bidirectional
+ * @discussion If set then the input sequence is traversed in both directions and the two results
+ * are concatenated together on the channel-axis.
+ * Default value: @code NO @endcode
+ */
+@property (readwrite, nonatomic) BOOL bidirectional;
+
+/*!
+ * @property produceCell
+ * @discussion If set then this layer will produce the internal cell of the LSTM unit as secondary output.
+ * Default value: @code NO @endcode
+ */
+@property (readwrite, nonatomic) BOOL produceCell;
+
+/*!
+ * @property training
+ * @discussion If set then the layer will produce training state tensor as a secondary or third output.
+ * Default value: @code NO @endcode
+ */
+@property (readwrite, nonatomic) BOOL training;
+
+/*!
+ * @property forgetGateLast
+ * @discussion If set then the layer will use the gate-ordering `[ i, z, f, o ]` instead of default `[ i, f, z, o ]`.
+ * Default value: @code NO @endcode
+ */
+@property (readwrite, nonatomic) BOOL forgetGateLast;
+
+/*!
+ * @property inputGateActivation
+ * @discussion Activation function to use with the input gate of the LSTM op.
+ * Default value: @code MPSGraphRNNActivationSigmoid @endcode
+ */
+@property (readwrite, nonatomic) MPSGraphRNNActivation inputGateActivation;
+
+/*!
+ * @property forgetGateActivation
+ * @discussion Activation function to use with the forget gate of the LSTM op.
+ * Default value: @code MPSGraphRNNActivationSigmoid @endcode
+ */
+@property (readwrite, nonatomic) MPSGraphRNNActivation forgetGateActivation;
+
+/*!
+ * @property cellGateActivation
+ * @discussion Activation function to use with the cell gate of the LSTM op.
+ * Default value: @code MPSGraphRNNActivationTanh @endcode
+ */
+@property (readwrite, nonatomic) MPSGraphRNNActivation cellGateActivation;
+
+/*!
+ * @property outputGateActivation
+ * @discussion Activation function to use with the output gate of the LSTM op.
+ * Default value: @code MPSGraphRNNActivationSigmoid @endcode
+ */
+@property (readwrite, nonatomic) MPSGraphRNNActivation outputGateActivation;
+
+/*!
+ * @property activation
+ * @discussion Activation function to use with the current cell value of the LSTM op.
+ * Default value: @code MPSGraphRNNActivationTanh @endcode
+ */
+@property (readwrite, nonatomic) MPSGraphRNNActivation activation;
+
++(nullable instancetype) descriptor;
+
+@end
+
+MPS_CLASS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4))
@interface MPSGraph(MPSGraphRNNOps)
/*!
@@ -109,7 +188,7 @@
descriptor:(MPSGraphSingleGateRNNDescriptor *) descriptor
name:(NSString * _Nullable) name
MPS_SWIFT_NAME( singleGateRNN(_:recurrentWeight:inputWeight:bias:initState:mask:descriptor:name:))
-MPS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3));
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
-(NSArray<MPSGraphTensor *> *) singleGateRNNWithSourceTensor:(MPSGraphTensor *) source
recurrentWeight:(MPSGraphTensor *) recurrentWeight
@@ -119,7 +198,7 @@
descriptor:(MPSGraphSingleGateRNNDescriptor *) descriptor
name:(NSString * _Nullable) name
MPS_SWIFT_NAME( singleGateRNN(_:recurrentWeight:inputWeight:bias:initState:descriptor:name:))
-MPS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3));
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
-(NSArray<MPSGraphTensor *> *) singleGateRNNWithSourceTensor:(MPSGraphTensor *) source
recurrentWeight:(MPSGraphTensor *) recurrentWeight
@@ -127,7 +206,7 @@
descriptor:(MPSGraphSingleGateRNNDescriptor *) descriptor
name:(NSString * _Nullable) name
MPS_SWIFT_NAME( singleGateRNN(_:recurrentWeight:initState:descriptor:name:))
-MPS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3));
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
/*!
* @abstract Create a single-gate RNN gradient op and return the gradient tensor values.
@@ -168,7 +247,7 @@
descriptor:(MPSGraphSingleGateRNNDescriptor *) descriptor
name:(NSString * _Nullable) name
MPS_SWIFT_NAME( singleGateRNNGradients(_:recurrentWeight:sourceGradient:zState:stateGradient:inputWeight:bias:initState:mask:descriptor:name:))
-MPS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3));
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
-(NSArray<MPSGraphTensor *> *) singleGateRNNGradientsWithSourceTensor:(MPSGraphTensor *) source
recurrentWeight:(MPSGraphTensor *) recurrentWeight
@@ -181,7 +260,7 @@
descriptor:(MPSGraphSingleGateRNNDescriptor *) descriptor
name:(NSString * _Nullable) name
MPS_SWIFT_NAME( singleGateRNNGradients(_:recurrentWeight:sourceGradient:zState:inputWeight:bias:initState:mask:descriptor:name:))
-MPS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3));
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
-(NSArray<MPSGraphTensor *> *) singleGateRNNGradientsWithSourceTensor:(MPSGraphTensor *) source
recurrentWeight:(MPSGraphTensor *) recurrentWeight
@@ -193,7 +272,7 @@
descriptor:(MPSGraphSingleGateRNNDescriptor *) descriptor
name:(NSString * _Nullable) name
MPS_SWIFT_NAME( singleGateRNNGradients(_:recurrentWeight:sourceGradient:zState:inputWeight:bias:initState:descriptor:name:))
-MPS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3));
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
-(NSArray<MPSGraphTensor *> *) singleGateRNNGradientsWithSourceTensor:(MPSGraphTensor *) source
recurrentWeight:(MPSGraphTensor *) recurrentWeight
@@ -203,7 +282,168 @@
descriptor:(MPSGraphSingleGateRNNDescriptor *) descriptor
name:(NSString * _Nullable) name
MPS_SWIFT_NAME( singleGateRNNGradients(_:recurrentWeight:sourceGradient:zState:initState:descriptor:name:))
-MPS_AVAILABLE_STARTING(macos(12.2), ios(15.3), tvos(15.3));
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create a LSTM op and return the value and optionally the cell state and optionally the training state tensor.
+ * @discussion This operation returns tensors `h` and optionally `c` and optionally `z` that are defined recursively as follows:
+ * @code
+ * for t = 0 to T-1
+ * z[t] = [i, f, z, o][t] = f( (h[t-1] m) R^T + x'[t] + p*c[t-1] )`
+ * x'[t] = x[t] W^T + b
+ * c[t] = f[t] * c[t-1] + i[t] * z[t]
+ * h[t] = o[t] * g(c[t]), where
+ * @endcode
+ * `W` is optional @ref inputWeight, `R` is @ref recurrentWeight, `b` is optional @ref bias, `m` is optional @mask,
+ * `x[t]` is @ref source `h[t]` is the first output, `c[t]` is the second output (optional),
+ * `z[t]` is either the second or third output (optional), `h[-1]` is @ref initCell. and `h[-1]` is @ref initState.
+ * `p` is an optional peephole vector.
+ * See @ref MPSGraphLSTMDescriptor for different `activation` options for `f()` and `g()`.
+ *
+ * @param source Tensor containing the source data `x[t]` - shape should be [T,N,I].
+ * In case `inputWeight = nil` and `bidirectional = NO` then the layout is [T,N,4H]
+ * and for `inputWeight = nil` and `bidirectional = YES` the layout is [T,N,8H].
+ * @param recurrentWeight Tensor containing the recurrent weights `R`.
+ * For `bidirectional` the layout is [2,4H,H] and otherwise it is [4H,H].
+ * @param inputWeight Tensor containing the input weights matrix `W` - optional, if missing assumes diagonal unit-matrix.
+ * For `bidirectional` the layout is [8H,I] and otherwise it is [4H,I].
+ * @param bias Tensor containing the bias `b` - optional, if missing assumes zeroes.
+ * For `bidirectional` the layout is [8H] and otherwise it is [4H].
+ * @param initState Initial internal state of the LSTM `h[-1]` - optional, if missing assumes zeroes.
+ * For `bidirectional` the layout is [N,2H] and otherwise it is [N,H].
+ * @param initCell Initial internal cell of the LSTM `h[-1]` - optional, if missing assumes zeroes.
+ * For `bidirectional` the layout is [N,2H] and otherwise it is [N,H].
+ * @param mask Tensor containing the mask `m` - optional, if missing assumes ones. Useful for dropout.
+ * @param peephole Tensor containing the peephole vector `v` - optional, if missing assumes zeroes.
+ * Shape is [4H], ie. a vector for each gate, or [2,4H] for bidirectional.
+ * @param descriptor The LSTM op definition.
+ * @param name The name for the operation.
+ *
+ * @return A valid MPSGraphTensor array of size 1 or 2 or 3, depending on value of @ref `descriptor.produceCell` and @ref `descriptor.training`.
+ * The layout of the both state and cell outputs are [T,N,H] or [T,N,2H] for bidirectional,
+ * and the layout of the trainingState output is [T,N,4H] or [T,N,8H] for bidirectional,.
+ */
+
+-(NSArray<MPSGraphTensor *> *) LSTMWithSourceTensor:(MPSGraphTensor *) source
+ recurrentWeight:(MPSGraphTensor *) recurrentWeight
+ inputWeight:(MPSGraphTensor * _Nullable) inputWeight
+ bias:(MPSGraphTensor * _Nullable) bias
+ initState:(MPSGraphTensor * _Nullable) initState
+ initCell:(MPSGraphTensor * _Nullable) initCell
+ mask:(MPSGraphTensor * _Nullable) mask
+ peephole:(MPSGraphTensor * _Nullable) peephole
+ descriptor:(MPSGraphLSTMDescriptor *) descriptor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( LSTM(_:recurrentWeight:inputWeight:bias:initState:initCell:mask:peephole:descriptor:name:))
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+-(NSArray<MPSGraphTensor *> *) LSTMWithSourceTensor:(MPSGraphTensor *) source
+ recurrentWeight:(MPSGraphTensor *) recurrentWeight
+ inputWeight:(MPSGraphTensor * _Nullable) inputWeight
+ bias:(MPSGraphTensor * _Nullable) bias
+ initState:(MPSGraphTensor * _Nullable) initState
+ initCell:(MPSGraphTensor * _Nullable) initCell
+ descriptor:(MPSGraphLSTMDescriptor *) descriptor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( LSTM(_:recurrentWeight:inputWeight:bias:initState:initCell:descriptor:name:))
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+-(NSArray<MPSGraphTensor *> *) LSTMWithSourceTensor:(MPSGraphTensor *) source
+ recurrentWeight:(MPSGraphTensor *) recurrentWeight
+ initState:(MPSGraphTensor * _Nullable) initState
+ initCell:(MPSGraphTensor * _Nullable) initCell
+ descriptor:(MPSGraphLSTMDescriptor *) descriptor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( LSTM(_:recurrentWeight:initState:initCell:descriptor:name:))
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create a LSTM gradient op and return the gradient tensor values.
+ *
+ * @param source Tensor containing the source data `x[t]` - shape should be [T,N,I].
+ * In case `inputWeight = nil` and `bidirectional = NO` then the layout is [T,N,4H]
+ * and for `inputWeight = nil` and `bidirectional = YES` the layout is [T,N,8H].
+ * @param recurrentWeight Tensor containing the recurrent weights `R`.
+ * For `bidirectional` the layout is [2,4H,H] and otherwise it is [4H,H].
+ * @param sourceGradient Input gradient, that is gradient of a tensor wrt. to first output of the forward pass.
+ * @param cellOutputFwd The second output of `LSTMWithSourceTensor` with @ref `descriptor.training = true` or `descriptor.produceCell = true`.
+ * @param zState The third output of `LSTMWithSourceTensor` with @ref `descriptor.training = true`.
+ * @param stateGradient Input gradient for state coming from the future timestep - optional, if missing assumes zeroes.
+ * @param cellGradient Input gradient for cell coming from the future timestep - optional, if missing assumes zeroes.
+ * @param inputWeight Tensor containing the input weights matrix `W` - optional, if missing assumes diagonal unit-matrix.
+ * For `bidirectional` the layout is [8H,I] and otherwise it is [4H,I].
+ * @param bias Tensor containing the bias `b` - optional, if missing assumes zeroes.
+ * For `bidirectional` the layout is [8H] and otherwise it is [4H].
+ * @param initState Initial internal state of the LSTM `h[-1]` - optional, if missing assumes zeroes.
+ * For `bidirectional` the layout is [N,2H] and otherwise it is [N,H].
+ * @param initCell Initial internal cell of the LSTM `h[-1]` - optional, if missing assumes zeroes.
+ * For `bidirectional` the layout is [N,2H] and otherwise it is [N,H].
+ * @param mask Tensor containing the mask `m` - optional, if missing assumes ones. Useful for dropout.
+ * @param peephole Tensor containing the peephole vector `v` - optional, if missing assumes zeroes. Shape is [8H], ie. a vector for each gate.
+ * @param descriptor The LSTM op definition.
+ * @param name The name for the operation.
+ *
+ * @return A valid MPSGraphTensor array containing gradients for each input tensor, except for `sourceGradient` and `mask`.
+ * In case an input is nil, no gradient will be returned for it.
+ * The order of the gradients will be: for source, for recurrentWeight, for inputWeight, for bias, for peephole, for initState, for initCell.
+ */
+
+-(NSArray<MPSGraphTensor *> *) LSTMGradientsWithSourceTensor:(MPSGraphTensor *) source
+ recurrentWeight:(MPSGraphTensor *) recurrentWeight
+ sourceGradient:(MPSGraphTensor *) sourceGradient
+ zState:(MPSGraphTensor *) zState
+ cellOutputFwd:(MPSGraphTensor *) cellOutputFwd
+ stateGradient:(MPSGraphTensor * _Nullable) stateGradient
+ cellGradient:(MPSGraphTensor * _Nullable) cellGradient
+ inputWeight:(MPSGraphTensor * _Nullable) inputWeight
+ bias:(MPSGraphTensor * _Nullable) bias
+ initState:(MPSGraphTensor * _Nullable) initState
+ initCell:(MPSGraphTensor * _Nullable) initCell
+ mask:(MPSGraphTensor * _Nullable) mask
+ peephole:(MPSGraphTensor * _Nullable) peephole
+ descriptor:(MPSGraphLSTMDescriptor *) descriptor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( LSTMGradients(_:recurrentWeight:sourceGradient:zState:cellOutputFwd:stateGradient:cellGradient:inputWeight:bias:initState:initCell:mask:peephole:descriptor:name:))
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+-(NSArray<MPSGraphTensor *> *) LSTMGradientsWithSourceTensor:(MPSGraphTensor *) source
+ recurrentWeight:(MPSGraphTensor *) recurrentWeight
+ sourceGradient:(MPSGraphTensor *) sourceGradient
+ zState:(MPSGraphTensor *) zState
+ cellOutputFwd:(MPSGraphTensor *) cellOutputFwd
+ inputWeight:(MPSGraphTensor * _Nullable) inputWeight
+ bias:(MPSGraphTensor * _Nullable) bias
+ initState:(MPSGraphTensor * _Nullable) initState
+ initCell:(MPSGraphTensor * _Nullable) initCell
+ mask:(MPSGraphTensor * _Nullable) mask
+ descriptor:(MPSGraphLSTMDescriptor *) descriptor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( LSTMGradients(_:recurrentWeight:sourceGradient:zState:cellOutputFwd:inputWeight:bias:initState:initCell:mask:descriptor:name:))
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+-(NSArray<MPSGraphTensor *> *) LSTMGradientsWithSourceTensor:(MPSGraphTensor *) source
+ recurrentWeight:(MPSGraphTensor *) recurrentWeight
+ sourceGradient:(MPSGraphTensor *) sourceGradient
+ zState:(MPSGraphTensor *) zState
+ cellOutputFwd:(MPSGraphTensor *) cellOutputFwd
+ inputWeight:(MPSGraphTensor * _Nullable) inputWeight
+ bias:(MPSGraphTensor * _Nullable) bias
+ initState:(MPSGraphTensor * _Nullable) initState
+ initCell:(MPSGraphTensor * _Nullable) initCell
+ descriptor:(MPSGraphLSTMDescriptor *) descriptor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( LSTMGradients(_:recurrentWeight:sourceGradient:zState:cellOutputFwd:inputWeight:bias:initState:initCell:descriptor:name:))
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+-(NSArray<MPSGraphTensor *> *) LSTMGradientsWithSourceTensor:(MPSGraphTensor *) source
+ recurrentWeight:(MPSGraphTensor *) recurrentWeight
+ sourceGradient:(MPSGraphTensor *) sourceGradient
+ zState:(MPSGraphTensor *) zState
+ cellOutputFwd:(MPSGraphTensor *) cellOutputFwd
+ descriptor:(MPSGraphLSTMDescriptor *) descriptor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( LSTMGradients(_:recurrentWeight:sourceGradient:zState:cellOutputFwd:descriptor:name:))
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
@end
diff -ruN /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorData.h /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorData.h
--- /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorData.h 2022-01-25 12:57:40.000000000 -0500
+++ /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorData.h 2022-02-03 17:10:15.000000000 -0500
@@ -62,6 +62,21 @@
dataType:(MPSDataType) dataType
MPS_SWIFT_NAME( init(_:shape:dataType:) );
+/*! @abstract Initialize an MPSGraphTensorData with an MTLBuffer
+ * The device of the MTLBuffer will be used to get the MPSDevice for this MPSGraphTensorData.
+ * @param buffer MTLBuffer to be used within the MPSGraphTensorData
+ * @param shape shape of the output tensor
+ * @param dataType dataType of the placeholder tensor
+ * @param rowBytes rowBytes for the fastest moving dimension, must be larger than or equal to sizeOf(dataType) * shape[rank - 1] and must be a multiple of sizeOf(dataType)
+ * @return A valid MPSGraphTensorData, or nil if allocation failure.
+ */
+-(instancetype) initWithMTLBuffer:(id<MTLBuffer>) buffer
+ shape:(MPSShape *) shape
+ dataType:(MPSDataType) dataType
+ rowBytes:(NSUInteger) rowBytes
+MPS_SWIFT_NAME( init(_:shape:dataType:rowBytes:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
/*! @abstract Initialize an MPSGraphTensorData with an MPSMatrix
* The device of the MPSMatrix will be used to get the MPSDevice for this MPSGraphTensorData.
* @param matrix MPSMatrix to be used within the MPSGraphTensorData
diff -ruN /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorShapeOps.h /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorShapeOps.h
--- /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorShapeOps.h 2022-01-25 12:57:41.000000000 -0500
+++ /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MPSGraphTensorShapeOps.h 2022-02-04 13:46:13.000000000 -0500
@@ -501,6 +501,165 @@
MPS_SWIFT_NAME( split(_:numSplits:axis:name:) )
MPS_AVAILABLE_STARTING(macos(12.4), ios(15.4), tvos(15.4));
+/*!
+ * @abstract Create squeeze op and return the result
+ * @discussion Squeezes the tensor, removing any dimensions with size 1.
+ *
+ * @param tensor Input tensor
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) squeezeTensor:(MPSGraphTensor *) tensor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( squeeze(_:name:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create squeeze op and return the result
+ * @discussion Squeezes the tensor, removing a dimension with size 1 at specified axis.
+ * Size must be 1 at specified axis.
+ *
+ * @param tensor Input tensor
+ * @param axis The axis to squeeze
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) squeezeTensor:(MPSGraphTensor *) tensor
+ axis:(NSInteger) axis
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( squeeze(_:axis:name:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create squeeze op and return the result
+ * @discussion Squeezes the tensor, removing dimensions with size 1 at specified axes.
+ * Size must be 1 at all specified axes.
+ *
+ * @param tensor Input tensor
+ * @param axes The axes to squeeze
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) squeezeTensor:(MPSGraphTensor *) tensor
+ axes:(NSArray<NSNumber *> *) axes
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( squeeze(_:axes:name:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+-(MPSGraphTensor *) squeezeTensor:(MPSGraphTensor *) tensor
+ axesTensor:(MPSGraphTensor *) axesTensor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( squeeze(_:axesTensor:name:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create expand_dims op and return the result
+ * @discussion Expands the tensor, inserting a dimension with size 1 at specified axis.
+ *
+ * @param tensor Input tensor
+ * @param axis The axis to expand
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) expandDimsOfTensor:(MPSGraphTensor *) tensor
+ axis:(NSInteger) axis
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( expandDims(_:axis:name:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create expand_dims op and return the result
+ * @discussion Expands the tensor, inserting dimensions with size 1 at specified axes.
+ *
+ * @param tensor Input tensor
+ * @param axes The axes to expand
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) expandDimsOfTensor:(MPSGraphTensor *) tensor
+ axes:(NSArray<NSNumber *> *) axes
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( expandDims(_:axes:name:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+-(MPSGraphTensor *) expandDimsOfTensor:(MPSGraphTensor *) tensor
+ axesTensor:(MPSGraphTensor *) axesTensor
+ name:(NSString * _Nullable) name
+MPS_SWIFT_NAME( expandDims(_:axesTensor:name:) )
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create get coord op and return the result
+ * @discussion Creates a tensor of specified shape with value at index @code [i_0, i_1, ... , i_N] = i_axis @endcode
+ * For example,
+ * @code
+ * coordinateAlongAxis(0, withShape=[5]) = [0, 1, 2, 3, 4]
+ * coordinateAlongAxis(1, withShape=[3,2]) = [[0, 0],
+ * [1, 1],
+ * [2, 2]]
+ * @endcode
+ *
+ * @param axis The coordinate axis an element's value is set to. Negative values wrap around
+ * @param shape The shape of the result tensor
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) coordinateAlongAxis:(NSInteger) axis
+ withShape:(MPSShape *) shape
+ name:(NSString * _Nullable) name
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create get coord op and return the result
+ * @discussion See above discussion of getCoordinateValueWithShape: axis: name:
+ *
+ * @param axisTensor Scalar Int32 tensor. The coordinate axis an element's value is set to. Negative values wrap around
+ * @param shape The shape of the result tensor
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) coordinateAlongAxisTensor:(MPSGraphTensor *) axisTensor
+ withShape:(MPSShape *) shape
+ name:(NSString * _Nullable) name
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create get coord op and return the result
+ * @discussion See above discussion of getCoordinateValueWithShape: axis: name:
+ *
+ * @param axis The coordinate axis an element's value is set to. Negative values wrap around
+ * @param shapeTensor 1D Int32 or Int64 tensor. The shape of the result tensor.
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) coordinateAlongAxis:(NSInteger) axis
+ withShapeTensor:(MPSGraphTensor *) shapeTensor
+ name:(NSString * _Nullable) name
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
+/*!
+ * @abstract Create get coord op and return the result
+ * @discussion See above discussion of getCoordinateValueWithShape: axis: name:
+ *
+ * @param axisTensor Scalar Int32 tensor. The coordinate axis an element's value is set to. Negative values wrap around
+ * @param shapeTensor 1D Int32 or Int64 tensor. The shape of the result tensor.
+ * @param name The name for the operation
+ *
+ * @return A valid MPSGraphTensor object
+ */
+-(MPSGraphTensor *) coordinateAlongAxisTensor:(MPSGraphTensor *) axisTensor
+ withShapeTensor:(MPSGraphTensor *) shapeTensor
+ name:(NSString * _Nullable) name
+MPS_AVAILABLE_STARTING(macos(12.3), ios(15.4), tvos(15.4));
+
@end
NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MetalPerformanceShadersGraph.h /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MetalPerformanceShadersGraph.h
--- /Applications/Xcode_13.3.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MetalPerformanceShadersGraph.h 2022-01-21 00:08:56.000000000 -0500
+++ /Applications/Xcode_13.3.0-beta2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework/Headers/MetalPerformanceShadersGraph.h 2022-01-30 22:31:43.000000000 -0500
@@ -17,6 +17,7 @@
#import <MetalPerformanceShadersGraph/MPSGraphControlFlowOps.h>
#import <MetalPerformanceShadersGraph/MPSGraphDepthwiseConvolutionOps.h>
#import <MetalPerformanceShadersGraph/MPSGraphGatherOps.h>
+#import <MetalPerformanceShadersGraph/MPSGraphLinearAlgebraOps.h>
#import <MetalPerformanceShadersGraph/MPSGraphLossOps.h>
#import <MetalPerformanceShadersGraph/MPSGraphMatrixMultiplicationOps.h>
#import <MetalPerformanceShadersGraph/MPSGraphSparseOps.h>
- README
- xcode13.0 Binding Status
- xcode13.1 Binding Status
- xcode13.2 Binding Status
- xcode13.3 Binding Status
- xcode13.4 Binding Status
- xcode14.0 Binding Status
- xcode14.1 Binding Status
- xcode14.2 Binding Status
- xcode14.3 Binding Status
- xcode15.0 Binding Status
- xcode15.1 Binding Status
- xcode15.3 Binding Status
- xcode15.4 Binding Status
- xcode16.0 Binding Status
- xcode16.1 Binding Status
- xcode16.2 Binding Status