File size: 12,413 Bytes
c1af2fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#pragma once
#include <MetalPerformanceShadersGraph/MetalPerformanceShadersGraph.h>

// TODO: Remove me when moved to MacOS 13
#if !defined(__MAC_13_2) && (!defined(MAC_OS_X_VERSION_13_2) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_13_2))

@interface FakeMPSGraphConvolution3DOpDescriptor : NSObject<NSCopying>

@property(readwrite, nonatomic) NSUInteger strideInX;
@property(readwrite, nonatomic) NSUInteger strideInY;
@property(readwrite, nonatomic) NSUInteger strideInZ;
@property(readwrite, nonatomic) NSUInteger dilationRateInX;
@property(readwrite, nonatomic) NSUInteger dilationRateInY;
@property(readwrite, nonatomic) NSUInteger dilationRateInZ;

@property(readwrite, nonatomic) NSUInteger paddingLeft;
@property(readwrite, nonatomic) NSUInteger paddingRight;
@property(readwrite, nonatomic) NSUInteger paddingTop;
@property(readwrite, nonatomic) NSUInteger paddingBottom;
@property(readwrite, nonatomic) NSUInteger paddingFront;
@property(readwrite, nonatomic) NSUInteger paddingBack;

@property(readwrite, nonatomic) MPSGraphPaddingStyle paddingStyle;
@property(readwrite, nonatomic) MPSGraphTensorNamedDataLayout dataLayout;
@property(readwrite, nonatomic) MPSGraphTensorNamedDataLayout weightsLayout;

@property(readwrite, nonatomic) NSUInteger groups;

@end

@compatibility_alias MPSGraphConvolution3DOpDescriptor FakeMPSGraphConvolution3DOpDescriptor;

#endif

@interface MPSGraph (VenturaOps)

#if !defined(__MAC_13_0) && (!defined(MAC_OS_X_VERSION_13_0) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_13_0))

typedef NS_ENUM(NSUInteger, MPSGraphResizeNearestRoundingMode) {
  MPSGraphResizeNearestRoundingModeRoundPreferCeil = 0L,
  MPSGraphResizeNearestRoundingModeRoundPreferFloor = 1L,
  MPSGraphResizeNearestRoundingModeCeil = 2L,
  MPSGraphResizeNearestRoundingModeFloor = 3L,
  MPSGraphResizeNearestRoundingModeRoundToEven = 4L,
  MPSGraphResizeNearestRoundingModeRoundToOdd = 5L,
};

// Define complex enums for MacOS 12
#define MPSDataTypeComplexBit 0x01000000
#define MPSDataTypeComplexFloat32 ((MPSDataType)(MPSDataTypeFloatBit | MPSDataTypeComplexBit | 64))
#define MPSDataTypeComplexFloat16 ((MPSDataType)(MPSDataTypeFloatBit | MPSDataTypeComplexBit | 32))
#endif

- (MPSGraphTensor* _Nonnull)convolution3DWithSourceTensor:(MPSGraphTensor* _Nonnull)source
                                            weightsTensor:(MPSGraphTensor* _Nonnull)weights
                                               descriptor:(MPSGraphConvolution3DOpDescriptor* _Nonnull)descriptor
                                                     name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)
    convolution3DDataGradientWithIncomingGradientTensor:(MPSGraphTensor* _Nonnull)incomingGradient
                                          weightsTensor:(MPSGraphTensor* _Nonnull)weights
                                            outputShape:(MPSShape* _Nonnull)outputShape
                           forwardConvolutionDescriptor:
                               (MPSGraphConvolution3DOpDescriptor* _Nonnull)forwardConvolutionDescriptor
                                                   name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)
    convolution3DWeightsGradientWithIncomingGradientTensor:(MPSGraphTensor* _Nonnull)incomingGradient
                                              sourceTensor:(MPSGraphTensor* _Nonnull)source
                                               outputShape:(MPSShape* _Nonnull)outputShape
                              forwardConvolutionDescriptor:
                                  (MPSGraphConvolution3DOpDescriptor* _Nonnull)forwardConvolutionDescriptor
                                                      name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)cumulativeSumWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                               axis:(NSInteger)axis
                                               name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)sortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                      axis:(NSInteger)axis
                                      name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)sortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                      axis:(NSInteger)axis
                                descending:(BOOL)descending
                                      name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)sortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                axisTensor:(MPSGraphTensor* _Nonnull)axisTensor
                                descending:(BOOL)descending
                                      name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)sortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                axisTensor:(MPSGraphTensor* _Nonnull)axisTensor
                                      name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)argSortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                         axis:(NSInteger)axis
                                         name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)argSortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                         axis:(NSInteger)axis
                                   descending:(BOOL)descending
                                         name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)argSortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                   axisTensor:(MPSGraphTensor* _Nonnull)axisTensor
                                   descending:(BOOL)descending
                                         name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)argSortWithTensor:(MPSGraphTensor* _Nonnull)tensor
                                   axisTensor:(MPSGraphTensor* _Nonnull)axisTensor
                                         name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)inverseOfTensor:(MPSGraphTensor* _Nonnull)inputTensor name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeNearestWithTensor:(MPSGraphTensor* _Nonnull)imagesTensor
                                         sizeTensor:(MPSGraphTensor* _Nonnull)size
                                nearestRoundingMode:(MPSGraphResizeNearestRoundingMode)nearestRoundingMode
                                       centerResult:(BOOL)centerResult
                                       alignCorners:(BOOL)alignCorners
                                             layout:(MPSGraphTensorNamedDataLayout)layout
                                               name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeNearestWithTensor:(MPSGraphTensor* _Nonnull)imagesTensor
                                         sizeTensor:(MPSGraphTensor* _Nonnull)size
                                  scaleOffsetTensor:(MPSGraphTensor* _Nonnull)scaleOffset
                                nearestRoundingMode:(MPSGraphResizeNearestRoundingMode)nearestRoundingMode
                                             layout:(MPSGraphTensorNamedDataLayout)layout
                                               name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeBilinearWithTensor:(MPSGraphTensor* _Nonnull)imagesTensor
                                          sizeTensor:(MPSGraphTensor* _Nonnull)size
                                        centerResult:(BOOL)centerResult
                                        alignCorners:(BOOL)alignCorners
                                              layout:(MPSGraphTensorNamedDataLayout)layout
                                                name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeBilinearWithTensor:(MPSGraphTensor* _Nonnull)imagesTensor
                                          sizeTensor:(MPSGraphTensor* _Nonnull)size
                                   scaleOffsetTensor:(MPSGraphTensor* _Nonnull)scaleOffset
                                              layout:(MPSGraphTensorNamedDataLayout)layout
                                                name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeNearestWithGradientTensor:(MPSGraphTensor* _Nonnull)gradient
                                                      input:(MPSGraphTensor* _Nonnull)input
                                        nearestRoundingMode:(MPSGraphResizeNearestRoundingMode)nearestRoundingMode
                                               centerResult:(BOOL)centerResult
                                               alignCorners:(BOOL)alignCorners
                                                     layout:(MPSGraphTensorNamedDataLayout)layout
                                                       name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeNearestWithGradientTensor:(MPSGraphTensor* _Nonnull)gradient
                                                      input:(MPSGraphTensor* _Nonnull)input
                                          scaleOffsetTensor:(MPSGraphTensor* _Nonnull)scaleOffset
                                        nearestRoundingMode:(MPSGraphResizeNearestRoundingMode)nearestRoundingMode
                                                     layout:(MPSGraphTensorNamedDataLayout)layout
                                                       name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeBilinearWithGradientTensor:(MPSGraphTensor* _Nonnull)gradient
                                                       input:(MPSGraphTensor* _Nonnull)input
                                                centerResult:(BOOL)centerResult
                                                alignCorners:(BOOL)alignCorners
                                                      layout:(MPSGraphTensorNamedDataLayout)layout
                                                        name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)resizeBilinearWithGradientTensor:(MPSGraphTensor* _Nonnull)gradient
                                                       input:(MPSGraphTensor* _Nonnull)input
                                           scaleOffsetTensor:(MPSGraphTensor* _Nonnull)scaleOffset
                                                      layout:(MPSGraphTensorNamedDataLayout)layout
                                                        name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)sampleGridWithSourceTensor:(MPSGraphTensor* _Nonnull)source
                                      coordinateTensor:(MPSGraphTensor* _Nonnull)coordinates
                                                layout:(MPSGraphTensorNamedDataLayout)layout
                                  normalizeCoordinates:(BOOL)normalizeCoordinates
                                   relativeCoordinates:(BOOL)relativeCoordinates
                                          alignCorners:(BOOL)alignCorners
                                           paddingMode:(MPSGraphPaddingMode)paddingMode
                                          samplingMode:(MPSGraphResizeMode)samplingMode
                                         constantValue:(double)constantValue
                                                  name:(NSString* _Nullable)name;

- (MPSGraphTensor* _Nonnull)sampleGridWithSourceTensor:(MPSGraphTensor* _Nonnull)source
                                      coordinateTensor:(MPSGraphTensor* _Nonnull)coordinates
                                                layout:(MPSGraphTensorNamedDataLayout)layout
                                  normalizeCoordinates:(BOOL)normalizeCoordinates
                                   relativeCoordinates:(BOOL)relativeCoordinates
                                          alignCorners:(BOOL)alignCorners
                                           paddingMode:(MPSGraphPaddingMode)paddingMode
                                   nearestRoundingMode:(MPSGraphResizeNearestRoundingMode)nearestRoundingMode
                                         constantValue:(double)constantValue
                                                  name:(NSString* _Nullable)name;
- (MPSGraphTensor* _Nonnull)truncateWithTensor:(MPSGraphTensor* _Nonnull)tensor name:(NSString* _Nullable)name;

@end