Skip to content

Commit 534d1df

Browse files
authored
[nativeaot][tests] Add Native AOT iOS perf scenarios (#85317)
This PR updates the CI jobs to include the Native AOT iOS performance scenarios. The changes include building the NativeAOT iOS scenarios and running them, as well as updating the underlying scripts and project files to support it. Additionally, it separates the scenarios from the current Mono AOT sample measurements.
1 parent d45a905 commit 534d1df

File tree

10 files changed

+443
-61
lines changed

10 files changed

+443
-61
lines changed

eng/pipelines/coreclr/perf-non-wasm-jobs.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,27 @@ jobs:
102102
archiveType: tar
103103
tarCompression: gz
104104

105+
# build NativeAOT iOS scenarios
106+
- template: /eng/pipelines/common/platform-matrix.yml
107+
parameters:
108+
jobTemplate: /eng/pipelines/common/global-build-job.yml
109+
buildConfig: release
110+
runtimeFlavor: mono
111+
platforms:
112+
- ios_arm64
113+
jobParameters:
114+
nameSuffix: iOSNativeAOT
115+
isOfficialBuild: false
116+
extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
117+
extraStepsParameters:
118+
rootFolder: '$(Build.SourcesDirectory)/artifacts/'
119+
includeRootFolder: true
120+
displayName: iOS NativeAOT Artifacts
121+
artifactName: iOSNativeAOTarm64
122+
archiveExtension: '.tar.gz'
123+
archiveType: tar
124+
tarCompression: gz
125+
105126
# build mono
106127
- template: /eng/pipelines/common/platform-matrix.yml
107128
parameters:
@@ -143,6 +164,24 @@ jobs:
143164
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
144165
logicalmachine: 'perfiphone12mini'
145166
iOSLlvmBuild: False
167+
iOSStripSymbols: False
168+
169+
- template: /eng/pipelines/common/platform-matrix.yml
170+
parameters:
171+
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
172+
buildConfig: release
173+
runtimeFlavor: mono
174+
platforms:
175+
- osx_x64
176+
jobParameters:
177+
testGroup: perf
178+
runtimeType: iOSMono
179+
projectFile: ios_scenarios.proj
180+
runKind: ios_scenarios
181+
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
182+
logicalmachine: 'perfiphone12mini'
183+
iOSLlvmBuild: False
184+
iOSStripSymbols: True
146185

147186
- template: /eng/pipelines/common/platform-matrix.yml
148187
parameters:
@@ -159,6 +198,57 @@ jobs:
159198
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
160199
logicalmachine: 'perfiphone12mini'
161200
iOSLlvmBuild: True
201+
iOSStripSymbols: False
202+
203+
- template: /eng/pipelines/common/platform-matrix.yml
204+
parameters:
205+
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
206+
buildConfig: release
207+
runtimeFlavor: mono
208+
platforms:
209+
- osx_x64
210+
jobParameters:
211+
testGroup: perf
212+
runtimeType: iOSMono
213+
projectFile: ios_scenarios.proj
214+
runKind: ios_scenarios
215+
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
216+
logicalmachine: 'perfiphone12mini'
217+
iOSLlvmBuild: True
218+
iOSStripSymbols: True
219+
220+
# run NativeAOT iOS scenarios
221+
- template: /eng/pipelines/common/platform-matrix.yml
222+
parameters:
223+
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
224+
buildConfig: release
225+
runtimeFlavor: mono
226+
platforms:
227+
- osx_x64
228+
jobParameters:
229+
testGroup: perf
230+
runtimeType: iOSNativeAOT
231+
projectFile: ios_nativeaot_scenarios.proj
232+
runKind: ios_scenarios
233+
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
234+
logicalmachine: 'perfiphone12mini'
235+
iOSStripSymbols: False
236+
237+
- template: /eng/pipelines/common/platform-matrix.yml
238+
parameters:
239+
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
240+
buildConfig: release
241+
runtimeFlavor: mono
242+
platforms:
243+
- osx_x64
244+
jobParameters:
245+
testGroup: perf
246+
runtimeType: iOSNativeAOT
247+
projectFile: ios_nativeaot_scenarios.proj
248+
runKind: ios_scenarios
249+
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
250+
logicalmachine: 'perfiphone12mini'
251+
iOSStripSymbols: True
162252

163253
# run mono microbenchmarks perf job
164254
- template: /eng/pipelines/common/platform-matrix.yml

eng/pipelines/coreclr/templates/build-perf-sample-apps.yml

Lines changed: 95 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ steps:
3535
- script: rm -r -f $(Build.SourcesDirectory)/artifacts/bin/AndroidSampleApp
3636
workingDirectory: $(Build.SourcesDirectory)/artifacts/bin
3737
displayName: clean bindir
38-
39-
- ${{ if eq(parameters.osGroup, 'ios') }}:
40-
- script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false
38+
39+
- ${{ if and(eq(parameters.osGroup, 'ios'), eq(parameters.nameSuffix, 'iOSMono')) }}:
40+
- script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false
4141
env:
4242
DevTeamProvisioning: '-'
4343
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
44-
displayName: Build HelloiOS AOT sample app LLVM=False
44+
displayName: Build HelloiOS AOT sample app LLVM=False STRIP_SYMBOLS=False
4545
- task: PublishBuildArtifacts@1
4646
condition: succeededOrFailed()
4747
displayName: 'Publish binlog'
@@ -53,17 +53,39 @@ steps:
5353
rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/publish/app/HelloiOS/Release-iphoneos/HelloiOS.app
5454
includeRootFolder: true
5555
displayName: iOS Sample App NoLLVM
56-
artifactName: iOSSampleAppNoLLVM
56+
artifactName: iOSSampleAppNoLLVMSymbols
5757
archiveExtension: '.zip'
5858
archiveType: zip
5959
- script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS/bin
6060
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
6161
displayName: Clean bindir
62-
- script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false
62+
- script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true
6363
env:
6464
DevTeamProvisioning: '-'
6565
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
66-
displayName: Build HelloiOS AOT sample app LLVM=True
66+
displayName: Build HelloiOS AOT sample app LLVM=False STRIP_SYMBOLS=True
67+
- task: PublishBuildArtifacts@1
68+
condition: succeededOrFailed()
69+
displayName: 'Publish binlog'
70+
inputs:
71+
pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog
72+
artifactName: ${{ parameters.artifactName }}
73+
- template: /eng/pipelines/common/upload-artifact-step.yml
74+
parameters:
75+
rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/publish/app/HelloiOS/Release-iphoneos/HelloiOS.app
76+
includeRootFolder: true
77+
displayName: iOS Sample App NoLLVM NoSymbols
78+
artifactName: iOSSampleAppNoLLVMNoSymbols
79+
archiveExtension: '.zip'
80+
archiveType: zip
81+
- script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS/bin
82+
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
83+
displayName: Clean bindir
84+
- script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false
85+
env:
86+
DevTeamProvisioning: '-'
87+
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
88+
displayName: Build HelloiOS AOT sample app LLVM=True STRIP_SYMBOLS=False
6789
- task: PublishBuildArtifacts@1
6890
condition: succeededOrFailed()
6991
displayName: 'Publish binlog'
@@ -75,6 +97,71 @@ steps:
7597
rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/publish/app/HelloiOS/Release-iphoneos/HelloiOS.app
7698
includeRootFolder: true
7799
displayName: iOS Sample App LLVM
78-
artifactName: iOSSampleAppLLVM
100+
artifactName: iOSSampleAppLLVMSymbols
101+
archiveExtension: '.zip'
102+
archiveType: zip
103+
- script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS/bin
104+
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
105+
displayName: Clean bindir
106+
- script: make build-appbundle TARGET=ios MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true
107+
env:
108+
DevTeamProvisioning: '-'
109+
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
110+
displayName: Build HelloiOS AOT sample app LLVM=True STRIP_SYMBOLS=True
111+
- task: PublishBuildArtifacts@1
112+
condition: succeededOrFailed()
113+
displayName: 'Publish binlog'
114+
inputs:
115+
pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog
116+
artifactName: ${{ parameters.artifactName }}
117+
- template: /eng/pipelines/common/upload-artifact-step.yml
118+
parameters:
119+
rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/publish/app/HelloiOS/Release-iphoneos/HelloiOS.app
120+
includeRootFolder: true
121+
displayName: iOS Sample App LLVM NoSymbols
122+
artifactName: iOSSampleAppLLVMNoSymbols
79123
archiveExtension: '.zip'
80124
archiveType: zip
125+
126+
- ${{ if and(eq(parameters.osGroup, 'ios'), eq(parameters.nameSuffix, 'iOSNativeAOT')) }}:
127+
- script: make world TARGET_OS=ios TARGET_ARCH=arm64 BUILD_CONFIG=Release DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=false
128+
env:
129+
DevTeamProvisioning: '-'
130+
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT
131+
displayName: Build HelloiOS Native AOT sample app STRIP_SYMBOLS=False
132+
- task: PublishBuildArtifacts@1
133+
condition: succeededOrFailed()
134+
displayName: 'Publish binlog'
135+
inputs:
136+
pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/msbuild.binlog
137+
artifactName: ${{ parameters.artifactName }}
138+
- template: /eng/pipelines/common/upload-artifact-step.yml
139+
parameters:
140+
rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/bin/publish/app/HelloiOS/Release-iphoneos/HelloiOS.app
141+
includeRootFolder: true
142+
displayName: iOS Sample App Symbols
143+
artifactName: iOSSampleAppSymbols
144+
archiveExtension: '.zip'
145+
archiveType: zip
146+
- script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/bin
147+
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT
148+
displayName: Clean bindir
149+
- script: make world TARGET_OS=ios TARGET_ARCH=arm64 BUILD_CONFIG=Release DEPLOY_AND_RUN=false STRIP_DEBUG_SYMBOLS=true
150+
env:
151+
DevTeamProvisioning: '-'
152+
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT
153+
displayName: Build HelloiOS Native AOT sample app STRIP_SYMBOLS=True
154+
- task: PublishBuildArtifacts@1
155+
condition: succeededOrFailed()
156+
displayName: 'Publish binlog'
157+
inputs:
158+
pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/msbuild.binlog
159+
artifactName: ${{ parameters.artifactName }}
160+
- template: /eng/pipelines/common/upload-artifact-step.yml
161+
parameters:
162+
rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/bin/publish/app/HelloiOS/Release-iphoneos/HelloiOS.app
163+
includeRootFolder: true
164+
displayName: iOS Sample App NoSymbols
165+
artifactName: iOSSampleAppNoSymbols
166+
archiveExtension: '.zip'
167+
archiveType: zip

0 commit comments

Comments
 (0)