Skip to content

Commit

Permalink
WIP: Do all superpmi diff/replay setup and Helix queuing on one AzDO …
Browse files Browse the repository at this point in the history
…machine

Currently, we use a win-x86 machine for x86/arm work and a win-x64
machine for x64/arm64 work. The AzDO machine doesn't do very much:
it downloads files, sets up the Helix correlation and payload directories,
and constructs the set of Helix work items to run. Splitting into
two different AzDO machines is an artifact of our YML files using
a very complicated set of templates for setting the Helix queues.
However, we can always use just a single win-x64 Helix queue for everything,
since we do all the work using cross-compilers.

Doing all the work on one AzDO machine would make it simpler to have integrated
diff summarization. See dotnet#80719.

However, even so it might be easier to create integrated summarization
by creating a "summarize" AzDO job that depends on the others. This would
also make it easier to enable native (not cross-compiler) replay, if desired.
  • Loading branch information
BruceForstall committed Feb 20, 2023
1 parent ac7afb9 commit 6ab9dcb
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 21 deletions.
1 change: 0 additions & 1 deletion eng/pipelines/coreclr/superpmi-diffs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ extends:
buildConfig: checked
platforms:
- windows_x64
- windows_x86
helixQueueGroup: ci
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
jobParameters:
Expand Down
64 changes: 48 additions & 16 deletions eng/pipelines/coreclr/templates/superpmi-diffs-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,11 @@ jobs:
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
helixQueues: ${{ parameters.helixQueues }}
dependsOn:
- ${{ format('coreclr_jit_build_{0}{1}_{2}_checked', parameters.osGroup, parameters.osSubgroup, parameters.archType) }}
- ${{ format('coreclr_jit_build_{0}{1}_{2}_release', parameters.osGroup, parameters.osSubgroup, parameters.archType) }}
# We depend on the Checked builds for asm diffs, and Release builds for TP diffs.
- ${{ format('coreclr_jit_build_windows_x64_checked') }}
- ${{ format('coreclr_jit_build_windows_x86_checked') }}
- ${{ format('coreclr_jit_build_windows_x64_release') }}
- ${{ format('coreclr_jit_build_windows_x86_release') }}

variables:

Expand All @@ -38,25 +41,54 @@ jobs:
- ${{ if ne(variable.group, '') }}:
- group: ${{ variable.group }}

- name: releaseProductRootFolderPath
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).Release'
- name: releaseProductArtifactName
value: 'CoreCLRProduct_${{ parameters.pgoType }}_${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_release'
- name: ProductRootFolderPath_x64_checked
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/windows.x64.Checked'
- name: ProductArtifactName_x64_checked
value: 'CoreCLRProduct___windows_x64_checked'

- name: ProductRootFolderPath_x64_release
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/windows.x64.Release'
- name: ProductArtifactName_x64_release
value: 'CoreCLRProduct___windows_x64_release'

- name: ProductRootFolderPath_x86_checked
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/windows.x86.Checked'
- name: ProductArtifactName_x86_checked
value: 'CoreCLRProduct___windows_x86_checked'

- name: ProductRootFolderPath_x86_release
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/windows.x86.Release'
- name: ProductArtifactName_x86_release
value: 'CoreCLRProduct___windows_x86_release'

steps:

# Download jit checked builds
# Download and unpack JIT builds

- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
unpackFolder: $(ProductRootFolderPath_x64_checked)
artifactFileName: '$(ProductArtifactName_x64_checked)$(archiveExtension)'
artifactName: '$(ProductArtifactName_x64_checked)'
displayName: 'JIT x64 checked build'

- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
unpackFolder: $(ProductRootFolderPath_x86_checked)
artifactFileName: '$(ProductArtifactName_x86_checked)$(archiveExtension)'
artifactName: '$(ProductArtifactName_x86_checked)'
displayName: 'JIT x86 checked build'

- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
unpackFolder: $(buildProductRootFolderPath)
artifactFileName: '$(buildProductArtifactName)$(archiveExtension)'
artifactName: '$(buildProductArtifactName)'
displayName: 'JIT checked build'
unpackFolder: $(ProductRootFolderPath_x64_release)
artifactFileName: '$(ProductArtifactName_x64_release)$(archiveExtension)'
artifactName: '$(ProductArtifactName_x64_release)'
displayName: 'JIT x64 release build'

#Download jit release builds
- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
unpackFolder: $(releaseProductRootFolderPath)
artifactFileName: '$(releaseProductArtifactName)$(archiveExtension)'
artifactName: '$(releaseProductArtifactName)'
displayName: 'JIT release build'
unpackFolder: $(ProductRootFolderPath_x86_release)
artifactFileName: '$(ProductArtifactName_x86_release)$(archiveExtension)'
artifactName: '$(ProductArtifactName_x86_release)'
displayName: 'JIT x86 release build'
8 changes: 4 additions & 4 deletions src/coreclr/scripts/superpmi-diffs.proj
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@
</HelixCorrelationPayload>
</ItemGroup>

<ItemGroup Condition="'$(Architecture)' == 'x64'">
<!-- We depend on the fact that all Helix work happens on a Windows x64 machine, and that we can run Windows x86 processes on that machine
when doing the 32-bit SPMI replays. (We don't use cross-bitness compilers during replay.)
-->
<ItemGroup>
<SPMI_Partition Include="win-x64" Platform="windows" Architecture="x64" />
<SPMI_Partition Include="win-arm64" Platform="windows" Architecture="arm64" />
<SPMI_Partition Include="unix-x64" Platform="linux" Architecture="x64" />
<SPMI_Partition Include="linux-arm64" Platform="linux" Architecture="arm64" />
<SPMI_Partition Include="osx-arm64" Platform="osx" Architecture="arm64" />
</ItemGroup>

<ItemGroup Condition="'$(Architecture)' == 'x86'">
<SPMI_Partition Include="win-x86" Platform="windows" Architecture="x86" />
<SPMI_Partition Include="unix-arm" Platform="linux" Architecture="arm" />
</ItemGroup>
Expand Down

0 comments on commit 6ab9dcb

Please sign in to comment.