Skip to content

Commit 1eeded1

Browse files
authored
Let the app check "aatp/data" subdir for AWS.
Differential Revision: D62409615 Pull Request resolved: #5208
1 parent 083b9e6 commit 1eeded1

File tree

2 files changed

+130
-107
lines changed

2 files changed

+130
-107
lines changed

extension/apple/Benchmark/Benchmark.xcodeproj/project.pbxproj

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
03B2D3682C8A515A0046936E /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03B2D3672C8A515A0046936E /* App.swift */; };
1111
03B2D37A2C8A515C0046936E /* Tests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 03B2D3792C8A515C0046936E /* Tests.mm */; };
1212
03C7FA382C8AA3EC00E6E9AE /* Models in Resources */ = {isa = PBXBuildFile; fileRef = 03C7FA322C8AA24200E6E9AE /* Models */; };
13-
03ED6CFF2C8AAFB300F2D6EE /* backend_coreml.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6CFE2C8AAFB300F2D6EE /* backend_coreml.xcframework */; };
14-
03ED6D012C8AAFB300F2D6EE /* backend_mps.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D002C8AAFB300F2D6EE /* backend_mps.xcframework */; };
15-
03ED6D032C8AAFB300F2D6EE /* backend_xnnpack.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D022C8AAFB300F2D6EE /* backend_xnnpack.xcframework */; };
16-
03ED6D052C8AAFB300F2D6EE /* executorch.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D042C8AAFB300F2D6EE /* executorch.xcframework */; };
17-
03ED6D072C8AAFB300F2D6EE /* kernels_custom.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D062C8AAFB300F2D6EE /* kernels_custom.xcframework */; };
18-
03ED6D092C8AAFB300F2D6EE /* kernels_optimized.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D082C8AAFB300F2D6EE /* kernels_optimized.xcframework */; };
19-
03ED6D0B2C8AAFB300F2D6EE /* kernels_portable.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D0A2C8AAFB300F2D6EE /* kernels_portable.xcframework */; };
20-
03ED6D0D2C8AAFB300F2D6EE /* kernels_quantized.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D0C2C8AAFB300F2D6EE /* kernels_quantized.xcframework */; };
13+
03DD00A92C8FE44600FE4619 /* backend_coreml.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD00992C8FE44600FE4619 /* backend_coreml.xcframework */; };
14+
03DD00AA2C8FE44600FE4619 /* kernels_custom.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD009A2C8FE44600FE4619 /* kernels_custom.xcframework */; };
15+
03DD00AF2C8FE44600FE4619 /* kernels_portable.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD009F2C8FE44600FE4619 /* kernels_portable.xcframework */; };
16+
03DD00B02C8FE44600FE4619 /* kernels_optimized.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD00A02C8FE44600FE4619 /* kernels_optimized.xcframework */; };
17+
03DD00B12C8FE44600FE4619 /* backend_xnnpack.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD00A12C8FE44600FE4619 /* backend_xnnpack.xcframework */; };
18+
03DD00B22C8FE44600FE4619 /* backend_mps.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD00A22C8FE44600FE4619 /* backend_mps.xcframework */; };
19+
03DD00B32C8FE44600FE4619 /* executorch.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD00A32C8FE44600FE4619 /* executorch.xcframework */; settings = {ATTRIBUTES = (Required, ); }; };
20+
03DD00B52C8FE44600FE4619 /* kernels_quantized.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DD00A52C8FE44600FE4619 /* kernels_quantized.xcframework */; };
2121
03ED6D0F2C8AAFE900F2D6EE /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D0E2C8AAFE900F2D6EE /* libsqlite3.0.tbd */; };
2222
03ED6D112C8AAFF200F2D6EE /* MetalPerformanceShadersGraph.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D102C8AAFF200F2D6EE /* MetalPerformanceShadersGraph.framework */; };
2323
03ED6D132C8AAFF700F2D6EE /* MetalPerformanceShaders.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ED6D122C8AAFF700F2D6EE /* MetalPerformanceShaders.framework */; };
@@ -45,14 +45,14 @@
4545
03B2D3752C8A515C0046936E /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4646
03B2D3792C8A515C0046936E /* Tests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Tests.mm; sourceTree = "<group>"; };
4747
03C7FA322C8AA24200E6E9AE /* Models */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Models; sourceTree = SOURCE_ROOT; };
48-
03ED6CFE2C8AAFB300F2D6EE /* backend_coreml.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = backend_coreml.xcframework; path = Frameworks/backend_coreml.xcframework; sourceTree = "<group>"; };
49-
03ED6D002C8AAFB300F2D6EE /* backend_mps.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = backend_mps.xcframework; path = Frameworks/backend_mps.xcframework; sourceTree = "<group>"; };
50-
03ED6D022C8AAFB300F2D6EE /* backend_xnnpack.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = backend_xnnpack.xcframework; path = Frameworks/backend_xnnpack.xcframework; sourceTree = "<group>"; };
51-
03ED6D042C8AAFB300F2D6EE /* executorch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = executorch.xcframework; path = Frameworks/executorch.xcframework; sourceTree = "<group>"; };
52-
03ED6D062C8AAFB300F2D6EE /* kernels_custom.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_custom.xcframework; path = Frameworks/kernels_custom.xcframework; sourceTree = "<group>"; };
53-
03ED6D082C8AAFB300F2D6EE /* kernels_optimized.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_optimized.xcframework; path = Frameworks/kernels_optimized.xcframework; sourceTree = "<group>"; };
54-
03ED6D0A2C8AAFB300F2D6EE /* kernels_portable.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_portable.xcframework; path = Frameworks/kernels_portable.xcframework; sourceTree = "<group>"; };
55-
03ED6D0C2C8AAFB300F2D6EE /* kernels_quantized.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_quantized.xcframework; path = Frameworks/kernels_quantized.xcframework; sourceTree = "<group>"; };
48+
03DD00992C8FE44600FE4619 /* backend_coreml.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = backend_coreml.xcframework; path = Frameworks/backend_coreml.xcframework; sourceTree = "<group>"; };
49+
03DD009A2C8FE44600FE4619 /* kernels_custom.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_custom.xcframework; path = Frameworks/kernels_custom.xcframework; sourceTree = "<group>"; };
50+
03DD009F2C8FE44600FE4619 /* kernels_portable.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_portable.xcframework; path = Frameworks/kernels_portable.xcframework; sourceTree = "<group>"; };
51+
03DD00A02C8FE44600FE4619 /* kernels_optimized.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_optimized.xcframework; path = Frameworks/kernels_optimized.xcframework; sourceTree = "<group>"; };
52+
03DD00A12C8FE44600FE4619 /* backend_xnnpack.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = backend_xnnpack.xcframework; path = Frameworks/backend_xnnpack.xcframework; sourceTree = "<group>"; };
53+
03DD00A22C8FE44600FE4619 /* backend_mps.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = backend_mps.xcframework; path = Frameworks/backend_mps.xcframework; sourceTree = "<group>"; };
54+
03DD00A32C8FE44600FE4619 /* executorch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = executorch.xcframework; path = Frameworks/executorch.xcframework; sourceTree = "<group>"; };
55+
03DD00A52C8FE44600FE4619 /* kernels_quantized.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = kernels_quantized.xcframework; path = Frameworks/kernels_quantized.xcframework; sourceTree = "<group>"; };
5656
03ED6D0E2C8AAFE900F2D6EE /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.5.sdk/usr/lib/libsqlite3.0.tbd; sourceTree = DEVELOPER_DIR; };
5757
03ED6D102C8AAFF200F2D6EE /* MetalPerformanceShadersGraph.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalPerformanceShadersGraph.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.5.sdk/System/Library/Frameworks/MetalPerformanceShadersGraph.framework; sourceTree = DEVELOPER_DIR; };
5858
03ED6D122C8AAFF700F2D6EE /* MetalPerformanceShaders.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalPerformanceShaders.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.5.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework; sourceTree = DEVELOPER_DIR; };
@@ -79,14 +79,14 @@
7979
03ED6D132C8AAFF700F2D6EE /* MetalPerformanceShaders.framework in Frameworks */,
8080
03ED6D112C8AAFF200F2D6EE /* MetalPerformanceShadersGraph.framework in Frameworks */,
8181
03ED6D0F2C8AAFE900F2D6EE /* libsqlite3.0.tbd in Frameworks */,
82-
03ED6CFF2C8AAFB300F2D6EE /* backend_coreml.xcframework in Frameworks */,
83-
03ED6D032C8AAFB300F2D6EE /* backend_xnnpack.xcframework in Frameworks */,
84-
03ED6D092C8AAFB300F2D6EE /* kernels_optimized.xcframework in Frameworks */,
85-
03ED6D012C8AAFB300F2D6EE /* backend_mps.xcframework in Frameworks */,
86-
03ED6D0D2C8AAFB300F2D6EE /* kernels_quantized.xcframework in Frameworks */,
87-
03ED6D0B2C8AAFB300F2D6EE /* kernels_portable.xcframework in Frameworks */,
88-
03ED6D052C8AAFB300F2D6EE /* executorch.xcframework in Frameworks */,
89-
03ED6D072C8AAFB300F2D6EE /* kernels_custom.xcframework in Frameworks */,
82+
03DD00A92C8FE44600FE4619 /* backend_coreml.xcframework in Frameworks */,
83+
03DD00B22C8FE44600FE4619 /* backend_mps.xcframework in Frameworks */,
84+
03DD00B12C8FE44600FE4619 /* backend_xnnpack.xcframework in Frameworks */,
85+
03DD00B32C8FE44600FE4619 /* executorch.xcframework in Frameworks */,
86+
03DD00AA2C8FE44600FE4619 /* kernels_custom.xcframework in Frameworks */,
87+
03DD00B02C8FE44600FE4619 /* kernels_optimized.xcframework in Frameworks */,
88+
03DD00AF2C8FE44600FE4619 /* kernels_portable.xcframework in Frameworks */,
89+
03DD00B52C8FE44600FE4619 /* kernels_quantized.xcframework in Frameworks */,
9090
);
9191
runOnlyForDeploymentPostprocessing = 0;
9292
};
@@ -141,14 +141,14 @@
141141
03ED6D122C8AAFF700F2D6EE /* MetalPerformanceShaders.framework */,
142142
03ED6D102C8AAFF200F2D6EE /* MetalPerformanceShadersGraph.framework */,
143143
03ED6D0E2C8AAFE900F2D6EE /* libsqlite3.0.tbd */,
144-
03ED6CFE2C8AAFB300F2D6EE /* backend_coreml.xcframework */,
145-
03ED6D002C8AAFB300F2D6EE /* backend_mps.xcframework */,
146-
03ED6D022C8AAFB300F2D6EE /* backend_xnnpack.xcframework */,
147-
03ED6D042C8AAFB300F2D6EE /* executorch.xcframework */,
148-
03ED6D062C8AAFB300F2D6EE /* kernels_custom.xcframework */,
149-
03ED6D082C8AAFB300F2D6EE /* kernels_optimized.xcframework */,
150-
03ED6D0A2C8AAFB300F2D6EE /* kernels_portable.xcframework */,
151-
03ED6D0C2C8AAFB300F2D6EE /* kernels_quantized.xcframework */,
144+
03DD00992C8FE44600FE4619 /* backend_coreml.xcframework */,
145+
03DD00A22C8FE44600FE4619 /* backend_mps.xcframework */,
146+
03DD00A12C8FE44600FE4619 /* backend_xnnpack.xcframework */,
147+
03DD00A32C8FE44600FE4619 /* executorch.xcframework */,
148+
03DD009A2C8FE44600FE4619 /* kernels_custom.xcframework */,
149+
03DD00A02C8FE44600FE4619 /* kernels_optimized.xcframework */,
150+
03DD009F2C8FE44600FE4619 /* kernels_portable.xcframework */,
151+
03DD00A52C8FE44600FE4619 /* kernels_quantized.xcframework */,
152152
);
153153
name = Frameworks;
154154
sourceTree = SOURCE_ROOT;

extension/apple/Benchmark/Tests/Tests.mm

Lines changed: 98 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -22,82 +22,105 @@ @interface Tests : XCTestCase
2222
@implementation Tests
2323

2424
+ (void)initialize {
25-
if (self == [Tests class]) {
26-
NSString *modelsDir = [[NSBundle bundleForClass:[self class]].resourcePath
27-
stringByAppendingPathComponent:@"Models"];
28-
NSArray *models =
29-
[NSFileManager.defaultManager contentsOfDirectoryAtPath:modelsDir
30-
error:nil];
31-
for (NSString *model in models) {
32-
NSString *modelName = model.stringByDeletingPathExtension;
33-
NSString *modelPath = [modelsDir stringByAppendingPathComponent:model];
34-
XCTAssertGreaterThan(modelPath.length, 0);
35-
36-
SEL testLoadSelector = NSSelectorFromString(
37-
[NSString stringWithFormat:@"test_load_%@", modelName]);
38-
IMP testLoadImplementation = imp_implementationWithBlock(^(id _self) {
39-
auto __block module = std::make_unique<Module>(modelPath.UTF8String);
40-
[_self
41-
measureWithMetrics:@[ [XCTClockMetric new], [XCTMemoryMetric new] ]
42-
options:XCTMeasureOptions.defaultOptions
43-
block:^{
44-
XCTAssertEqual(module->load_method("forward"),
45-
Error::Ok);
46-
}];
47-
});
48-
class_addMethod(
49-
[self class], testLoadSelector, testLoadImplementation, "v@:");
50-
51-
SEL testForwardSelector = NSSelectorFromString(
52-
[NSString stringWithFormat:@"test_forward_%@", modelName]);
53-
IMP testForwardImplementation = imp_implementationWithBlock(^(id _self) {
54-
auto __block module = std::make_unique<Module>(modelPath.UTF8String);
55-
XCTAssertEqual(module->load_method("forward"), Error::Ok);
56-
57-
const auto method_meta = module->method_meta("forward");
58-
XCTAssertEqual(method_meta.error(), Error::Ok);
59-
60-
const auto num_inputs = method_meta->num_inputs();
61-
XCTAssertGreaterThan(num_inputs, 0);
62-
63-
std::vector<std::vector<uint8_t>> buffers;
64-
buffers.reserve(num_inputs);
65-
std::vector<TensorPtr> tensors;
66-
tensors.reserve(num_inputs);
67-
std::vector<EValue> __block inputs;
68-
inputs.reserve(num_inputs);
69-
70-
for (auto index = 0; index < num_inputs; ++index) {
71-
auto input_tag = method_meta->input_tag(index);
72-
XCTAssertEqual(input_tag.error(), Error::Ok);
73-
74-
switch (*input_tag) {
75-
case Tag::Tensor: {
76-
const auto tensor_meta = method_meta->input_tensor_meta(index);
77-
XCTAssertEqual(tensor_meta.error(), Error::Ok);
78-
79-
const auto sizes = tensor_meta->sizes();
80-
buffers.emplace_back(tensor_meta->nbytes(),
81-
0b01010101); // Set all bytes to be non-zero.
82-
tensors.emplace_back(from_blob(buffers.rbegin()->data(),
83-
{sizes.begin(), sizes.end()},
84-
tensor_meta->scalar_type()));
85-
inputs.emplace_back(tensors.back());
86-
} break;
87-
default:
88-
XCTFail("Unsupported tag %i at input %d", *input_tag, index);
89-
}
25+
if (self != [self class]) {
26+
return;
27+
}
28+
for (NSBundle *bundle in @[
29+
[NSBundle mainBundle],
30+
[NSBundle bundleForClass:[self class]],
31+
]) {
32+
for (NSString *directory in @[
33+
@"Models",
34+
@"aatp/data",
35+
]) {
36+
NSString *directoryPath =
37+
[bundle.resourcePath stringByAppendingPathComponent:directory];
38+
NSArray *filePaths =
39+
[NSFileManager.defaultManager contentsOfDirectoryAtPath:directoryPath
40+
error:nil];
41+
for (NSString *filePath in filePaths) {
42+
if (![filePath hasSuffix:@".pte"]) {
43+
continue;
9044
}
91-
[_self
92-
measureWithMetrics:@[ [XCTClockMetric new], [XCTMemoryMetric new] ]
93-
options:XCTMeasureOptions.defaultOptions
94-
block:^{
95-
XCTAssertEqual(module->forward(inputs).error(),
96-
Error::Ok);
97-
}];
98-
});
99-
class_addMethod(
100-
[self class], testForwardSelector, testForwardImplementation, "v@:");
45+
NSString *modelPath =
46+
[directoryPath stringByAppendingPathComponent:filePath];
47+
NSString *directoryName =
48+
[directory stringByReplacingOccurrencesOfString:@"/"
49+
withString:@"_"]
50+
.lowercaseString;
51+
NSString *modelName =
52+
modelPath.lastPathComponent.stringByDeletingPathExtension;
53+
54+
SEL testLoadSelector = NSSelectorFromString([NSString
55+
stringWithFormat:@"test_load_%@_%@", directoryName, modelName]);
56+
IMP testLoadImplementation = imp_implementationWithBlock(^(id _self) {
57+
auto __block module = std::make_unique<Module>(modelPath.UTF8String);
58+
[_self measureWithMetrics:@[
59+
[XCTClockMetric new],
60+
[XCTMemoryMetric new],
61+
]
62+
options:XCTMeasureOptions.defaultOptions
63+
block:^{
64+
XCTAssertEqual(module->load_method("forward"),
65+
Error::Ok);
66+
}];
67+
});
68+
class_addMethod(
69+
[self class], testLoadSelector, testLoadImplementation, "v@:");
70+
71+
SEL testForwardSelector = NSSelectorFromString([NSString
72+
stringWithFormat:@"test_forward_%@_%@", directoryName, modelName]);
73+
IMP testForwardImplementation = imp_implementationWithBlock(^(
74+
id _self) {
75+
auto __block module = std::make_unique<Module>(modelPath.UTF8String);
76+
XCTAssertEqual(module->load_method("forward"), Error::Ok);
77+
78+
const auto method_meta = module->method_meta("forward");
79+
XCTAssertEqual(method_meta.error(), Error::Ok);
80+
81+
const auto num_inputs = method_meta->num_inputs();
82+
XCTAssertGreaterThan(num_inputs, 0);
83+
84+
std::vector<TensorPtr> __block tensors;
85+
tensors.reserve(num_inputs);
86+
std::vector<EValue> __block inputs;
87+
inputs.reserve(num_inputs);
88+
89+
for (auto index = 0; index < num_inputs; ++index) {
90+
const auto input_tag = method_meta->input_tag(index);
91+
XCTAssertEqual(input_tag.error(), Error::Ok);
92+
93+
switch (*input_tag) {
94+
case Tag::Tensor: {
95+
const auto tensor_meta = method_meta->input_tensor_meta(index);
96+
XCTAssertEqual(tensor_meta.error(), Error::Ok);
97+
98+
const auto sizes = tensor_meta->sizes();
99+
tensors.emplace_back(make_tensor_ptr(
100+
tensor_meta->scalar_type(),
101+
{sizes.begin(), sizes.end()},
102+
std::vector<uint8_t>(tensor_meta->nbytes(), 0b01010101)));
103+
inputs.emplace_back(tensors.back());
104+
} break;
105+
default:
106+
XCTFail("Unsupported tag %i at input %d", *input_tag, index);
107+
}
108+
}
109+
[_self measureWithMetrics:@[
110+
[XCTClockMetric new],
111+
[XCTMemoryMetric new],
112+
]
113+
options:XCTMeasureOptions.defaultOptions
114+
block:^{
115+
XCTAssertEqual(module->forward(inputs).error(),
116+
Error::Ok);
117+
}];
118+
});
119+
class_addMethod([self class],
120+
testForwardSelector,
121+
testForwardImplementation,
122+
"v@:");
123+
}
101124
}
102125
}
103126
}

0 commit comments

Comments
 (0)