Compare commits

..

5 Commits

Author SHA1 Message Date
Peter Park
17d04124c1 update links to vllm perf validation doc 2024-10-30 15:52:12 -04:00
Daniel Su
4b8fdf1ae3 External CI: various fixes (#3963) 2024-10-30 15:52:12 -04:00
Joseph Macaranas
c88f3996dc External CI: Add aqlprofile to Tensile test dependencies (#3961) 2024-10-30 15:52:12 -04:00
Peter Park
5b53802c54 add suggestions to vllm perf validation doc 2024-10-30 14:08:35 -04:00
Peter Park
bdeef73263 add vllm performance validation doc 2024-10-30 12:51:40 -04:00
503 changed files with 14690 additions and 80921 deletions

View File

@@ -23,40 +23,8 @@ ROCm-CI Azure DevOps Pipelines contains markup language files that orchestrate b
- [YAML schema](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/?view=azure-pipelines&viewFallbackFrom=azure-devops) - [YAML schema](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/?view=azure-pipelines&viewFallbackFrom=azure-devops)
- [Azure Pipelines Task Index](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/?view=azure-pipelines) - [Azure Pipelines Task Index](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/?view=azure-pipelines)
## VMSS Setup
The Azure VMSS used for build jobs have docker installed during provisioning through the Azure Portal's settings.
Select the VMSS, then go to Settings, Operating system.
In the Custom Data section, select to Modify Custom Data. Enter the code block below and Apply.
```bash
#cloud-config
bootcmd:
- mkdir -p /etc/systemd/system/walinuxagent.service.d
- echo "[Unit]\nAfter=cloud-final.service" > /etc/systemd/system/walinuxagent.service.d/override.conf
- sed "s/After=multi-user.target//g" /lib/systemd/system/cloud-final.service > /etc/systemd/system/cloud-final.service
- systemctl daemon-reload
apt:
sources:
docker.list:
source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable
keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
packages:
- docker-ce
- docker-ce-cli
groups:
- docker
runcmd:
- usermod -aG docker $USER
- systemctl restart docker
- systemctl enable docker
```
## Disclaimer ## Disclaimer
The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions, and typographical errors. The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product and roadmap changes, component and motherboard versionchanges, new model and/or product releases, product differences between differing manufacturers, software changes, BIOS flashes, firmware upgrades, or the like. Any computer system has risks of security vulnerabilities that cannot be completely prevented or mitigated.AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD reserves the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of such revisions or changes.THIS INFORMATION IS PROVIDED AS IS.” AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND ASSUMES NO RESPONSIBILITY FOR ANY INACCURACIES, ERRORS, OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION. AMD SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL AMD BE LIABLE TO ANY PERSON FOR ANY RELIANCE, DIRECT, INDIRECT, SPECIAL, OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF ANY INFORMATION CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. AMD, the AMD Arrow logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc. Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies. The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions, and typographical errors. The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product and roadmap changes, component and motherboard versionchanges, new model and/or product releases, product differences between differing manufacturers, software changes, BIOS flashes, firmware upgrades, or the like. Any computer system has risks of security vulnerabilities that cannot be completely prevented or mitigated.AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD reserves the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of such revisions or changes.THIS INFORMATION IS PROVIDED AS IS.” AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND ASSUMES NO RESPONSIBILITY FOR ANY INACCURACIES, ERRORS, OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION. AMD SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL AMD BE LIABLE TO ANY PERSON FOR ANY RELIANCE, DIRECT, INDIRECT, SPECIAL, OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF ANY INFORMATION CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. AMD, the AMD Arrow logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc. Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies.
© 2024 Advanced Micro Devices, Inc. All Rights Reserved.

View File

@@ -0,0 +1,42 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
resources:
repositories:
- repository: aomp_repo
type: github
endpoint: ROCm
name: ROCm/aomp
ref: amd-mainline-open
- repository: aomp-extras_repo
type: github
endpoint: ROCm
name: ROCm/aomp-extras
ref: amd-mainline-open
- repository: flang_repo
type: github
endpoint: ROCm
name: ROCm/flang
ref: amd-mainline-open
- repository: llvm-project_repo
type: github
endpoint: ROCm
name: ROCm/llvm-project
ref: amd-mainline-open
pipelines:
- pipeline: rocr-runtime_pipeline
source: \ROCR-Runtime
trigger:
branches:
include:
- amd-master
# this job will only be triggered after successful build sequence of llvm-project and ROCR-Runtime
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_COMPONENT_PATH }}/aomp.yml
parameters:
checkoutRepo: aomp_repo

View File

@@ -8,17 +8,17 @@ resources:
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/aomp name: ROCm/aomp
ref: aomp-dev ref: amd-staging
- repository: aomp-extras_repo - repository: aomp-extras_repo
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/aomp-extras name: ROCm/aomp-extras
ref: aomp-dev ref: amd-staging
- repository: flang_repo - repository: flang_repo
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/flang name: ROCm/flang
ref: aomp-dev ref: amd-staging
- repository: llvm-project_repo - repository: llvm-project_repo
type: github type: github
endpoint: ROCm endpoint: ROCm

View File

@@ -1,33 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml@pipelines_repo
parameters:
- name: pipelinesRepoRef
type: string
default: refs/heads/develop
- name: librariesRepoRef
type: string
default: refs/heads/develop
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
ref: ${{ parameters.pipelinesRepoRef }}
- repository: libraries_repo
type: github
endpoint: ROCm
name: ROCm/rocm-libraries
ref: ${{ parameters.librariesRepoRef }}
trigger: none
pr: none
jobs:
- template: /.azuredevops/ci-builds/mathlibs.yml@pipelines_repo
parameters:
checkoutRepo: libraries_repo
buildDependsOn: false

View File

@@ -1,38 +0,0 @@
# entrypoint for kicking off a unified build of the mathlibs
# this template is designed to be called by another pipeline (llvm, clr, etc.)
# `buildDependsOn` will need to be set when calling this template
# passes a `unifiedBuild` param to downstream pipelines, which will prevent duplicate jobs
# logic needs to be added in individual mathlib pipelines for handling `unifiedBuild`
parameters:
- name: checkoutRepo
type: string
default: monorepo
- name: buildDependsOn
type: object
default: false
- name: downstreamComponentMatrix
type: object
default:
- rocRAND:
name: rocRAND
sparseCheckoutDir: projects/rocrand
- rocPRIM:
name: rocPRIM
sparseCheckoutDir: projects/rocprim
- hipBLAS-common:
name: hipBLAS-common
sparseCheckoutDir: projects/hipblas-common
# - composable_kernel:
# name: composable_kernel
# sparseCheckoutDir: projects/composablekernel
jobs:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ parameters.buildDependsOn }}
triggerDownstreamJobs: true
unifiedBuild: true

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: AMDMIGraphX
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
# - name: sparseCheckoutDir
# type: string
# default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -51,12 +27,12 @@ parameters:
type: object type: object
default: default:
- https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz - https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz
- "onnx>=1.14.1" - onnx>=1.14.1
- "numpy>=1.21.6" - numpy>=1.21.6
- "typing>=3.7.4" - typing>=3.7.4
- "pytest>=6.0.1" - pytest>=6.0.1
- "packaging>=23.0" - packaging>=23.0
- "protobuf>=3.20.2" - protobuf>=3.20.2
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -96,153 +72,126 @@ parameters:
- rocprofiler-register - rocprofiler-register
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: AMDMIGraphX
- job: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_ubuntu2204_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
cmakeVersion: '3.28.6' checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml # half version should be fixed to 5.6.0
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencySource: fixed
# half version should be fixed to 5.6.0 fixedComponentName: half
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml fixedPipelineIdentifier: ${{ variables.HALF560_PIPELINE_ID }}
parameters: skipLibraryLinking: true
buildType: specific skipLlvmSymlink: true
definitionId: ${{ variables.HALF560_PIPELINE_ID }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
buildId: ${{ variables.HALF560_BUILD_ID }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
${{ if parameters.triggerDownstreamJobs }}: ${{ elseif ne(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release
-DGPU_TARGETS=${{ job.target }} -DGPU_TARGETS=$(JOB_GPU_TARGET)
-DAMDGPU_TARGETS=${{ job.target }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm -DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include
-DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include -DBUILD_TESTING=ON
-DBUILD_TESTING=ON -GNinja
-GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: AMDMIGraphX_testing
- job: ${{ parameters.componentName }}_test_ubuntu2204_${{ job.target }} dependsOn: AMDMIGraphX
dependsOn: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), - name: MIGRAPHX_TRACE_BENCHMARKING
eq(${{ parameters.aggregatePipeline }}, False) value: 1
) pool: $(JOB_TEST_POOL)
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
- name: MIGRAPHX_TRACE_BENCHMARKING matrix:
value: 1 gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
cmakeVersion: '3.28.6' checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
# half version should be fixed to 5.6.0 dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml # half version should be fixed to 5.6.0
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
buildType: specific parameters:
definitionId: ${{ variables.HALF560_PIPELINE_ID }} dependencySource: fixed
buildId: ${{ variables.HALF560_BUILD_ID }} fixedComponentName: half
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml fixedPipelineIdentifier: ${{ variables.HALF560_PIPELINE_ID }}
parameters: skipLibraryLinking: true
checkoutRef: ${{ parameters.checkoutRef }} skipLlvmSymlink: true
dependencyList: ${{ parameters.rocmTestDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
gpuTarget: ${{ job.target }} parameters:
${{ if parameters.triggerDownstreamJobs }}: dependencyList: ${{ parameters.rocmTestDependencies }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} gpuTarget: $(JOB_GPU_TARGET)
- task: CMake@1 # CI case: download latest default branch build
displayName: MIGraphXTest CMake Flags ${{ if eq(parameters.checkoutRef, '') }}:
inputs: dependencySource: staging
cmakeArgs: >- # manual build case: triggered by ROCm/ROCm repo
-DCMAKE_BUILD_TYPE=Release ${{ elseif ne(parameters.checkoutRef, '') }}:
-DGPU_TARGETS=${{ job.target }} dependencySource: tag-builds
-DAMDGPU_TARGETS=${{ job.target }} - task: CMake@1
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ displayName: MIGraphXTest CMake Flags
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip inputs:
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm cmakeArgs: >-
-DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include -DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTING=ON -DGPU_TARGETS=$(JOB_GPU_TARGET)
-DMIGRAPHX_ENABLE_C_API_TEST=ON -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
.. -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml -DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include
parameters: -DBUILD_TESTING=ON
componentName: ${{ parameters.componentName }} -DMIGRAPHX_ENABLE_C_API_TEST=ON
testExecutable: make ..
testParameters: -j$(nproc) check - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
testPublishResults: false - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml parameters:
parameters: componentName: AMDMIGraphX
aptPackages: ${{ parameters.aptPackages }} testExecutable: make
pipModules: ${{ parameters.pipModules }} testParameters: -j$(nproc) check
environment: test testPublishResults: false
gpuTarget: ${{ job.target }}
extraEnvVars:
- MIGRAPHX_TRACE_BENCHMARKING:::1

View File

@@ -1,46 +1,18 @@
parameters: parameters:
- name: componentName
type: string
default: hip_clr_combined
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake
- libnuma-dev - libnuma-dev
- libsimde-dev
- mesa-common-dev - mesa-common-dev
- ninja-build
- ocl-icd-libopencl1 - ocl-icd-libopencl1
- ocl-icd-opencl-dev - ocl-icd-opencl-dev
- opencl-headers - opencl-headers
- zlib1g-dev
- name: pipModules - name: pipModules
type: object type: object
default: default:
@@ -55,81 +27,115 @@ parameters:
type: object type: object
default: default:
- llvm-project - llvm-project
- ROCR-Runtime
- name: jobMatrix # hip and clr are tightly-coupled
type: object # run this same template for both repos
default: # any changes for clr should just trigger HIP pipeline
buildJobs: # similarly for hipother repo, for Nvidia backend
- { os: ubuntu2204, packageManager: apt, platform: amd }
- { os: ubuntu2204, packageManager: apt, platform: nvidia }
- { os: almalinux8, packageManager: dnf, platform: amd }
- { os: almalinux8, packageManager: dnf, platform: nvidia }
# HIP with AMD backend
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hip_clr_combined_amd
- job: ${{ parameters.componentName }}_${{ job.os }}_${{ job.platform }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
pool: workspace:
vmImage: 'ubuntu-22.04' clean: all
${{ if eq(job.os, 'almalinux8') }}: steps:
container: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
image: rocmexternalcicd.azurecr.io/manylinux228:latest parameters:
endpoint: ContainerService3 aptPackages: ${{ parameters.aptPackages }}
variables: pipModules: ${{ parameters.pipModules }}
- group: common # checkout triggering repo (either HIP or clr)
- template: /.azuredevops/variables-global.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
workspace: parameters:
clean: all checkoutRepo: ${{ parameters.checkoutRepo }}
steps: # if this is triggered by HIP repo, matching repo is clr
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml # if this is triggered by clr repo, matching repo is HIP
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
pipModules: ${{ parameters.pipModules }} checkoutRepo: matching_repo
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
# full checkout of rocm-systems superrepo, we need clr, hip, and hipother checkoutRepo: hipother_repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencyList: ${{ parameters.rocmDependenciesAMD }}
# sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRef: ${{ parameters.checkoutRef }} # manual build case: triggered by ROCm/ROCm repo
aggregatePipeline: ${{ parameters.aggregatePipeline }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
${{ if eq(job.platform, 'amd') }}: # compile clr
dependencyList: ${{ parameters.rocmDependenciesAMD }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
${{ elseif eq(job.platform, 'nvidia') }}: parameters:
dependencyList: ${{ parameters.rocmDependenciesNvidia }} componentName: clr
${{ if parameters.triggerDownstreamJobs }}: cmakeBuildDir: 'clr/build'
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} extraBuildFlags: >-
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DHIP_COMMON_DIR=$(Build.SourcesDirectory)/HIP
parameters: -DHIP_PLATFORM=amd
componentName: clr -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
cmakeBuildDir: $(Agent.BuildDirectory)/s/projects/clr/build -DROCM_PATH=$(Agent.BuildDirectory)/rocm
cmakeSourceDir: $(Agent.BuildDirectory)/s/projects/clr -DHIPCC_BIN_DIR=$(Agent.BuildDirectory)/rocm/bin
os: ${{ job.os }} -DCLR_BUILD_HIP=ON
useAmdclang: false -DCLR_BUILD_OCL=ON
extraBuildFlags: >- - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm parameters:
-DROCM_PATH=$(Agent.BuildDirectory)/rocm artifactName: amd
-DHIPCC_BIN_DIR=$(Agent.BuildDirectory)/rocm/bin
-DHIP_COMMON_DIR=$(Agent.BuildDirectory)/s/projects/hip # HIP with Nvidia backend
-DHIPNV_DIR=$(Agent.BuildDirectory)/s/projects/hipother/hipnv - job: hip_clr_combined_nvidia
-DHIP_PLATFORM=${{ job.platform }} variables:
-DCLR_BUILD_HIP=ON - group: common
-DCLR_BUILD_OCL=ON - template: /.azuredevops/variables-global.yml
-GNinja pool:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml vmImage: ${{ variables.BASE_BUILD_POOL }}
parameters: workspace:
artifactName: ${{ job.platform }} clean: all
os: ${{ job.os }} steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters: parameters:
artifactName: ${{ job.platform }} aptPackages: ${{ parameters.aptPackages }}
os: ${{ job.os }} pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
# checkout triggering repo (either HIP or clr)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
# if this is triggered by HIP repo, matching repo is clr
# if this is triggered by clr repo, matching repo is HIP
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: matching_repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: hipother_repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
dependencyList: ${{ parameters.rocmDependenciesNvidia }}
# CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- script: 'ls -1R $(Agent.BuildDirectory)/rocm'
displayName: 'Artifact listing'
# compile clr
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: clr
cmakeBuildDir: 'clr/build'
extraBuildFlags: >-
-DHIP_COMMON_DIR=$(Build.SourcesDirectory)/HIP
-DHIP_PLATFORM=nvidia
-DHIPCC_BIN_DIR=$(Agent.BuildDirectory)/rocm/bin
-DCLR_BUILD_HIP=ON
-DCLR_BUILD_OCL=OFF
-DHIPNV_DIR=$(Build.SourcesDirectory)/hipother/hipnv
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
artifactName: nvidia

View File

@@ -1,155 +1,107 @@
parameters: parameters:
- name: componentName
type: string
default: HIPIFY
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cuda-toolkit-12-9 - cmake
- libcudnn9-dev-cuda-12
- libnuma-dev
- mesa-common-dev
- ninja-build - ninja-build
- python-is-python3 - libnuma-dev
- python3-dev - python3-dev
- python3-pip - python3-pip
- name: pipModules - python-is-python3
type: object - mesa-common-dev
default: - ccache
- lit - cuda-toolkit
- name: rocmDependencies - cudnn
type: object
default:
- llvm-project
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: HIPIFY
- job: ${{ parameters.componentName }}_build_${{ job.os }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml - name: UPSTREAM_LLVM_GIT_URL
pool: value: https://github.com/llvm/llvm-project.git
${{ if eq(job.os, 'ubuntu2404') }}: - name: UPSTREAM_LLVM_TAG
name: rocm-ci_medium_build_pool_2404 value: llvmorg-18.1.2
${{ else }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
name: ${{ variables.MEDIUM_BUILD_POOL }} workspace:
${{ if eq(job.os, 'almalinux8') }}: clean: all
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - task: Bash@3
endpoint: ContainerService3 displayName: 'Register CUDA packages'
workspace: inputs:
clean: all targetType: inline
steps: script: |
- task: Bash@3 sudo mkdir --parents --mode=0755 /etc/apt/keyrings
displayName: 'Register CUDA packages' wget -q -O- https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-archive-keyring.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/cuda-archive-keyring.gpg > /dev/null
inputs: echo "deb [signed-by=/etc/apt/trusted.gpg.d/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" | sudo tee /etc/apt/sources.list.d/cuda-ubuntu2204-x86_64.list
targetType: inline sudo apt update
${{ if eq(job.os, 'ubuntu2204') }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
script: | parameters:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb aptPackages: ${{ parameters.aptPackages }}
sudo dpkg -i cuda-keyring_1.1-1_all.deb - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
sudo rm -f cuda-keyring_1.1-1_all.deb - task: Bash@3
sudo apt update displayName: git clone upstream llvm-project
${{ if eq(job.os, 'almalinux8') }}: inputs:
script: | targetType: inline
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo script: git clone $(UPSTREAM_LLVM_GIT_URL) --depth=1 --branch $(UPSTREAM_LLVM_TAG) --recurse-submodules
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml workingDirectory: $(Pipeline.Workspace)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
pipModules: ${{ parameters.pipModules }} checkoutRepo: ${{ parameters.checkoutRepo }}
packageManager: ${{ job.packageManager }} - script: |
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml mkdir -p $(CCACHE_DIR)
- task: Bash@3 echo "##vso[task.prependpath]/usr/lib/ccache:/usr/local/cuda/bin"
displayName: Add lit to PATH displayName: Update path for cuda and ccache
inputs: - task: Cache@2
targetType: inline displayName: Ccache caching
script: | inputs:
site_packages=$(python3 -m site --user-base)/bin key: HIPIFY | $(Agent.OS) | "$(UPSTREAM_LLVM_TAG)"
sudo ln -sf $site_packages/bin/lit $(Pipeline.Workspace)/llvm-lit path: $(CCACHE_DIR)
echo "##vso[task.prependpath]$site_packages" restoreKeys: HIPIFY | $(Agent.OS)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: componentName: upstream-llvm
checkoutRepo: ${{ parameters.checkoutRepo }} cmakeBuildDir: $(Pipeline.Workspace)/llvm-project/llvm/build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml installDir: $(Pipeline.Workspace)/llvm
parameters: extraBuildFlags: >-
checkoutRef: ${{ parameters.checkoutRef }} -DCMAKE_BUILD_TYPE=Release
dependencyList: ${{ parameters.rocmDependencies }} -DLLVM_ENABLE_PROJECTS=clang
os: ${{ job.os }} -DLLVM_INCLUDE_TESTS=OFF
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
# cutensor is not available from apt or dnf -DCMAKE_C_COMPILER_LAUNCHER=ccache
- task: Bash@3 -GNinja
displayName: 'Download and install cutensor' - task: Bash@3
inputs: displayName: python install lit
targetType: inline inputs:
script: | targetType: inline
wget -q --show-progress https://developer.download.nvidia.com/compute/cutensor/redist/libcutensor/linux-x86_64/libcutensor-linux-x86_64-2.2.0.0-archive.tar.xz script: sudo python3 $(Pipeline.Workspace)/llvm-project/llvm/utils/lit/setup.py install
tar -xvJf libcutensor-linux-x86_64-*.tar.xz - task: Bash@3
mkdir -p $(Pipeline.Workspace)/cutensor displayName: install FileCheck
cp -r libcutensor-linux-x86_64-*/* $(Pipeline.Workspace)/cutensor/ inputs:
- task: Bash@3 targetType: inline
displayName: 'List downloaded CUDA files' script: cp $(Pipeline.Workspace)/llvm-project/llvm/build/bin/FileCheck $(Pipeline.Workspace)/llvm/bin
inputs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
targetType: inline parameters:
script: ls -la1R /usr/local/cuda-12.9 componentName: HIPIFY
# script: cp $(Pipeline.Workspace)/llvm-project/llvm/build/bin/FileCheck $(Pipeline.Workspace)/llvm/bin extraBuildFlags: >-
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DHIPIFY_CLANG_TESTS=ON
parameters: -DCMAKE_BUILD_TYPE=Release
componentName: ${{ parameters.componentName }} -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/targets/x86_64-linux
os: ${{ job.os }} -DCUDA_DNN_ROOT_DIR=/usr/local/cuda/targets/x86_64-linux
consolidateBuildAndInstall: true -DCMAKE_PREFIX_PATH=$(Pipeline.Workspace)/llvm;/usr/local/cuda/targets/x86_64-linux/lib
extraBuildFlags: >- -DLLVM_EXTERNAL_LIT=$(Pipeline.Workspace)/llvm-project/llvm/build/bin/llvm-lit
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;/usr/local/cuda/targets/x86_64-linux/lib multithreadFlag: -- -j32
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
-DHIPIFY_CLANG_TESTS=ON parameters:
-DCMAKE_BUILD_TYPE=Release componentName: HIPIFY
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.9 testDir: $(Build.SourcesDirectory)/build
-DCUDA_DNN_ROOT_DIR=/usr/local/cuda-12.9 testExecutable: make
-DCUDA_CUB_ROOT_DIR=/usr/local/cuda-12.9/targets/x86_64-linux/include/cub testParameters: test-hipify
-DCUDA_TENSOR_ROOT_DIR=$(Pipeline.Workspace)/cutensor/ testPublishResults: false
multithreadFlag: -- -j32
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
# parameters:
# componentName: HIPIFY
# testDir: $(Build.SourcesDirectory)/build
# testExecutable: make
# testParameters: -j 32 test-hipify
# testPublishResults: false
# os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: combined
registerCUDAPackages: true
extraCopyDirectories:
- llvm-project

View File

@@ -1,48 +1,27 @@
parameters: parameters:
- name: componentName
type: string
default: MIOpen
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- jq - libbz2-dev
- libdrm-dev - libdrm-dev
- libmsgpack-dev - libeigen3-dev
- libgmock-dev
- libgtest-dev
- libsqlite3-dev - libsqlite3-dev
- libstdc++-12-dev - libstdc++-12-dev
- libzstd-dev
- ninja-build - ninja-build
- nlohmann-json3-dev
- python3-pip - python3-pip
- python3-venv
- software-properties-common - software-properties-common
- zip - zstd
- name: pipModules - name: pipModules
type: object type: object
default: default:
@@ -50,12 +29,14 @@ parameters:
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- half - rocMLIR
- rocRAND - rocRAND
- rocBLAS - rocBLAS
- hipBLAS - hipBLAS
- hipBLASLt - hipBLASLt
- hipBLAS-common - hipBLAS-common
- half
- composable_kernel
- rocm-cmake - rocm-cmake
- llvm-project - llvm-project
- ROCR-Runtime - ROCR-Runtime
@@ -67,6 +48,7 @@ parameters:
type: object type: object
default: default:
- clr - clr
- composable_kernel
- half - half
- hipBLAS - hipBLAS
- hipBLAS-common - hipBLAS-common
@@ -75,216 +57,157 @@ parameters:
- rocBLAS - rocBLAS
- rocm-cmake - rocm-cmake
- rocminfo - rocminfo
- rocMLIR
- ROCR-Runtime - ROCR-Runtime
- rocprofiler-register - rocprofiler-register
- rocRAND - rocRAND
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
- name: downstreamComponentMatrix
type: object
default:
- MIVisionX:
name: MIVisionX
checkoutRepo: mivisionx_repo
sparseCheckoutDir: ''
skipUnifiedBuild: 'false'
buildDependsOn:
- MIOpen_build
- AMDMIGraphX:
name: AMDMIGraphX
checkoutRepo: amdmigraphx_repo
sparseCheckoutDir: ''
skipUnifiedBuild: 'false'
buildDependsOn:
- MIOpen_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: MIOpen
- job: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_ubuntu2204_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
- name: ROCM_PATH gfx942:
value: $(Agent.BuildDirectory)/rocm JOB_GPU_TARGET: gfx942
pool: ${{ variables.MEDIUM_BUILD_POOL }} steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml pipModules: ${{ parameters.pipModules }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
pipModules: ${{ parameters.pipModules }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml # The default boost library from apt is 1.74, which does not satisfy MIOpen's build requirement (1.79+)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-boost.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/miopen-get-ck-build.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: # manual build case: triggered by ROCm/ROCm repo
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
aggregatePipeline: ${{ parameters.aggregatePipeline }} parameters:
${{ if parameters.triggerDownstreamJobs }}: extraBuildFlags: >-
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DMIOPEN_BACKEND=HIP
- task: Bash@3 -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
displayName: Build and install other dependencies -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/boost
retryCountOnTaskFailure: 3 -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
inputs: -DMIOPEN_ENABLE_AI_KERNEL_TUNING=OFF
targetType: inline -DMIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK=OFF
workingDirectory: $(Agent.BuildDirectory)/s -DCMAKE_BUILD_TYPE=Release
script: | -DBUILD_TESTING=ON
sed -i '/composable_kernel/d' requirements.txt -GNinja
mkdir -p $(Agent.BuildDirectory)/miopen-deps - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
export CXX=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ parameters:
export CC=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang gpuTarget: $(JOB_GPU_TARGET)
cmake -P install_deps.cmake --prefix $(Agent.BuildDirectory)/miopen-deps --generator Ninja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
extraBuildFlags: >-
-DMIOPEN_BACKEND=HIP
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/miopen-deps
-DGPU_TARGETS=${{ job.target }}
-DMIOPEN_ENABLE_AI_KERNEL_TUNING=OFF
-DMIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK=OFF
-DCMAKE_BUILD_TYPE=Release
-DBUILD_TESTING=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
gpuTarget: ${{ job.target }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
gpuTarget: ${{ job.target }}
extraCopyDirectories:
- miopen-deps
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: MIOpen_testing
- job: ${{ parameters.componentName }}_test_ubuntu2204_${{ job.target }} dependsOn: MIOpen
timeoutInMinutes: 180 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
- name: ROCM_PATH JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
value: $(Agent.BuildDirectory)/rocm steps:
pool: ${{ job.target }}_test_pool - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
workspace: parameters:
clean: all aptPackages: ${{ parameters.aptPackages }}
steps: pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
pipModules: ${{ parameters.pipModules }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml # The default boost library from apt is 1.74, which does not satisfy MIOpen's build requirement (1.79+)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-boost.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ if eq(parameters.checkoutRef, '') }}:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/miopen-get-ck-build.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} ${{ if eq(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} # MIOpen depends on a specific version of frugally-deep which is forked here: https://github.com/ROCm/frugally-deep
- task: Bash@3 # https://github.com/ROCm/frugally-deep/blob/master/INSTALL.md
displayName: Build and install other dependencies - task: Bash@3
retryCountOnTaskFailure: 3 displayName: Add Python site-packages binaries to path
inputs: inputs:
targetType: inline targetType: inline
workingDirectory: $(Agent.BuildDirectory)/s script: |
script: | USER_BASE=$(python3 -m site --user-base)
sed -i '/composable_kernel/d' requirements.txt echo "##vso[task.prependpath]$USER_BASE/bin"
mkdir -p $(Agent.BuildDirectory)/miopen-deps - task: Bash@3
export CXX=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ displayName: Install FunctionalPlus
export CC=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang inputs:
cmake -P install_deps.cmake --prefix $(Agent.BuildDirectory)/miopen-deps targetType: inline
- task: CMake@1 script: cget install Dobiasd/FunctionalPlus
displayName: 'MIOpen Test CMake Flags' - task: Bash@3
inputs: displayName: Remove Python site-packages binaries from path
cmakeArgs: >- inputs:
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/s/bin;$(Agent.BuildDirectory)/miopen-deps targetType: inline
-DCMAKE_INSTALL_PREFIX=$(Agent.BuildDirectory)/rocm script: |
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ USER_BASE=$(python3 -m site --user-base)
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$USER_BASE/bin;;' -e 's;^/;;' -e 's;/$;;')"
-DMIOPEN_BACKEND=HIP - task: Bash@3
-DMIOPEN_TEST_FLAGS=" --disable-verification-cache" displayName: git clone frugally-deep
-DCMAKE_BUILD_TYPE=release inputs:
-DBUILD_DEV=OFF targetType: inline
-DMIOPEN_USE_MLIR=ON script: git clone https://github.com/ROCm/frugally-deep --depth=1 --shallow-submodules
-DMIOPEN_GPU_SYNC=OFF workingDirectory: $(Build.SourcesDirectory)
$(Agent.BuildDirectory)/s - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- task: Bash@3 parameters:
displayName: 'MIOpen Test Build' componentName: frugally-deep
inputs: cmakeBuildDir: $(Build.SourcesDirectory)/frugally-deep/build
targetType: inline installDir: $(Build.SourcesDirectory)/bin
workingDirectory: build extraBuildFlags: -DCMAKE_PREFIX_PATH=$(Build.SourcesDirectory)/cget/cget/pkg/Dobiasd__FunctionalPlus/install
script: | - task: CMake@1
cmake --build . --target tests -- -j$(nproc) displayName: 'MIOpen Test CMake Flags'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml cmakeArgs: >-
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Build.SourcesDirectory)/bin;$(Build.SourcesDirectory)/cget/cget/pkg/Dobiasd__FunctionalPlus/install;$(Agent.BuildDirectory)/boost
componentName: ${{ parameters.componentName }} -DCMAKE_INSTALL_PREFIX=$(Agent.BuildDirectory)/rocm
testParameters: '--output-on-failure --force-new-ctest-process --output-junit test_output.xml --exclude-regex "test_rnn_seq_api|GPU_Conv2dTuningAsm_FP32|GPU_Conv2dTuningAsmBwdWrw_FP32"' -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
parameters: -DMIOPEN_BACKEND=HIP
aptPackages: ${{ parameters.aptPackages }} -DMIOPEN_TEST_FLAGS=" --disable-verification-cache"
pipModules: ${{ parameters.pipModules }} -DCMAKE_BUILD_TYPE=release
environment: test -DBUILD_DEV=OFF
gpuTarget: ${{ job.target }} -DMIOPEN_USE_MLIR=ON
extraCopyDirectories: -DMIOPEN_GPU_SYNC=OFF
- miopen-deps ..
- task: Bash@3
# - ${{ if parameters.triggerDownstreamJobs }}: displayName: 'MIOpen Test Build'
# - ${{ each component in parameters.downstreamComponentMatrix }}: inputs:
# - ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}: targetType: inline
# - template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo script: |
# parameters: cmake --build . --target tests -- -j$(nproc)
# checkoutRepo: ${{ component.checkoutRepo }} workingDirectory: $(Build.SourcesDirectory)/build
# # sparseCheckoutDir: ${{ component.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
# buildDependsOn: ${{ component.buildDependsOn }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
# downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }} parameters:
# triggerDownstreamJobs: true componentName: MIOpen
# unifiedBuild: ${{ parameters.unifiedBuild }} reloadAMDGPU: true

View File

@@ -1,85 +1,66 @@
parameters: parameters:
- name: componentName
type: string
default: MIVisionX
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
# - name: sparseCheckoutDir
# type: string
# default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- ninja-build - ninja-build
- git
- wget - wget
- unzip - unzip
- libstdc++-12-dev
- pkg-config - pkg-config
- protobuf-compiler
- libprotoc-dev
- ffmpeg - ffmpeg
- libavcodec-dev - libavcodec-dev
- libavformat-dev - libavformat-dev
- libavutil-dev - libavutil-dev
- libswscale-dev - libswscale-dev
- build-essential
- libgtk2.0-dev
- libavcodec-dev
- libavformat-dev
- libswscale-dev
- libtbb2
- libtbb-dev
- libjpeg-dev
- libpng-dev
- libtiff-dev
- libdc1394-dev
- libgmp-dev - libgmp-dev
- libomp-dev
- libopencv-dev - libopencv-dev
- protobuf-compiler
- libprotoc-dev
- python3-pip
- name: pipModules - name: pipModules
type: object type: object
default: default:
- future==1.0.0 - future==0.18.2
- pytz==2022.1 - pytz==2022.1
- numpy==1.23 - numpy==1.21
- google==3.0.0 - google==3.0.0
- protobuf==3.12.4 - protobuf==3.12.4
- onnx==1.12.0 - onnx==1.12.0
- nnef==1.0.7
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- AMDMIGraphX
- clr
- half
- hipBLAS-common
- hipBLASLt
- llvm-project
- MIOpen
- rocBLAS
- rocDecode
- rocm-cmake - rocm-cmake
- llvm-project
- ROCR-Runtime
- clr
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - half
- rocBLAS
- MIOpen
- AMDMIGraphX
- rpp - rpp
- rocDecode
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
- aomp
- clr - clr
- half - half
- hipBLAS-common - hipBLAS-common
@@ -92,122 +73,95 @@ parameters:
- roctracer - roctracer
- rpp - rpp
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: MIVisionX
- job: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_ubuntu2204_${{ job.target }} vmImage: ${{ variables.BASE_BUILD_POOL }}
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
pool: ${{ variables.MEDIUM_BUILD_POOL }} matrix:
workspace: gfx942:
clean: all JOB_GPU_TARGET: gfx942
steps: steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }} pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }}
dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} # CI case: download latest default branch build
aggregatePipeline: ${{ parameters.aggregatePipeline }} ${{ if eq(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: staging
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
extraBuildFlags: >- - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_BUILD_TYPE=Release parameters:
-DROCM_PATH=$(Agent.BuildDirectory)/rocm extraBuildFlags: >-
-DROCM_DEP_ROCMCORE=ON -DCMAKE_BUILD_TYPE=Release
-GNinja -DROCM_PATH=$(Agent.BuildDirectory)/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DROCM_DEP_ROCMCORE=ON
parameters: -GNinja
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: MIVisionX_testing
- job: ${{ parameters.componentName }}_test_ubuntu2204_${{ job.target }} dependsOn: MIVisionX
dependsOn: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
- name: LD_LIBRARY_PATH JOB_GPU_TARGET: gfx942
value: $(Agent.BuildDirectory)/rocm/lib:$(Agent.BuildDirectory)/rocm/include/mivisionx/VX JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
pool: ${{ job.target }}_test_pool steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters: parameters:
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmTestDependencies }}
${{ if parameters.triggerDownstreamJobs }}: gpuTarget: $(JOB_GPU_TARGET)
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ if eq(parameters.checkoutRef, '') }}:
- task: Bash@3 dependencySource: staging
displayName: Build MIVisionX tests ${{ elseif ne(parameters.checkoutRef, '') }}:
inputs: dependencySource: tag-builds
targetType: inline # anything in /opt may be persistent across runs
script: | # so we need to remove the symlink if it already exists
# Assuming that /opt is no longer persistent across runs, test environments are fully ephemeral - script: |
sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm sudo rm -f /opt/rocm
mkdir mivisionx-tests sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
cd mivisionx-tests mkdir mivisionx-tests
cmake $(Agent.BuildDirectory)/rocm/share/mivisionx/test cd mivisionx-tests
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml cmake /opt/rocm/share/mivisionx/test
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
componentName: ${{ parameters.componentName }} parameters:
testDir: 'mivisionx-tests' componentName: MIVisionX
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml testDir: 'mivisionx-tests'
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
optSymLink: true

View File

@@ -1,45 +1,17 @@
parameters: parameters:
- name: componentName
type: string
default: ROCR-Runtime
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake
- g++ - g++
- libdrm-dev - libdrm-dev
- libelf-dev - libelf-dev
- libnuma-dev - libnuma-dev
- libsimde-dev
- ninja-build
- pkg-config
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -48,174 +20,164 @@ parameters:
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
- amdsmi
- llvm-project - llvm-project
- rocm_smi_lib
- rocprofiler-register - rocprofiler-register
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: ROCR_Runtime
- job: ROCR_Runtime_build_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
pool: workspace:
vmImage: 'ubuntu-22.04' clean: all
${{ if eq(job.os, 'almalinux8') }}: steps:
container: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
image: rocmexternalcicd.azurecr.io/manylinux228:latest parameters:
endpoint: ContainerService3 aptPackages: ${{ parameters.aptPackages }}
variables: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- group: common - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: /.azuredevops/variables-global.yml parameters:
workspace: checkoutRepo: ${{ parameters.checkoutRepo }}
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: # CI case: download latest default branch build
aptPackages: ${{ parameters.aptPackages }} ${{ if eq(parameters.checkoutRef, '') }}:
packageManager: ${{ job.packageManager }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml extraBuildFlags: >-
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
checkoutRef: ${{ parameters.checkoutRef }} -DBUILD_SHARED_LIBS=ON
dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
aggregatePipeline: ${{ parameters.aggregatePipeline }}
os: ${{ job.os }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DBUILD_SHARED_LIBS=ON
-DCMAKE_BUILD_TYPE=Release
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: ROCR_Runtime_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: ROCR_Runtime
- job: ROCR_Runtime_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ROCR_Runtime_build_${{ job.os }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - task: Bash@3
aptPackages: ${{ parameters.aptPackages }} displayName: Install libhwloc5
packageManager: ${{ job.packageManager }} inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml targetType: 'inline'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml script: |
parameters: wget http://ftp.us.debian.org/debian/pool/main/h/hwloc/libhwloc5_1.11.12-3_amd64.deb
os: ${{ job.os }} wget http://ftp.us.debian.org/debian/pool/main/h/hwloc/libhwloc-dev_1.11.12-3_amd64.deb
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml sudo apt install -y --allow-downgrades ./libhwloc5_1.11.12-3_amd64.deb ./libhwloc-dev_1.11.12-3_amd64.deb
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: staging
${{ if parameters.triggerDownstreamJobs }}: ${{ elseif ne(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencyList: ${{ parameters.rocmTestDependencies }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
runRocminfo: false ${{ elseif ne(parameters.checkoutRef, '') }}:
- task: Bash@3 dependencySource: tag-builds
displayName: Build kfdtest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
inputs: parameters:
targetType: 'inline' checkoutRepo: ${{ parameters.checkoutRepo }}
workingDirectory: $(Agent.BuildDirectory)/s/libhsakmt/tests/kfdtest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
script: | parameters:
if [ -e /opt/rh/gcc-toolset-14/enable ]; then runRocminfo: false
source /opt/rh/gcc-toolset-14/enable - task: Bash@3
fi displayName: Build kfdtest
mkdir build && cd build continueOnError: true
cmake -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm .. inputs:
make targetType: 'inline'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml workingDirectory: $(Build.SourcesDirectory)/libhsakmt/tests/kfdtest
parameters: script: |
componentName: kfdtest mkdir build && cd build
testExecutable: BIN_DIR=$(Agent.BuildDirectory)/s/libhsakmt/tests/kfdtest/build ./run_kfdtest.sh cmake -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm ..
testParameters: '-p core --gtest_output=xml:./test_output.xml --gtest_color=yes' make
testDir: $(Agent.BuildDirectory)/s/libhsakmt/tests/kfdtest/scripts - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
os: ${{ job.os }} parameters:
- task: Bash@3 componentName: kfdtest
displayName: Build rocrtst testExecutable: BIN_DIR=$(Build.SourcesDirectory)/libhsakmt/tests/kfdtest/build ./run_kfdtest.sh
inputs: testParameters: '-p core --gtest_output=xml:./test_output.xml --gtest_color=yes'
targetType: 'inline' testDir: $(Build.SourcesDirectory)/libhsakmt/tests/kfdtest/scripts
workingDirectory: $(Agent.BuildDirectory)/s/rocrtst/suites/test_common - task: Bash@3
script: | displayName: Build rdmatest app
echo $(Agent.BuildDirectory)/s/rocrtst/thirdparty/lib | sudo tee -a /etc/ld.so.conf.d/rocm-ci.conf continueOnError: true
sudo cat /etc/ld.so.conf.d/rocm-ci.conf inputs:
sudo ldconfig -v targetType: 'inline'
ldconfig -p workingDirectory: $(Build.SourcesDirectory)/libhsakmt/tests/rdma/simple/app
if [ -e /opt/rh/gcc-toolset-14/enable ]; then script: |
source /opt/rh/gcc-toolset-14/enable cmake -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DLIBHSAKMT_PATH=$(Agent.BuildDirectory)/rocm -DDRM_AMDGPU_INCLUDE_DIRS=$(Agent.BuildDirectory)/rocm/include .
fi cmake --build .
BASE_CLANG_DIR=$(Agent.BuildDirectory)/rocm/llvm/lib/clang - task: Bash@3
export NEWEST_CLANG_VER=$(ls -1 $BASE_CLANG_DIR | sort -V | tail -n 1) displayName: Build rdmatest driver
mkdir build && cd build continueOnError: true
cmake .. \ inputs:
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm \ targetType: 'inline'
-DTARGET_DEVICES=${{ job.target }} \ workingDirectory: $(Build.SourcesDirectory)/libhsakmt/tests/rdma/simple/drv
-DROCM_DIR=$(Agent.BuildDirectory)/rocm \ script: |
-DLLVM_DIR=$(Agent.BuildDirectory)/rocm/llvm/bin \ sed -i 's/HSAKMT_PAGE_SHIFT/PAGE_SHIFT/g' amdp2ptest.c
-DOPENCL_INC_DIR=$BASE_CLANG_DIR/$NEWEST_CLANG_VER/include sed -i 's/"MIT"/"GPL"/' amdp2ptest.c
make RDMA_HEADER_DIR=/usr/src/amdgpu-*/include make all
make rocrtst_kernels - task: Bash@3
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml displayName: Install rdmatest driver
parameters: continueOnError: true
componentName: rocrtst inputs:
testExecutable: ./rocrtst64 targetType: 'inline'
testParameters: '--gtest_filter="-rocrtstNeg.Memory_Negative_Tests:rocrtstFunc.Memory_Max_Mem" --gtest_output=xml:./test_output.xml --gtest_color=yes' workingDirectory: $(Build.SourcesDirectory)/libhsakmt/tests/rdma/simple/drv
testDir: $(Agent.BuildDirectory)/s//rocrtst/suites/test_common/build/${{ job.target }} script: |
os: ${{ job.os }} sudo rmmod amdp2ptest.ko
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml sudo insmod amdp2ptest.ko
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
environment: test componentName: rdmatest
gpuTarget: ${{ job.target }} testExecutable: yes | ./rdma_test
# docker image will be missing libhwloc5 testParameters: ''
testDir: $(Build.SourcesDirectory)/libhsakmt/tests/rdma/simple/app
testPublishResults: false
- task: Bash@3
displayName: Build rocrtst
continueOnError: true
inputs:
targetType: 'inline'
workingDirectory: $(Build.SourcesDirectory)/rocrtst/suites/test_common
script: |
sudo rm -rf $(Agent.BuildDirectory)/external/llvm-project
mkdir -p $(Agent.BuildDirectory)/external/llvm-project/clang/lib
sudo ln -s $(Agent.BuildDirectory)/rocm/llvm/lib/clang/20/include $(Agent.BuildDirectory)/external/llvm-project/clang/lib/Headers
mkdir build && cd build
cmake .. \
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm \
-DTARGET_DEVICES=$(JOB_GPU_TARGET) \
-DROCM_DIR=$(Agent.BuildDirectory)/rocm \
-DLLVM_DIR=$(Agent.BuildDirectory)/rocm/llvm/bin \
-DOPENCL_DIR=$(Agent.BuildDirectory)/rocm/llvm/bin
make
make rocrtst_kernels
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: rocrtst
testExecutable: ./rocrtst64
testParameters: '--gtest_filter="-rocrtstNeg.Memory_Negative_Tests" --gtest_output=xml:./test_output.xml --gtest_color=yes'
testDir: $(Build.SourcesDirectory)/rocrtst/suites/test_common/build/$(JOB_GPU_TARGET)

View File

@@ -16,7 +16,8 @@ jobs:
variables: variables:
- group: common - group: common
- template: /.azuredevops/variables-global.yml - template: /.azuredevops/variables-global.yml
pool: ${{ variables.LOW_BUILD_POOL }} pool:
vmImage: ${{ variables.BASE_BUILD_POOL }}
workspace: workspace:
clean: all clean: all
steps: steps:
@@ -28,5 +29,4 @@ jobs:
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -23,57 +18,36 @@ parameters:
- rocminfo - rocminfo
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: ROCdbgapi
- job: ROCdbgapi_build_${{ job.os }} variables:
pool: - group: common
vmImage: 'ubuntu-22.04' - template: /.azuredevops/variables-global.yml
${{ if eq(job.os, 'almalinux8') }}: pool:
container: vmImage: ${{ variables.BASE_BUILD_POOL }}
image: rocmexternalcicd.azurecr.io/manylinux228:latest workspace:
endpoint: ContainerService3 clean: all
variables: steps:
- group: common - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: /.azuredevops/variables-global.yml parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml # CI case: download latest default branch build
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
aggregatePipeline: ${{ parameters.aggregatePipeline }} parameters:
os: ${{ job.os }} extraBuildFlags: >-
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DCMAKE_BUILD_TYPE=Release
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
os: ${{ job.os }} -GNinja
useAmdclang: false - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}

View File

@@ -1,24 +1,15 @@
parameters: parameters:
- name: componentName
type: string
default: ROCgdb
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
# reference: https://github.com/ROCm/ROCgdb/blob/amd-staging/README-ROCM.md # reference: https://github.com/ROCm/ROCgdb/blob/amd-staging/README-ROCM.md
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- bison - bison
- cmake
- dejagnu - dejagnu
- flex - flex
- libbabeltrace-dev - libbabeltrace-dev
@@ -27,9 +18,6 @@ parameters:
- liblzma-dev - liblzma-dev
- libmpfr-dev - libmpfr-dev
- ncurses-dev - ncurses-dev
- pkg-config
- python3-dev
- python3-pip
- texinfo - texinfo
- zlib1g-dev - zlib1g-dev
- name: rocmDependencies - name: rocmDependencies
@@ -42,174 +30,88 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: ROCgdb
- job: ${{ parameters.componentName }}_build_${{ job.os }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
variables: variables:
- group: common - group: common
- template: /.azuredevops/variables-global.yml - template: /.azuredevops/variables-global.yml
- name: PKG_CONFIG_PATH - name: PKG_CONFIG_PATH
value: $(Agent.BuildDirectory)/rocm/share/pkgconfig value: $(Agent.BuildDirectory)/rocm/share/pkgconfig
pool: pool: $(JOB_TEST_POOL)
${{ if eq(job.os, 'ubuntu2404') }}: workspace:
name: rocm-ci_medium_build_pool_2404 clean: all
${{ else }}: strategy:
name: ${{ variables.MEDIUM_BUILD_POOL }} matrix:
${{ if eq(job.os, 'almalinux8') }}: gfx942:
container: JOB_GPU_TARGET: gfx942
image: rocmexternalcicd.azurecr.io/manylinux228:latest JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
endpoint: ContainerService3 steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
os: ${{ job.os }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-autotools.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
os: ${{ job.os }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-autotools.yml
configureFlags: >- parameters:
--program-prefix=roc configureFlags: >-
--enable-64-bit-bfd --program-prefix=roc
--enable-targets="x86_64-linux-gnu,amdgcn-amd-amdhsa" --enable-64-bit-bfd
--disable-ld --enable-targets="x86_64-linux-gnu,amdgcn-amd-amdhsa"
--disable-gas --disable-ld
--disable-gdbserver --disable-gas
--disable-sim --disable-gdbserver
--enable-tui --disable-sim
--disable-gdbtk --enable-tui
--disable-shared --disable-gdbtk
--disable-gprofng --disable-shared
--with-expat --disable-gprofng
--with-system-zlib --with-expat
--without-guile --with-system-zlib
--with-babeltrace --without-guile
--with-lzma --with-babeltrace
--with-python=python3 --with-lzma
--with-rocm-dbgapi=$(Agent.BuildDirectory)/rocm --with-python=python3
LDFLAGS="-Wl,--enable-new-dtags,-rpath=$(Agent.BuildDirectory)/rocm/lib" --with-rocm-dbgapi=$(Agent.BuildDirectory)/rocm
makeCallPrefix: LD_RUN_PATH='${ORIGIN}/../lib' LDFLAGS="-Wl,--enable-new-dtags,-rpath=$(Agent.BuildDirectory)/rocm/lib"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml makeCallPrefix: LD_RUN_PATH='${ORIGIN}/../lib'
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
componentName: ${{ parameters.componentName }} - task: Bash@3
os: ${{ job.os }} displayName: Setup test environment
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml inputs:
parameters: targetType: inline
componentName: ${{ parameters.componentName }} script: |
os: ${{ job.os }} sudo rm -rf /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
echo "##vso[task.prependpath]/opt/rocm/bin"
- ${{ each job in parameters.jobMatrix.testJobs }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} - task: Bash@3
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }} displayName: check-gdb
condition: continueOnError: true
and(succeeded(), inputs:
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), targetType: inline
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), script: make check-gdb TESTS=gdb.rocm/simple.exp
eq(${{ parameters.aggregatePipeline }}, False) workingDirectory: $(Build.SourcesDirectory)
) - task: Bash@3
variables: displayName: print gdb log
- group: common inputs:
- template: /.azuredevops/variables-global.yml targetType: inline
- name: PKG_CONFIG_PATH script: find -name gdb.log -exec cat {} \;
value: $(Agent.BuildDirectory)/rocm/share/pkgconfig workingDirectory: $(Build.SourcesDirectory)
pool: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
os: ${{ job.os }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-autotools.yml
parameters:
os: ${{ job.os }}
configureFlags: >-
--program-prefix=roc
--enable-64-bit-bfd
--enable-targets="x86_64-linux-gnu,amdgcn-amd-amdhsa"
--disable-ld
--disable-gas
--disable-gdbserver
--disable-sim
--enable-tui
--disable-gdbtk
--disable-shared
--disable-gprofng
--with-expat
--with-system-zlib
--without-guile
--with-babeltrace
--with-lzma
--with-python=python3
--with-rocm-dbgapi=$(Agent.BuildDirectory)/rocm
LDFLAGS="-Wl,--enable-new-dtags,-rpath=$(Agent.BuildDirectory)/rocm/lib"
makeCallPrefix: LD_RUN_PATH='${ORIGIN}/../lib'
- task: Bash@3
displayName: Setup test environment
inputs:
targetType: inline
script: |
# Assuming that /opt is no longer persistent across runs, test environments are fully ephemeral
sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
echo "##vso[task.prependpath]/opt/rocm/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- task: Bash@3
displayName: check-gdb
continueOnError: true
inputs:
targetType: inline
script: |
${{ iif(eq(job.os, 'almalinux8'), 'source /opt/rh/gcc-toolset-14/enable', '') }}
make check-gdb TESTS=gdb.rocm/simple.exp
workingDirectory: $(Build.SourcesDirectory)
- task: Bash@3
displayName: print gdb log
inputs:
targetType: inline
script: find -name gdb.log -exec cat {} \;
workingDirectory: $(Build.SourcesDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: combined
gpuTarget: ${{ job.target }}
extraEnvVars:
- PKG_CONFIG_PATH:::/home/user/workspace/rocm/share/pkgconfig

View File

@@ -5,29 +5,20 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- ninja-build - ninja-build
- libdrm-dev
- libyaml-cpp-dev - libyaml-cpp-dev
- libpci-dev - libpci-dev
- libpci3 - libpci3
- libgst-dev - libgst-dev
- libgtest-dev - libgtest-dev
- git - git
- python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- amdsmi
- aomp
- clr - clr
- hipBLAS-common - hipBLAS-common
- hipBLASLt - hipBLASLt
@@ -43,8 +34,6 @@ parameters:
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
- amdsmi
- aomp
- clr - clr
- hipBLAS-common - hipBLAS-common
- hipBLASLt - hipBLASLt
@@ -58,115 +47,96 @@ parameters:
- rocRAND - rocRAND
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
confDir: MI300X
- gfx90a:
target: gfx90a
confDir: MI210
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: ROCmValidationSuite
- job: ROCmValidationSuite_build_${{ job.target }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME
- name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm
value: $(Build.BinariesDirectory)/rocm - name: ROCM_PATH
- name: ROCM_PATH value: $(Agent.BuildDirectory)/rocm
value: $(Agent.BuildDirectory)/rocm - name: HIP_INC_DIR
- name: HIP_INC_DIR value: $(Agent.BuildDirectory)/rocm
value: $(Agent.BuildDirectory)/rocm pool:
pool: ${{ variables.MEDIUM_BUILD_POOL }} vmImage: ${{ variables.BASE_BUILD_POOL }}
workspace: workspace:
clean: all clean: all
steps: strategy:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml matrix:
parameters: gfx942:
aptPackages: ${{ parameters.aptPackages }} JOB_GPU_TARGET: gfx942
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
checkoutRef: ${{ parameters.checkoutRef }} parameters:
dependencyList: ${{ parameters.rocmDependencies }} checkoutRepo: ${{ parameters.checkoutRepo }}
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
aggregatePipeline: ${{ parameters.aggregatePipeline }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
extraBuildFlags: >- # CI case: download latest default branch build
-DROCM_PATH=$(Agent.BuildDirectory)/rocm ${{ if eq(parameters.checkoutRef, '') }}:
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ dependencySource: staging
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm # manual build case: triggered by ROCm/ROCm repo
-DCMAKE_CXX_FLAGS=-I$(Agent.BuildDirectory)/rocm/llvm/include ${{ elseif ne(parameters.checkoutRef, '') }}:
-DCPACK_PACKAGING_INSTALL_PREFIX=$(Build.BinariesDirectory) dependencySource: tag-builds
-GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml parameters:
parameters: extraBuildFlags: >-
gpuTarget: ${{ job.target }} -DROCM_PATH=$(Agent.BuildDirectory)/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
gpuTarget: ${{ job.target }} -DCPACK_PACKAGING_INSTALL_PREFIX=$(Build.BinariesDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml -GNinja
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
# parameters: parameters:
# aptPackages: ${{ parameters.aptPackages }} gpuTarget: $(JOB_GPU_TARGET)
# gpuTarget: ${{ job.target }}
# extraEnvVars:
# - HIP_ROCCLR_HOME:::/home/user/workspace/rocm
# - ROCM_PATH:::/home/user/workspace/rocm
# - HIP_INC_DIR:::/home/user/workspace/rocm
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: ROCmValidationSuite_testing
- job: ROCmValidationSuite_test_${{ job.target }} dependsOn: ROCmValidationSuite
dependsOn: ROCmValidationSuite_build_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
componentName: ROCmValidationSuite ${{ if eq(parameters.checkoutRef, '') }}:
testExecutable: $(Agent.BuildDirectory)/rocm/bin/rvs -c $(Agent.BuildDirectory)/rocm/share/rocm-validation-suite/conf/${{ job.confDir }}/gst_single.conf dependencySource: staging
testParameters: '' ${{ elseif ne(parameters.checkoutRef, '') }}:
testDir: $(Agent.BuildDirectory) dependencySource: tag-builds
testPublishResults: false - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} componentName: ROCmValidationSuite
environment: test testExecutable: $(Agent.BuildDirectory)/rocm/bin/rvs -c $(Agent.BuildDirectory)/rocm/share/rocm-validation-suite/conf/MI300X/gst_single.conf
gpuTarget: ${{ job.target }} testParameters: ''
testDir: $(Agent.BuildDirectory)
testPublishResults: false

View File

@@ -1,41 +1,17 @@
parameters: parameters:
- name: componentName
type: string
default: Tensile
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- python3-pip
- cmake - cmake
- libboost-filesystem-dev
- libboost-program-options-dev
- libmsgpack-dev - libmsgpack-dev
- libboost-program-options-dev
- name: pipModules - name: pipModules
type: object type: object
default: default:
@@ -54,168 +30,146 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: Tensile
- job: ${{ parameters.componentName }}_build_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: ${{ parameters.buildDependsOn[job.target] }} - template: /.azuredevops/variables-global.yml
variables: pool:
- group: common vmImage: ${{ variables.BASE_BUILD_POOL }}
- template: /.azuredevops/variables-global.yml workspace:
- name: ROCM_PATH clean: all
value: $(Agent.BuildDirectory)/rocm steps:
pool: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
vmImage: ${{ variables.BASE_BUILD_POOL }} parameters:
${{ if eq(job.os, 'almalinux8') }}: aptPackages: ${{ parameters.aptPackages }}
container: pipModules: ${{ parameters.pipModules }}
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
endpoint: ContainerService3 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
workspace: parameters:
clean: all checkoutRepo: ${{ parameters.checkoutRepo }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
aptPackages: ${{ parameters.aptPackages }} # CI case: download latest default branch build
pipModules: ${{ parameters.pipModules }} ${{ if eq(parameters.checkoutRef, '') }}:
packageManager: ${{ job.packageManager }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRepo: ${{ parameters.checkoutRepo }} - task: Bash@3
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} displayName: Create wheel file
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml inputs:
parameters: targetType: inline
checkoutRef: ${{ parameters.checkoutRef }} script: python3 setup.py bdist_wheel
dependencyList: ${{ parameters.rocmDependencies }} workingDirectory: $(Build.SourcesDirectory)
os: ${{ job.os }} env:
aggregatePipeline: ${{ parameters.aggregatePipeline }} ROCM_PATH: $(Agent.BuildDirectory)/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
parameters: parameters:
os: ${{ job.os }} sourceDir: $(Build.SourcesDirectory)/dist
- task: Bash@3 contentsString: '*.whl'
displayName: Create wheel file targetDir: $(Build.ArtifactStagingDirectory)
inputs: clean: false
targetType: inline - task: PublishPipelineArtifact@1
script: python3 setup.py bdist_wheel displayName: 'wheel file Publish'
workingDirectory: $(Agent.BuildDirectory)/s retryCountOnTaskFailure: 3
- task: Bash@3 inputs:
displayName: Rename wheel file with job OS targetPath: $(Build.ArtifactStagingDirectory)
inputs:
targetType: inline
workingDirectory: $(Agent.BuildDirectory)/s
script: |
wheelFile=$(find "$(Agent.BuildDirectory)/s/dist" -type f -name "*.whl" | head -n 1)
newWheelFile="$(basename "$wheelFile" .whl)-${{ job.os }}.whl"
mv "$wheelFile" "$(dirname "$wheelFile")/$newWheelFile"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
parameters:
sourceDir: $(Agent.BuildDirectory)/s/dist
contentsString: '*.whl'
targetDir: $(Build.ArtifactStagingDirectory)
clean: false
- task: PublishPipelineArtifact@1
displayName: 'wheel file Publish'
retryCountOnTaskFailure: 3
inputs:
targetPath: $(Build.ArtifactStagingDirectory)
- task: Bash@3
displayName: Save pipeline artifact file names
inputs:
workingDirectory: $(Pipeline.Workspace)
targetType: inline
script: |
whlFile=$(find "$(Build.ArtifactStagingDirectory)" -type f -name "*.whl" | head -n 1)
if [ -n "$whlFile" ]; then
echo $(basename "$whlFile") >> pipelineArtifacts.txt
fi
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: Tensile_testing
- job: Tensile_test_${{ job.os }}_${{ job.target }} dependsOn: Tensile
timeoutInMinutes: 180 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: Tensile_build_${{ job.os }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
- name: ROCM_PATH JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
value: $(Agent.BuildDirectory)/rocm steps:
pool: ${{ job.target }}_test_pool - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
workspace: parameters:
clean: all aptPackages: ${{ parameters.aptPackages }}
steps: pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - task: DownloadPipelineArtifact@2
aptPackages: ${{ parameters.aptPackages }} displayName: 'Download Pipeline Wheel Files'
pipModules: ${{ parameters.pipModules }} inputs:
packageManager: ${{ job.packageManager }} itemPattern: '**/*.whl'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml targetPath: $(Agent.BuildDirectory)
- task: DownloadPipelineArtifact@2 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
displayName: 'Download Pipeline Wheel Files' parameters:
retryCountOnTaskFailure: 3 checkoutRepo: ${{ parameters.checkoutRepo }}
inputs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
itemPattern: '**/*${{ job.os }}*.whl' parameters:
targetPath: $(Agent.BuildDirectory) ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencySource: tag-builds
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} ${{ if eq(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmDependencies }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: tag-builds
- task: Bash@3 - task: Bash@3
displayName: pip install displayName: pip install
inputs: inputs:
targetType: inline targetType: inline
script: find -name *.whl -exec pip install {} \; script: find -name *.whl -exec pip install {} \;
workingDirectory: $(Agent.BuildDirectory) workingDirectory: $(Agent.BuildDirectory)
- task: Bash@3 - task: Bash@3
displayName: Setup test environment displayName: Setup test environment
inputs: inputs:
targetType: inline targetType: inline
script: | script: |
# Assuming that /opt is no longer persistent across runs, test environments are fully ephemeral sudo rm -rf /opt/rocm
sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
USER_BASE=$(python3 -m site --user-base) - task: Bash@3
echo "##vso[task.prependpath]$USER_BASE/bin" displayName: Add Python site-packages binaries to path
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin" inputs:
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin" targetType: inline
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml script: |
- task: Bash@3 USER_BASE=$(python3 -m site --user-base)
displayName: tox test echo "##vso[task.prependpath]$USER_BASE/bin"
inputs: - task: Bash@3
targetType: inline displayName: Add ROCm binaries to PATH
script: tox run -v -e ci -- -m pre_checkin inputs:
workingDirectory: $(Agent.BuildDirectory)/s targetType: inline
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
parameters: - task: Bash@3
aptPackages: ${{ parameters.aptPackages }} displayName: Add ROCm compilers to PATH
pipModules: ${{ parameters.pipModules }} inputs:
environment: test targetType: inline
gpuTarget: ${{ job.target }} script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
pythonEnvVars: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
extraPaths: /home/user/workspace/rocm/llvm/bin:/home/user/workspace/rocm/bin - task: Bash@3
# docker image will not have python site-packages in path, but the env vars will make it easier displayName: tox test
inputs:
targetType: inline
script: tox run -v -e ci -- -m pre_checkin
workingDirectory: $(Build.SourcesDirectory)
- task: Bash@3
displayName: Remove Python site-packages binaries from path
inputs:
targetType: inline
script: |
USER_BASE=$(python3 -m site --user-base)
echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$USER_BASE/bin;;' -e 's;^/;;' -e 's;/$;;')"
- task: Bash@3
displayName: Remove ROCm binaries from PATH
inputs:
targetType: inline
script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/bin;;' -e 's;^/;;' -e 's;/$;;')"
- task: Bash@3
displayName: Remove ROCm compilers from PATH
inputs:
targetType: inline
script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/llvm/bin;;' -e 's;^/;;' -e 's;/$;;')"

View File

@@ -1,142 +0,0 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- libnuma-dev
- ninja-build
- python3-pip
- name: rocmDependencies
type: object
default:
- clr
- llvm-project
- rocm-cmake
- rocminfo
- ROCR-Runtime
- name: rocmTestDependencies
type: object
default:
- clr
- llvm-project
- rocm-cmake
- rocminfo
- rocprofiler-register
- ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: TransferBench_build_${{ job.target }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: ${{ variables.BASE_BUILD_POOL }}
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: ${{ job.target }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
extraBuildFlags: >-
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}:
- job: TransferBench_test_${{ job.target }}
dependsOn: TransferBench_build_${{ job.target }}
condition:
and(succeeded(),
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'),
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])),
eq(${{ parameters.aggregatePipeline }}, False)
)
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters:
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmTestDependencies }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: TransferBench All-to-all
testDir: '$(Agent.BuildDirectory)'
testExecutable: './rocm/bin/TransferBench'
testParameters: 'a2a'
testPublishResults: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: TransferBench Peer-to-peer
testDir: '$(Agent.BuildDirectory)'
testExecutable: './rocm/bin/TransferBench'
testParameters: 'p2p'
testPublishResults: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,138 +1,64 @@
parameters: parameters:
- name: componentName
type: string
default: amdsmi
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake
- libdrm-dev - libdrm-dev
- ninja-build
- pkg-config
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: ubuntu2404, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: amdsmi
- job: ${{ parameters.componentName }}_build_${{ job.os }} variables:
pool: - group: common
${{ if eq(job.os, 'ubuntu2404') }}: - template: /.azuredevops/variables-global.yml
vmImage: 'ubuntu-24.04' pool:
${{ else }}: vmImage: ${{ variables.BASE_BUILD_POOL }}
vmImage: 'ubuntu-22.04' workspace:
${{ if eq(job.os, 'almalinux8') }}: clean: all
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
variables: aptPackages: ${{ parameters.aptPackages }}
- group: common - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: /.azuredevops/variables-global.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
workspace: parameters:
clean: all checkoutRepo: ${{ parameters.checkoutRepo }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: extraBuildFlags: >-
aptPackages: ${{ parameters.aptPackages }} -DBUILD_TESTS=ON
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DBUILD_TESTS=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
os: ${{ job.os }}
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
componentName: ${{ parameters.componentName }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: amdsmi_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: amdsmi
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml runRocminfo: false
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
os: ${{ job.os }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml componentName: amdsmi
parameters: testDir: '$(Agent.BuildDirectory)'
runRocminfo: false testExecutable: './rocm/share/amd_smi/tests/amdsmitst'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
parameters:
componentName: ${{ parameters.componentName }}
testDir: '$(Agent.BuildDirectory)'
testExecutable: 'sudo ./rocm/share/amd_smi/tests/amdsmitst'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -42,9 +37,13 @@ jobs:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }} # CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
componentName: aomp-extras componentName: aomp-extras
@@ -55,9 +54,4 @@ jobs:
-DAOMP_VERSION_STRING=$(LATEST_RELEASE_TAG) -DAOMP_VERSION_STRING=$(LATEST_RELEASE_TAG)
-GNinja -GNinja
installDir: $(Build.BinariesDirectory)/llvm installDir: $(Build.BinariesDirectory)/llvm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}

View File

@@ -1,280 +1,489 @@
parameters: parameters:
- name: componentName
type: string
default: aomp
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
# reference: # reference:
# https://github.com/ROCm/aomp/blob/aomp-dev/docs/SOURCEINSTALL_PREREQUISITE.md # https://github.com/ROCm/aomp/blob/aomp-dev/docs/SOURCEINSTALL_PREREQUISITE.md
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- bison
- ccache
- cmake - cmake
- flex - python3-pip
- gawk
- git
- mesa-common-dev
- ninja-build - ninja-build
- libbabeltrace-dev - pkg-config
- libbison-dev - libpci-dev
- libnuma-dev
- libffi-dev
- git
- libopenmpi-dev
- gawk
- mesa-common-dev
- libtool
- libdrm-amdgpu1 - libdrm-amdgpu1
- libdrm-dev - libdrm-dev
- libdw-dev - libdw-dev
- libffi-dev - libgtest-dev
- libgmp-dev - libsystemd-dev
- liblzma-dev
- libmpfr-dev
- libncurses5-dev
- libnuma-dev
- libopenmpi-dev
- libpci-dev
- libssl-dev - libssl-dev
- libstdc++-12-dev - libstdc++-12-dev
- libsystemd-dev - ccache
- libtool - libgmp-dev
- libmpfr-dev
- texinfo
- libbison-dev
- bison
- flex
- libbabeltrace-dev
- libncurses5-dev
- liblzma-dev
- python3-setuptools
- python3-dev
- libudev-dev - libudev-dev
- parallel - parallel
- pkg-config # Referencing comment snippet below but excluding rocprofiler and roctracer.
- python3-dev # This is to remove need for separate build per gpu target.
- python3-pip # With our selected build flags, compilation and installation work fine without these two.
- python3-setuptools #
- texinfo # snippet from https://github.com/ROCm/aomp/blob/aomp-dev/bin/build_aomp.sh#L131-L134
#
# For ROCM build (AOMP_STANDALONE_BUILD=0) the components roct, rocr,
# libdevice, project, comgr, rocminfo, hipamd, rocdbgapi, rocgdb,
# roctracer, rocprofiler, rocm_smi_lib, and amdsmi should be found
# in ROCM in /opt/rocm. The ROCM build only needs these components:
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- llvm-project - amdsmi
- ROCR-Runtime
- name: rocmTestDependencies
type: object
default:
- clr - clr
- llvm-project - llvm-project
- ROCdbgapi
- ROCgdb
- rocm-cmake
- rocm-core - rocm-core
- rocminfo - rocminfo
- ROCR-Runtime - rocm_smi_lib
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime
- name: jobMatrix - roctracer
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: aomp
- job: ${{ parameters.componentName }}_build_${{ job.os }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }}
pool: workspace:
${{ if eq(job.os, 'ubuntu2404') }}: clean: all
name: rocm-ci_medium_build_pool_2404 steps:
${{ else }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
name: ${{ variables.MEDIUM_BUILD_POOL }} parameters:
${{ if eq(job.os, 'almalinux8') }}: aptPackages: ${{ parameters.aptPackages }}
container: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
image: rocmexternalcicd.azurecr.io/manylinux228:latest # checkout the repos tied to openmp-extras, plus llvm-project
endpoint: ContainerService3 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
workspace: parameters:
clean: all checkoutRepo: ${{ parameters.checkoutRepo }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: checkoutRepo: aomp-extras_repo
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml checkoutRepo: flang_repo
# checkout the repos tied to openmp-extras, plus llvm-project - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: checkoutRepo: llvm-project_repo
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
checkoutRepo: aomp-extras_repo # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRepo: flang_repo # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRepo: llvm-project_repo # Because clang is not being rebuilt and to separate downloaded ROCm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml # dependencies from the new artifacts, we use temporary symbolic links
parameters: # for the compilation and installation to go through.
dependencyList: - script: |
- gtest sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml mkdir -p $(Build.BinariesDirectory)/bin
parameters: ln -s $(Agent.BuildDirectory)/rocm/llvm/bin/clang $(Build.BinariesDirectory)/bin/clang
checkoutRef: ${{ parameters.checkoutRef }} ln -s $(Agent.BuildDirectory)/rocm/llvm/bin/clang++ $(Build.BinariesDirectory)/bin/clang++
dependencyList: ${{ parameters.rocmDependencies }} ln -s $(Agent.BuildDirectory)/rocm/llvm/bin/llvm-config $(Build.BinariesDirectory)/bin/llvm-config
os: ${{ job.os }} ln -s $(Agent.BuildDirectory)/rocm/llvm $(Build.BinariesDirectory)/llvm
aggregatePipeline: ${{ parameters.aggregatePipeline }} displayName: Extra build environment setup
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml # We follow the sequence described in the aomp repo instructions
parameters: # https://github.com/ROCm/aomp/blob/aomp-dev/docs/SOURCEINSTALL.md
os: ${{ job.os }} # But instead of calling build_aomp.sh directly, we have to split up the calls to build each component
useAmdclang: false # in order for the omp.h header file to be both be published as an artifact,
componentName: extras # and be found when building subsequent components.
cmakeBuildDir: '$(Build.SourcesDirectory)/aomp-extras/build' # Environment variables specified per bash script were determined from looking through the
cmakeSourceDir: '$(Build.SourcesDirectory)/aomp-extras' # individual scripts and iteratively testing compilation.
installDir: '$(Build.BinariesDirectory)/llvm' # Splitting up the build_aomp.sh call is also easier for debugging within Azure, as the former
extraBuildFlags: >- # method leads to a giant build log compared to separate logs per script call.
-DLLVM_DIR=$(Agent.BuildDirectory)/rocm/llvm #
-DCMAKE_BUILD_TYPE=Release # Components compiled and the order for non-standalone build found at
-DAOMP_STANDALONE_BUILD=0 # https://github.com/ROCm/aomp/blob/aomp-dev/bin/build_aomp.sh#L135-L143
-DAOMP_VERSION_STRING=9.99.99 - task: Bash@3
-GNinja displayName: Build Prereq
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml inputs:
parameters: filePath: $(Build.SourcesDirectory)/aomp/bin/build_prereq.sh
os: ${{ job.os }} env:
componentName: openmp AOMP_REPOS: $(Build.SourcesDirectory)
cmakeBuildDir: '$(Build.SourcesDirectory)/llvm-project/openmp/build' - task: Bash@3
cmakeSourceDir: '$(Build.SourcesDirectory)/llvm-project/openmp' displayName: Build extras
installDir: '$(Build.BinariesDirectory)/llvm' inputs:
extraBuildFlags: >- filePath: $(Build.SourcesDirectory)/aomp/bin/build_extras.sh
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;$(Build.BinariesDirectory)" env:
-DCMAKE_BUILD_TYPE=Release AOMP_REPOS: $(Build.SourcesDirectory)
-DOPENMP_TEST_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ AOMP_PROJECT_REPO_NAME: llvm-project
-DOPENMP_TEST_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang AOMP_STANDALONE_BUILD: 0
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ AOMP_USE_NINJA: 1
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang INSTALL_PREFIX: $(Build.BinariesDirectory)
-DOPENMP_ENABLE_LIBOMPTARGET=1 CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
-DLIBOMP_COPY_EXPORTS=OFF AOMP: $(Build.BinariesDirectory)
-DLIBOMP_OMPD_SUPPORT=ON AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
-DCMAKE_SKIP_INSTALL_RPATH=TRUE INSTALL_EXTRAS: $(Build.BinariesDirectory)
-DLLVM_MAIN_INCLUDE_DIR=$(Build.SourcesDirectory)/llvm-project/llvm/include - task: Bash@3
-DLIBOMP_FORTRAN_MODULES_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/flang displayName: Install extras
-DLIBOMP_MODULES_INSTALL_PATH=$(Build.BinariesDirectory)/llvm/include/flang/ inputs:
multithreadFlag: -- -j32 filePath: $(Build.SourcesDirectory)/aomp/bin/build_extras.sh
- task: Bash@3 arguments: install
displayName: 'ROCm symbolic link' env:
inputs: AOMP_REPOS: $(Build.SourcesDirectory)
targetType: inline AOMP_PROJECT_REPO_NAME: llvm-project
script: sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm AOMP_STANDALONE_BUILD: 0
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml AOMP_USE_NINJA: 1
parameters: INSTALL_PREFIX: $(Build.BinariesDirectory)
os: ${{ job.os }} CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
componentName: offload AOMP: $(Build.BinariesDirectory)
cmakeBuildDir: '$(Build.SourcesDirectory)/llvm-project/offload/build' AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
cmakeSourceDir: '$(Build.SourcesDirectory)/llvm-project/offload' INSTALL_EXTRAS: $(Build.BinariesDirectory)
installDir: '$(Build.BinariesDirectory)/llvm' - task: Bash@3
extraBuildFlags: >- displayName: Build openmp
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;$(Build.BinariesDirectory)" inputs:
-DCMAKE_BUILD_TYPE=Release filePath: $(Build.SourcesDirectory)/aomp/bin/build_openmp.sh
-DOPENMP_TEST_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ env:
-DOPENMP_TEST_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang AOMP_REPOS: $(Build.SourcesDirectory)
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ AOMP_PROJECT_REPO_NAME: llvm-project
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang AOMP_STANDALONE_BUILD: 0
-DCMAKE_SKIP_INSTALL_RPATH=TRUE AOMP_BUILD_SANITIZER: 0
-DLLVM_MAIN_INCLUDE_DIR=$(Build.SourcesDirectory)/llvm-project/llvm/include AOMP_BUILD_DEBUG: 0
-DLIBOMPTARGET_LLVM_INCLUDE_DIRS=$(Build.SourcesDirectory)/llvm-project/llvm/include AOMP_LEGACY_OPENMP: 1
-DCMAKE_EXE_LINKER_FLAGS="-L$(Agent.BuildDirectory)/rocm/llvm/lib" AOMP_USE_NINJA: 1
-DCMAKE_SHARED_LINKER_FLAGS="-L$(Agent.BuildDirectory)/rocm/llvm/lib" ALTAOMP: $(Agent.BuildDirectory)/rocm/llvm
-GNinja INSTALL_PREFIX: $(Build.BinariesDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
parameters: LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
componentName: ${{ parameters.componentName }} AOMP: $(Build.BinariesDirectory)
os: ${{ job.os }} AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml INSTALL_OPENMP: $(Build.BinariesDirectory)
parameters: - task: Bash@3
componentName: ${{ parameters.componentName }} displayName: Install openmp
os: ${{ job.os }} inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml filePath: $(Build.SourcesDirectory)/aomp/bin/build_openmp.sh
- ${{ if eq(job.os, 'ubuntu2204') }}: arguments: install
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml env:
parameters: AOMP_REPOS: $(Build.SourcesDirectory)
aptPackages: ${{ parameters.aptPackages }} AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_LEGACY_OPENMP: 1
AOMP_USE_NINJA: 1
ALTAOMP: $(Agent.BuildDirectory)/rocm/llvm
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_OPENMP: $(Build.BinariesDirectory)
- script: ln -s $(Build.BinariesDirectory)/include/omp.h $(Build.SourcesDirectory)/llvm-project/llvm/include/omp.h
displayName: Link omp header
- task: Bash@3
displayName: Build offload
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_offload.sh
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_LEGACY_OPENMP: 1
AOMP_USE_NINJA: 1
ALTAOMP: $(Agent.BuildDirectory)/rocm/llvm
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_OPENMP: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Install offload
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_offload.sh
arguments: install
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_LEGACY_OPENMP: 1
AOMP_USE_NINJA: 1
ALTAOMP: $(Agent.BuildDirectory)/rocm/llvm
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_OPENMP: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Build flang-legacy
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_flang-legacy.sh
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Install flang-legacy
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_flang-legacy.sh
arguments: install
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Build pgmath
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_pgmath.sh
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_FLANG: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Install pgmath
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_pgmath.sh
arguments: install
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_FLANG: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Build flang
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_flang.sh
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_FLANG: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Install flang
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_flang.sh
arguments: install
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_FLANG: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Build flang_runtime
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_flang_runtime.sh
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_FLANG: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Install flang_runtime
inputs:
filePath: $(Build.SourcesDirectory)/aomp/bin/build_flang_runtime.sh
arguments: install
env:
AOMP_REPOS: $(Build.SourcesDirectory)
AOMP_PROJECT_REPO_NAME: llvm-project
AOMP_STANDALONE_BUILD: 0
AOMP_BUILD_SANITIZER: 0
AOMP_BUILD_DEBUG: 0
AOMP_USE_NINJA: 1
INSTALL_PREFIX: $(Build.BinariesDirectory)
CMAKE_INSTALL_PREFIX: $(Build.BinariesDirectory)
LLVM_PROJECT_ROOT: $(Build.SourcesDirectory)/llvm-project
AOMP: $(Build.BinariesDirectory)
AOMP_INSTALL_DIR: $(Build.BinariesDirectory)
INSTALL_FLANG: $(Build.BinariesDirectory)
# Clean up build environment before publish artifact
- script: |
rm $(Build.BinariesDirectory)/bin/clang
rm $(Build.BinariesDirectory)/bin/clang++
rm $(Build.BinariesDirectory)/bin/llvm-config
rm $(Build.BinariesDirectory)/llvm
displayName: Remove temporary symbolic links
# Copy the files to artifact staging temporarily to clean up binaries directory
# and then copy files back to llvm subdirectory in the cleaned up binaries directory
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
parameters:
sourceDir: $(Build.BinariesDirectory)
targetDir: $(Build.ArtifactStagingDirectory)
- task: DeleteFiles@1
displayName: 'Cleanup Binaries Directory'
inputs:
SourceFolder: '$(Build.BinariesDirectory)'
Contents: '/**/*'
RemoveDotFiles: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
parameters:
sourceDir: $(Build.ArtifactStagingDirectory)
targetDir: $(Build.BinariesDirectory)/llvm
- task: DeleteFiles@1
displayName: 'Cleanup Staging Directory'
inputs:
SourceFolder: $(Build.ArtifactStagingDirectory)
Contents: '/**/*'
RemoveDotFiles: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: aomp_testing
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} dependsOn: aomp
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
os: ${{ job.os }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmTestDependencies }} - task: Bash@3
os: ${{ job.os }} displayName: ROCm symbolic link
- task: Bash@3 inputs:
displayName: ROCm symbolic link targetType: inline
inputs: script: |
targetType: inline sudo rm -rf /opt/rocm
script: sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
checkoutRepo: aomp-extras_repo checkoutRepo: aomp-extras_repo
# these copy steps are from the aomp prototype script for test prep # these copy steps are from the aomp prototype script for test prep
- task: CopyFiles@2 - task: CopyFiles@2
displayName: 'Copy AOMP contents' displayName: 'Copy AOMP contents'
inputs: inputs:
CleanTargetFolder: false CleanTargetFolder: false
SourceFolder: $(Build.SourcesDirectory)/aomp SourceFolder: $(Build.SourcesDirectory)/aomp
Contents: | Contents: |
** **
!**/.git/** !**/.git/**
!**/.github/** !**/.github/**
!**/.gitignore !**/.gitignore
TargetFolder: $(Agent.BuildDirectory)/rocm/share/openmp-extras/tests TargetFolder: $(Agent.BuildDirectory)/rocm/share/openmp-extras/tests
retryCount: 3 retryCount: 3
- task: CopyFiles@2 - task: CopyFiles@2
displayName: 'Copy FileCheck' displayName: 'Copy FileCheck'
inputs: inputs:
CleanTargetFolder: false CleanTargetFolder: false
SourceFolder: $(Agent.BuildDirectory)/rocm/llvm/bin SourceFolder: $(Agent.BuildDirectory)/rocm/llvm/bin
Contents: FileCheck Contents: FileCheck
TargetFolder: $(Agent.BuildDirectory)/rocm/share/openmp-extras/tests/bin TargetFolder: $(Agent.BuildDirectory)/rocm/share/openmp-extras/tests/bin
retryCount: 3 retryCount: 3
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- task: Bash@3 - task: Bash@3
displayName: Test AOMP displayName: Test AOMP
continueOnError: true continueOnError: true
inputs: inputs:
targetType: inline targetType: inline
script: ./run_rocm_test.sh script: ./run_rocm_test.sh
workingDirectory: $(Build.SourcesDirectory)/aomp/bin workingDirectory: $(Build.SourcesDirectory)/aomp/bin
env: env:
AOMP: $(Agent.BuildDirectory)/rocm/llvm AOMP: $(Agent.BuildDirectory)/rocm/llvm
AOMP_REPOS_TEST: $(Build.SourcesDirectory)/aomp-test AOMP_REPOS_TEST: $(Build.SourcesDirectory)/aomp-test
AOMP_TEST_DIR: $(Build.SourcesDirectory)/aomp-test AOMP_TEST_DIR: $(Build.SourcesDirectory)/aomp-test
SKIP_TEST_PACKAGE: 1 SKIP_TEST_PACKAGE: 1
MAINLINE_BUILD: 1 MAINLINE_BUILD: 1
SUITE_LIST: smoke SUITE_LIST: smoke
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
optSymLink: true

View File

@@ -1,174 +0,0 @@
parameters:
- name: componentName
type: string
default: aqlprofile
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- python3-pip
- name: rocmDependencies
type: object
default:
- clr
- llvm-project
- ROCR-Runtime
- name: rocmTestDependencies
type: object
default:
- clr
- llvm-project
- ROCR-Runtime
- rocprofiler-register
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }}
${{ if parameters.buildDependsOn }}:
dependsOn:
- ${{ each build in parameters.buildDependsOn }}:
- ${{ build }}_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool: ${{ variables.MEDIUM_BUILD_POOL }}
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml
parameters:
dependencyList:
- gtest
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
consolidateBuildAndInstall: true
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/aqlprofile/cmake_modules
-DAQLPROFILE_BUILD_TESTS=ON
-DGPU_TARGETS=${{ job.target }}
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}:
- ${{ each job in parameters.jobMatrix.testJobs }}:
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }}
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }}
condition:
and(succeeded(),
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'),
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')),
eq(${{ parameters.aggregatePipeline }}, False)
)
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters:
preTargetFilter: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmTestDependencies }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
testDir: $(Agent.BuildDirectory)/rocm/share/hsa-amd-aqlprofile/
testExecutable: ./run_tests.sh
testParameters: ''
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -32,135 +27,121 @@ parameters:
type: object type: object
default: default:
- clr - clr
- composable_kernel
- llvm-project - llvm-project
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: composable_kernel
- job: composable_kernel_build_${{ job.target }} timeoutInMinutes: 240
timeoutInMinutes: 240 variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml - name: DAY_STRING
- name: DAY_STRING value: $[format('{0:ddMMyyyy}', pipeline.startTime)]
value: $[format('{0:ddMMyyyy}', pipeline.startTime)] pool: ${{ variables.ULTRA_BUILD_POOL }}
pool: ${{ variables.ULTRA_BUILD_POOL }} workspace:
workspace: clean: all
clean: all strategy:
steps: matrix:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml gfx942:
parameters: JOB_GPU_TARGET: gfx942
aptPackages: ${{ parameters.aptPackages }} steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} checkoutRepo: ${{ parameters.checkoutRepo }}
dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
gpuTarget: ${{ job.target }} parameters:
aggregatePipeline: ${{ parameters.aggregatePipeline }} dependencyList: ${{ parameters.rocmDependencies }}
- script: | gpuTarget: $(JOB_GPU_TARGET)
mkdir -p $(CCACHE_DIR) # CI case: download latest default branch build
echo "##vso[task.prependpath]/usr/lib/ccache" ${{ if eq(parameters.checkoutRef, '') }}:
displayName: Update path for ccache dependencySource: staging
- task: Cache@2 # manual build case: triggered by ROCm/ROCm repo
displayName: Ccache caching ${{ elseif ne(parameters.checkoutRef, '') }}:
inputs: dependencySource: tag-builds
key: composable_kernel | $(Agent.OS) | ${{ job.target }} | $(DAY_STRING) | $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ - script: |
path: $(CCACHE_DIR) mkdir -p $(CCACHE_DIR)
restoreKeys: | echo "##vso[task.prependpath]/usr/lib/ccache"
composable_kernel | $(Agent.OS) | ${{ job.target }} | $(DAY_STRING) displayName: Update path for ccache
composable_kernel | $(Agent.OS) | ${{ job.target }} - task: Cache@2
composable_kernel | $(Agent.OS) displayName: Ccache caching
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml inputs:
parameters: key: composable_kernel | $(Agent.OS) | $(JOB_GPU_TARGET) | $(DAY_STRING) | $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
extraBuildFlags: >- path: $(CCACHE_DIR)
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ restoreKeys: |
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang composable_kernel | $(Agent.OS) | $(JOB_GPU_TARGET) | $(DAY_STRING)
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache composable_kernel | $(Agent.OS) | $(JOB_GPU_TARGET)
-DCMAKE_C_COMPILER_LAUNCHER=ccache composable_kernel | $(Agent.OS)
-DCMAKE_HIP_FLAGS="-Wno-missing-include-dirs" - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm parameters:
-DCK_BUILD_JIT_LIB=ON extraBuildFlags: >-
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DGPU_TARGETS=${{ job.target }} -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-GNinja -DCMAKE_C_COMPILER_LAUNCHER=ccache
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DCMAKE_HIP_FLAGS="-Wno-missing-include-dirs"
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
gpuTarget: ${{ job.target }} -DCK_BUILD_JIT_LIB=ON
# if this artifact name is changed, please also update $ARTIFACT_URL inside miopen-get-ck-build.yml -DCMAKE_POSITION_INDEPENDENT_CODE=ON
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml -DCMAKE_BUILD_TYPE=Release
parameters: -DGPU_TARGETS=$(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: composable_kernel_testing
- job: composable_kernel_test_${{ job.target }} dependsOn: composable_kernel
timeoutInMinutes: 180 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: composable_kernel_build_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - name: TEST_LOG_FILE
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), value: $(Pipeline.Workspace)/ckTestLog.log
eq(${{ parameters.aggregatePipeline }}, False) pool: $(JOB_TEST_POOL)
) workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
- name: TEST_LOG_FILE gfx942:
value: $(Pipeline.Workspace)/ckTestLog.log JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmTestDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml dependencyList: ${{ parameters.rocmTestDependencies }}
- task: Bash@3 gpuTarget: $(JOB_GPU_TARGET)
displayName: Iterate through test scripts ${{ if eq(parameters.checkoutRef, '') }}:
inputs: dependencySource: staging
targetType: inline ${{ elseif ne(parameters.checkoutRef, '') }}:
script: | dependencySource: tag-builds
for file in ./test_*; do - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
./$file | tee -a $(TEST_LOG_FILE) - task: Bash@3
done displayName: Iterate through test scripts
workingDirectory: $(Agent.BuildDirectory)/rocm/bin inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml targetType: inline
parameters: script: |
aptPackages: ${{ parameters.aptPackages }} for file in ./test_*; do
environment: test ./$file | tee -a $(TEST_LOG_FILE)
gpuTarget: ${{ job.target }} done
workingDirectory: $(Agent.BuildDirectory)/rocm/bin

View File

@@ -1,44 +1,32 @@
parameters: parameters:
- name: jobMatrix - name: checkoutRepo
type: object type: string
default: default: 'self'
copyJobs: - name: checkoutRef
- { os: ubuntu2204, backend: amd } type: string
- { os: almalinux8, backend: amd } default: ''
- { os: ubuntu2204, backend: nvidia }
- { os: almalinux8, backend: nvidia }
# hip and clr are tightly-coupled # hip and clr are tightly-coupled
# run this same template for both repos # run this same template for both repos
# any changes for clr should just trigger HIP pipeline # any changes for clr should just trigger HIP pipeline
jobs: jobs:
- ${{ each job in parameters.jobMatrix.copyJobs }}: - job: hip_clr_combined
- job: hip_clr_combined_${{ job.os }}_${{ job.backend }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool:
pool: vmImage: ${{ variables.BASE_BUILD_POOL }}
vmImage: ${{ variables.BASE_BUILD_POOL }} workspace:
workspace: clean: all
clean: all steps:
steps: # checkout nothing, just copy artifacts from triggering HIP job
# checkout nothing, just copy artifacts from triggering HIP job # and then publish for this clr job or for this hipother job to maintain latest
# and then publish for this clr job or for this hipother job to maintain latest - checkout: none
- checkout: none - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml parameters:
parameters: componentName: HIP
componentName: HIP pipelineId: $(HIP_PIPELINE_ID)
pipelineId: $(HIP_PIPELINE_ID) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
fileFilter: ${{ job.os }}*${{ job.backend }} parameters:
- task: Bash@3 sourceDir: $(Agent.BuildDirectory)/rocm
displayName: Copy HIP artifacts - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
inputs:
targetType: inline
script: cp -a $(Agent.BuildDirectory)/rocm/* $(Build.BinariesDirectory)/
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
inputs:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -44,16 +39,19 @@ jobs:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }} # CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF -DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
# only run test03 because test11 has too many test cases, taking way too long # only run test03 because test11 has too many test cases, taking way too long
- task: Bash@3 - task: Bash@3
@@ -65,8 +63,3 @@ jobs:
make test03 make test03
./bin/test ./bin/test
workingDirectory: $(Build.SourcesDirectory)/test workingDirectory: $(Build.SourcesDirectory)/test
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# environment: combined

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: hip-tests
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -61,132 +37,108 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
# HIP with AMD backend # HIP with AMD backend
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hip_tests
- job: hip_tests_build_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.target }} value: $(Agent.BuildDirectory)/rocm
variables: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- group: common workspace:
- template: /.azuredevops/variables-global.yml clean: all
- name: HIP_ROCCLR_HOME strategy:
value: $(Agent.BuildDirectory)/rocm matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: # CI case: download latest default branch build
checkoutRef: ${{ parameters.checkoutRef }} ${{ if eq(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmDependencies }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
${{ if parameters.triggerDownstreamJobs }}: ${{ elseif ne(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} dependencySource: tag-builds
# compile hip-tests # compile hip-tests
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
componentName: ${{ parameters.componentName }} componentName: hip-tests
cmakeSourceDir: '../catch' cmakeSourceDir: '../catch'
customBuildTarget: build_tests customBuildTarget: build_tests
extraBuildFlags: >- extraBuildFlags: >-
-DHIP_PLATFORM=amd -DHIP_PLATFORM=amd
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCM_PATH=$(Agent.BuildDirectory)/rocm -DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DHIP_PATH=$(Agent.BuildDirectory)/rocm -DHIP_PATH=$(Agent.BuildDirectory)/rocm
-DOFFLOAD_ARCH_STR="--offload-arch=${{ job.target }}" -DOFFLOAD_ARCH_STR="--offload-arch=$(JOB_GPU_TARGET)"
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters: parameters:
componentName: ${{ parameters.componentName }} gpuTarget: $(JOB_GPU_TARGET)
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hip_tests_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: timeoutInMinutes: 240
- job: hip_tests_test_${{ job.target }} dependsOn: hip_tests
timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: hip_tests_build_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters: parameters:
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmTestDependencies }}
${{ if parameters.triggerDownstreamJobs }}: gpuTarget: $(JOB_GPU_TARGET)
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ if eq(parameters.checkoutRef, '') }}:
- task: Bash@3 dependencySource: staging
displayName: Symlink rocm_agent_enumerator ${{ elseif ne(parameters.checkoutRef, '') }}:
inputs: dependencySource: tag-builds
targetType: inline - task: Bash@3
script: | displayName: Symlink rocm_agent_enumerator
# Assuming that /opt is no longer persistent across runs, test environments are fully ephemeral inputs:
sudo mkdir -p /opt/rocm/bin targetType: inline
sudo ln -s $(Agent.BuildDirectory)/rocm/bin/rocm_agent_enumerator /opt/rocm/bin/rocm_agent_enumerator script: |
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml sudo rm -rf /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml sudo mkdir -p /opt/rocm/bin
parameters: sudo ln -s $(Agent.BuildDirectory)/rocm/bin/rocm_agent_enumerator /opt/rocm/bin/rocm_agent_enumerator
componentName: ${{ parameters.componentName }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
testDir: $(Agent.BuildDirectory)/rocm/share/hip - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml parameters:
parameters: componentName: hip_tests
aptPackages: ${{ parameters.aptPackages }} testDir: $(Agent.BuildDirectory)/rocm/share/hip
environment: test reloadAMDGPU: true
gpuTarget: ${{ job.target }} - task: Bash@3
optSymLink: true displayName: Clean up symlink
inputs:
targetType: inline
script: sudo rm -rf /opt/rocm

View File

@@ -1,135 +1,62 @@
parameters: parameters:
- name: componentName
type: string
default: hipBLAS-common
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- git
- ninja-build - ninja-build
- git
- wget - wget
- python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project
- rocm-cmake - rocm-cmake
- rocminfo - llvm-project
- ROCR-Runtime - ROCR-Runtime
- clr
- name: jobMatrix - rocminfo
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
- name: downstreamComponentMatrix
type: object
default:
- hipBLASLt:
name: hipBLASLt
sparseCheckoutDir: projects/hipblaslt
skipUnifiedBuild: 'false'
buildDependsOn:
- hipBLAS_common_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipBLAS_common
- job: hipBLAS_common_build_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - name: ROCM_PATH
- ${{ each build in parameters.buildDependsOn }}: value: $(Agent.BuildDirectory)/rocm
- ${{ build }}_${{ job.os }} - template: /.azuredevops/variables-global.yml
variables: pool:
- group: common vmImage: ${{ variables.BASE_BUILD_POOL }}
- template: /.azuredevops/variables-global.yml workspace:
- name: ROCM_PATH clean: all
value: $(Agent.BuildDirectory)/rocm steps:
pool: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
vmImage: ${{ variables.BASE_BUILD_POOL }} parameters:
${{ if eq(job.os, 'almalinux8') }}: aptPackages: ${{ parameters.aptPackages }}
container: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
endpoint: ContainerService3 parameters:
workspace: checkoutRepo: ${{ parameters.checkoutRepo }}
clean: all # CI case: download latest default branch build
steps: - ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
os: ${{ job.os }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
${{ if parameters.triggerDownstreamJobs }}: - ${{ if ne(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
os: ${{ job.os }} dependencyList: ${{ parameters.rocmDependencies }}
extraBuildFlags: >- dependencySource: tag-builds
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ parameters:
-GNinja extraBuildFlags: >-
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
parameters: -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
componentName: ${{ parameters.componentName }} -GNinja
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
componentName: ${{ parameters.componentName }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# extraEnvVars:
# - ROCM_PATH:::/home/user/workspace/rocm
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: hipBLAS
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -40,10 +16,6 @@ parameters:
- libgtest-dev - libgtest-dev
- wget - wget
- python3-pip - python3-pip
- name: pipModules
type: object
default:
- pyyaml
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -75,158 +47,93 @@ parameters:
- rocSOLVER - rocSOLVER
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
# MIOpen depends on both rocRAND and hipBLAS
# for a unified build, hipBLAS will be the one to call MIOpen
- name: downstreamComponentMatrix
type: object
default:
- MIOpen:
name: MIOpen
sparseCheckoutDir: projects/miopen
skipUnifiedBuild: 'false'
buildDependsOn:
- hipBLAS_build
unifiedBuild:
downstreamAggregateNames: hipBLAS+rocRAND
buildDependsOn:
- hipBLAS_build
- rocRAND_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipBLAS
- job: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_ubuntu2204_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml checkoutRepo: ${{ parameters.checkoutRepo }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aocl.yml
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aocl.yml dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
checkoutRef: ${{ parameters.checkoutRef }} ${{ if eq(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmDependencies }} dependencySource: staging
gpuTarget: ${{ job.target }} # manual build case: triggered by ROCm/ROCm repo
aggregatePipeline: ${{ parameters.aggregatePipeline }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters:
parameters: extraBuildFlags: >-
extraBuildFlags: >- -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release
-DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DHIP_PLATFORM=amd
-DHIP_PLATFORM=amd -DBUILD_CLIENTS_TESTS=ON
-DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCHMARKS=OFF
-DBUILD_CLIENTS_BENCHMARKS=OFF -DBUILD_CLIENTS_SAMPLES=OFF
-DBUILD_CLIENTS_SAMPLES=OFF -DCPACK_SET_DESTDIR=OFF
-DCPACK_SET_DESTDIR=OFF -GNinja
-GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
installAOCL: true
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hipBLAS_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: hipBLAS
- job: ${{ parameters.componentName }}_test_ubuntu2204_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
pipModules: ${{ parameters.pipModules }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }}
dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: staging
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
componentName: ${{ parameters.componentName }} parameters:
testExecutable: $(Agent.BuildDirectory)/rocm/bin/hipblas-test componentName: hipBLAS
testParameters: '--yaml hipblas_smoke.yaml --gtest_output=xml:./test_output.xml --gtest_color=yes' testExecutable: $(Agent.BuildDirectory)/rocm/bin/hipblas-test
testDir: '$(Agent.BuildDirectory)/rocm/bin' testParameters: '--yaml hipblas_smoke.yaml --gtest_output=xml:./test_output.xml --gtest_color=yes'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml testDir: '$(Agent.BuildDirectory)/rocm/bin'
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}
${{ if parameters.unifiedBuild }}:
buildDependsOn: ${{ component.unifiedBuild.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ component.unifiedBuild.downstreamAggregateNames }}
${{ else }}:
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}

View File

@@ -1,62 +1,28 @@
parameters: parameters:
- name: componentName
type: string
default: hipBLASLt
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- ccache
- gfortran
- git - git
- libboost-filesystem-dev
- libboost-program-options-dev
- libdrm-dev - libdrm-dev
- liblapack-dev
- libmsgpack-dev - libmsgpack-dev
- libnuma-dev - libnuma-dev
- libopenblas-dev
- ninja-build - ninja-build
- python3-pip - python3-pip
- python3-venv - python3-venv
- gfortran
- libblas-dev
- ccache
- name: pipModules - name: pipModules
type: object type: object
default: default:
- joblib - joblib
- "packaging>=22.0" - packaging
- pyyaml
- msgpack
- simplejson
- ujson
- orjson
- yappi
- --upgrade
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -65,7 +31,6 @@ parameters:
- hipBLAS-common - hipBLAS-common
- llvm-project - llvm-project
- rocminfo - rocminfo
- rocm-cmake
- rocm_smi_lib - rocm_smi_lib
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
@@ -77,236 +42,152 @@ parameters:
- clr - clr
- hipBLAS-common - hipBLAS-common
- llvm-project - llvm-project
- rocm-cmake
- rocminfo - rocminfo
- rocm_smi_lib - rocm_smi_lib
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { pool: rocm-ci_ultra_build_pool, os: ubuntu2204, packageManager: apt, target: gfx942 }
- { pool: rocm-ci_medium_build_pool, os: ubuntu2204, packageManager: apt, target: gfx90a }
- { pool: rocm-ci_medium_build_pool, os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { pool: rocm-ci_medium_build_pool, os: ubuntu2204, packageManager: apt, target: gfx1100 }
#- { pool: rocm-ci_medium_build_pool, os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { pool: rocm-ci_ultra_build_pool, os: almalinux8, packageManager: dnf, target: gfx942 }
- { pool: rocm-ci_medium_build_pool, os: almalinux8, packageManager: dnf, target: gfx90a }
- { pool: rocm-ci_medium_build_pool, os: almalinux8, packageManager: dnf, target: gfx1201 }
- { pool: rocm-ci_medium_build_pool, os: almalinux8, packageManager: dnf, target: gfx1100 }
#- { pool: rocm-ci_medium_build_pool, os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- rocBLAS:
name: rocBLAS
sparseCheckoutDir: projects/rocblas
skipUnifiedBuild: 'false'
buildDependsOn:
- hipBLASLt_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipBLASLt
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} timeoutInMinutes: 300
timeoutInMinutes: 300 variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }} value: $(Build.BinariesDirectory)/rocm
variables: - name: TENSILE_ROCM_ASSEMBLER_PATH
- group: common value: $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
- template: /.azuredevops/variables-global.yml - name: CMAKE_CXX_COMPILER
- name: HIP_ROCCLR_HOME value: $(Agent.BuildDirectory)/rocm/bin/hipcc
value: $(Build.BinariesDirectory)/rocm - name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH
- name: TENSILE_ROCM_ASSEMBLER_PATH value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler
value: $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang - name: TENSILE_ROCM_PATH
- name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH value: $(Agent.BuildDirectory)/rocm/bin/hipcc
value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler - name: PATH
- name: ROCM_PATH value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
value: $(Agent.BuildDirectory)/rocm - name: DAY_STRING
- name: DAY_STRING value: $[format('{0:ddMMyyyy}', pipeline.startTime)]
value: $[format('{0:ddMMyyyy}', pipeline.startTime)] pool: ${{ variables.ULTRA_BUILD_POOL }}
pool: ${{ job.pool }} workspace:
${{ if eq(job.os, 'almalinux8') }}: clean: all
container: strategy:
image: rocmexternalcicd.azurecr.io/manylinux228:latest matrix:
endpoint: ContainerService3 gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-latest.yml
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml checkoutRepo: ${{ parameters.checkoutRepo }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
dependencyList: ${{ if eq(parameters.checkoutRef, '') }}:
- gtest dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmDependencies }} - script: sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
os: ${{ job.os }} displayName: ROCm symbolic link
gpuTarget: ${{ job.target }} # Build and install gtest, lapack, hipBLAS-common
aggregatePipeline: ${{ parameters.aggregatePipeline }} # $(Pipeline.Workspace)/deps is a temporary folder for the build process
${{ if parameters.triggerDownstreamJobs }}: # $(Pipeline.Workspace)/s/deps is part of the hipBLASLt repo
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - script: mkdir $(Pipeline.Workspace)/deps
- task: Bash@3 displayName: Create temp folder for external dependencies
displayName: Add ROCm binaries to PATH # hipBLASLt already has a CMake script for external deps, so we can just run that
inputs: # https://github.com/ROCm/hipBLASLt/blob/develop/deps/CMakeLists.txt
targetType: inline - script: cmake $(Pipeline.Workspace)/s/deps
script: | displayName: Configure hipBLASLt external dependencies
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin" workingDirectory: $(Pipeline.Workspace)/deps
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin" - script: make
- task: Bash@3 displayName: Build hipBLASLt external dependencies
displayName: Build and install LAPACK workingDirectory: $(Pipeline.Workspace)/deps
inputs: - script: sudo make install
targetType: inline displayName: Install hipBLASLt external dependencies
script: | workingDirectory: $(Pipeline.Workspace)/deps
mkdir -p $(Agent.BuildDirectory)/temp-deps - script: |
cd $(Agent.BuildDirectory)/temp-deps mkdir -p $(CCACHE_DIR)
# position-independent LAPACK is required for almalinux8 builds echo "##vso[task.prependpath]/usr/lib/ccache"
cmake -DBUILD_GTEST=OFF -DBUILD_LAPACK=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON $(Agent.BuildDirectory)/sparse/projects/hipblaslt/deps displayName: Update path for ccache
make -j - task: Cache@2
sudo make install displayName: Ccache caching
- script: | inputs:
mkdir -p $(CCACHE_DIR) key: hipBLASLt | $(Agent.OS) | $(JOB_GPU_TARGET) | $(DAY_STRING) | $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
echo "##vso[task.prependpath]/usr/lib/ccache" path: $(CCACHE_DIR)
displayName: Update path for ccache restoreKeys: |
- task: Cache@2 hipBLASLt | $(Agent.OS) | $(JOB_GPU_TARGET) | $(DAY_STRING)
displayName: Ccache caching hipBLASLt | $(Agent.OS) | $(JOB_GPU_TARGET)
inputs: hipBLASLt | $(Agent.OS)
key: hipBLASLt | ${{ job.os }} | ${{ job.target }} | $(DAY_STRING) | $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
path: $(CCACHE_DIR) parameters:
restoreKeys: | extraBuildFlags: >-
hipBLASLt | ${{ job.os }} | ${{ job.target }} | $(DAY_STRING) -DCMAKE_BUILD_TYPE=Release
hipBLASLt | ${{ job.os }} | ${{ job.target }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
hipBLASLt | ${{ job.os }} -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
parameters: -DCMAKE_C_COMPILER_LAUNCHER=ccache
os: ${{ job.os }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
cmakeSourceDir: $(Agent.BuildDirectory)/sparse/projects/hipblaslt -DTensile_LOGIC=
cmakeBuildDir: $(Agent.BuildDirectory)/sparse/projects/hipblaslt/build -DTensile_CPU_THREADS=
extraBuildFlags: >- -DTensile_CODE_OBJECT_VERSION=default
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor -DTensile_LIBRARY_FORMAT=msgpack
-DCMAKE_INCLUDE_PATH=$(Agent.BuildDirectory)/rocm/llvm/include -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm"
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DBUILD_CLIENTS_TESTS=ON
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -GNinja
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DCMAKE_C_COMPILER_LAUNCHER=ccache parameters:
-DAMDGPU_TARGETS=${{ job.target }} gpuTarget: $(JOB_GPU_TARGET)
-DGPU_TARGETS=${{ job.target }}
-DBUILD_CLIENTS_TESTS=ON
-DHIPBLASLT_ENABLE_ROCROLLER=ON
-DHIPBLASLT_ENABLE_FETCH=ON
-DHIPBLASLT_ENABLE_BLIS=OFF
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
gpuTarget: ${{ job.target }}
extraPaths: /home/user/workspace/rocm/llvm/bin:/home/user/workspace/rocm/bin
installLatestCMake: true
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- TENSILE_ROCM_ASSEMBLER_PATH:::/home/user/workspace/rocm/llvm/bin/amdclang
- TENSILE_ROCM_OFFLOAD_BUNDLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang-offload-bundler
- ROCM_PATH:::/home/user/workspace/rocm
extraCopyDirectories:
- deps
- ${{ if eq(parameters.unifiedBuild, False) }}:
- ${{ each job in parameters.jobMatrix.testJobs }}:
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }}
timeoutInMinutes: 300
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }}
condition:
and(succeeded(),
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'),
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')),
eq(${{ parameters.aggregatePipeline }}, False)
)
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: ROCM_PATH
value: $(Agent.BuildDirectory)/rocm
pool: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters:
preTargetFilter: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmTestDependencies }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
testDir: '$(Agent.BuildDirectory)/rocm/bin'
testExecutable: './hipblaslt-test'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes --gtest_filter=*pre_checkin*'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}: - job: hipBLASLt_testing
- ${{ each component in parameters.downstreamComponentMatrix }}: dependsOn: hipBLASLt
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}: condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo variables:
parameters: - group: common
checkoutRepo: ${{ parameters.checkoutRepo }} - template: /.azuredevops/variables-global.yml
sparseCheckoutDir: ${{ component.sparseCheckoutDir }} pool: $(JOB_TEST_POOL)
buildDependsOn: ${{ component.buildDependsOn }} workspace:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }} clean: all
triggerDownstreamJobs: true strategy:
unifiedBuild: ${{ parameters.unifiedBuild }} matrix:
gfx942:
JOB_GPU_TARGET: gfx942
JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters:
gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters:
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
dependencyList: ${{ parameters.rocmTestDependencies }}
gpuTarget: $(JOB_GPU_TARGET)
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: hipBLASLt
testDir: '$(Agent.BuildDirectory)/rocm/bin'
testExecutable: './hipblaslt-test'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes --gtest_filter=*pre_checkin*'

View File

@@ -1,40 +1,17 @@
parameters: parameters:
- name: componentName
type: string
default: hipCUB
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- git
- ninja-build - ninja-build
- libgtest-dev
- git
- python3-pip - python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
@@ -51,143 +28,90 @@ parameters:
- llvm-project - llvm-project
- rocminfo - rocminfo
- rocPRIM - rocPRIM
- rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- rocprofiler-register
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipCUB
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_${{ job.os }}_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
${{ if eq(job.os, 'almalinux8') }}: JOB_GPU_TARGET: gfx942
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ if eq(parameters.checkoutRef, '') }}:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: dependencySource: tag-builds
- gtest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: extraBuildFlags: >-
checkoutRef: ${{ parameters.checkoutRef }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
dependencyList: ${{ parameters.rocmDependencies }} -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
gpuTarget: ${{ job.target }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
os: ${{ job.os }} -DBUILD_TEST=ON
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
${{ if parameters.triggerDownstreamJobs }}: -GNinja
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
os: ${{ job.os }}
consolidateBuildAndInstall: true
extraBuildFlags: >-
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor"
-DBUILD_BENCHMARK=ON
-DBUILD_TEST=ON
-DAMDGPU_TARGETS=${{ job.target }}
-GNinja
extraCxxFlags: -Wno-deprecated-declarations
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hipCUB_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: hipCUB
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: hipCUB
componentName: ${{ parameters.componentName }} testDir: '$(Agent.BuildDirectory)/rocm/bin/hipcub'
testDir: '$(Agent.BuildDirectory)/rocm/bin/hipcub'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: hipFFT
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -64,124 +40,98 @@ parameters:
- ROCR-Runtime - ROCR-Runtime
- rocRAND - rocRAND
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipFFT
- job: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_ubuntu2204_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
variables: pool:
- group: common vmImage: ${{ variables.BASE_BUILD_POOL }}
- template: /.azuredevops/variables-global.yml workspace:
- name: HIP_ROCCLR_HOME clean: all
value: $(Build.BinariesDirectory)/rocm strategy:
pool: matrix:
vmImage: ${{ variables.BASE_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
${{ if parameters.triggerDownstreamJobs }}: ${{ elseif ne(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release
-DAMDGPU_TARGETS=${{ job.target }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
-DUSE_HIP_CLANG=ON -DUSE_HIP_CLANG=ON
-DHIP_COMPILER=clang -DHIP_COMPILER=clang
-DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_TESTS=ON
-DBUILD_CLIENTS_BENCHMARKS=OFF -DBUILD_CLIENTS_BENCHMARKS=OFF
-DBUILD_CLIENTS_SAMPLES=OFF -DBUILD_CLIENTS_SAMPLES=OFF
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters: parameters:
componentName: ${{ parameters.componentName }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: hipFFT_testing
- job: ${{ parameters.componentName }}_test_ubuntu2204_${{ job.target }} dependsOn: hipFFT
dependsOn: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- checkout: none parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
preTargetFilter: ${{ parameters.componentName }} parameters:
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmTestDependencies }}
${{ if parameters.triggerDownstreamJobs }}: gpuTarget: $(JOB_GPU_TARGET)
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
componentName: ${{ parameters.componentName }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
testDir: '$(Agent.BuildDirectory)/rocm/bin' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
testExecutable: './hipfft-test' parameters:
testParameters: '--test_prob 0.002 --gtest_output=xml:./test_output.xml --gtest_color=yes' componentName: hipFFT
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml testDir: '$(Agent.BuildDirectory)/rocm/bin'
parameters: testExecutable: './hipfft-test'
aptPackages: ${{ parameters.aptPackages }} testParameters: '--test_prob 0.002 --gtest_output=xml:./test_output.xml --gtest_color=yes'
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,50 +1,25 @@
parameters: parameters:
- name: componentName
type: string
default: hipRAND
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- git
- ninja-build - ninja-build
- python3-pip - googletest
- git
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project - llvm-project
- rocm-cmake - ROCR-Runtime
- clr
- rocminfo - rocminfo
- rocRAND - rocRAND
- ROCR-Runtime
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -52,168 +27,95 @@ parameters:
- llvm-project - llvm-project
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- rocRAND
- ROCR-Runtime - ROCR-Runtime
- rocRAND
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- rocFFT:
name: rocFFT
sparseCheckoutDir: projects/rocfft
skipUnifiedBuild: 'false'
buildDependsOn:
- hipRAND_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipRAND
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
variables: pool:
- group: common vmImage: ${{ variables.BASE_BUILD_POOL }}
- template: /.azuredevops/variables-global.yml workspace:
- name: HIP_ROCCLR_HOME clean: all
value: $(Build.BinariesDirectory)/rocm strategy:
pool: ${{ variables.MEDIUM_BUILD_POOL }} matrix:
${{ if eq(job.os, 'almalinux8') }}: gfx942:
container: JOB_GPU_TARGET: gfx942
image: rocmexternalcicd.azurecr.io/manylinux228:latest steps:
endpoint: ContainerService3 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
workspace: parameters:
clean: all aptPackages: ${{ parameters.aptPackages }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} checkoutRepo: ${{ parameters.checkoutRepo }}
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml dependencySource: staging
parameters: # manual build case: triggered by ROCm/ROCm repo
dependencyList: ${{ elseif ne(parameters.checkoutRef, '') }}:
- gtest dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} extraBuildFlags: >-
dependencyList: ${{ parameters.rocmDependencies }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
gpuTarget: ${{ job.target }} -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
os: ${{ job.os }} -DBUILD_TEST=ON
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
${{ if parameters.triggerDownstreamJobs }}: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DCMAKE_BUILD_TYPE=Release
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
parameters: -GNinja
os: ${{ job.os }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
consolidateBuildAndInstall: true parameters:
extraBuildFlags: >- gpuTarget: $(JOB_GPU_TARGET)
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DBUILD_TEST=ON
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor"
-DCMAKE_BUILD_TYPE=Release
-DAMDGPU_TARGETS=${{ job.target }}
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hipRAND_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: hipRAND
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: hipRAND
componentName: ${{ parameters.componentName }} testDir: '$(Agent.BuildDirectory)/rocm/bin/hipRAND'
testDir: '$(Agent.BuildDirectory)/rocm/bin/hipRAND'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: hipSOLVER
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -39,7 +15,6 @@ parameters:
- git - git
- googletest - googletest
- libgtest-dev - libgtest-dev
- python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -69,130 +44,101 @@ parameters:
- rocSPARSE - rocSPARSE
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipSOLVER
- job: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_ubuntu2204_${{ job.target }} vmImage: ${{ variables.BASE_BUILD_POOL }}
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
pool: ${{ variables.MEDIUM_BUILD_POOL }} matrix:
workspace: gfx942:
clean: all JOB_GPU_TARGET: gfx942
steps: steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmDependencies }} # CI case: download latest default branch build
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
aggregatePipeline: ${{ parameters.aggregatePipeline }} dependencySource: staging
${{ if parameters.triggerDownstreamJobs }}: # manual build case: triggered by ROCm/ROCm repo
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ elseif ne(parameters.checkoutRef, '') }}:
# build external gtest and lapack dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml # build external gtest and lapack
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
componentName: external parameters:
cmakeBuildDir: '$(Agent.BuildDirectory)/s/deps/build' componentName: external
cmakeSourceDir: '$(Agent.BuildDirectory)/s/deps' cmakeBuildDir: 'deps/build'
installDir: '$(Pipeline.Workspace)/deps-install' installDir: '$(Pipeline.Workspace)/deps-install'
extraBuildFlags: >- extraBuildFlags: >-
-DBUILD_BOOST=OFF -DBUILD_BOOST=OFF
-DBUILD_GTEST=OFF -DBUILD_GTEST=OFF
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install
-DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_TESTS=ON
-DUSE_CUDA=OFF -DUSE_CUDA=OFF
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters: parameters:
gpuTarget: ${{ job.target }} gpuTarget: $(JOB_GPU_TARGET)
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# gpuTarget: ${{ job.target }}
# extraCopyDirectories:
# - deps-install
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hipSOLVER_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: hipSOLVER
- job: ${{ parameters.componentName }}_test_ubuntu2204_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters: parameters:
preTargetFilter: ${{ parameters.componentName }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRef: ${{ parameters.checkoutRef }} parameters:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencyList: ${{ parameters.rocmTestDependencies }}
gpuTarget: ${{ job.target }} gpuTarget: $(JOB_GPU_TARGET)
${{ if parameters.triggerDownstreamJobs }}: ${{ if eq(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
componentName: ${{ parameters.componentName }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
testDir: '$(Agent.BuildDirectory)/rocm/bin' parameters:
testExecutable: './hipsolver-test' componentName: hipSOLVER
testParameters: '--gtest_filter="*checkin*" --gtest_output=xml:./test_output.xml --gtest_color=yes' testDir: '$(Agent.BuildDirectory)/rocm/bin'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml testExecutable: './hipsolver-test'
parameters: testParameters: '--gtest_filter="*checkin*" --gtest_output=xml:./test_output.xml --gtest_color=yes'
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,44 +1,21 @@
parameters: parameters:
- name: componentName
type: string
default: hipSPARSE
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- gfortran
- git
- libboost-program-options-dev
- libfftw3-dev
- ninja-build - ninja-build
- python3-pip - libboost-program-options-dev
- googletest
- libfftw3-dev
- git
- gfortran
- libgtest-dev
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -62,163 +39,100 @@ parameters:
- rocSPARSE - rocSPARSE
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
#- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- hipSPARSELt:
name: hipSPARSELt
sparseCheckoutDir: projects/hipsparselt
skipUnifiedBuild: 'false'
buildDependsOn:
- hipSPARSE_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipSPARSE
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }}_${{ job.target }} vmImage: ${{ variables.BASE_BUILD_POOL }}
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
pool: matrix:
vmImage: ${{ variables.BASE_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml checkoutRepo: ${{ parameters.checkoutRepo }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
dependencyList: ${{ if eq(parameters.checkoutRef, '') }}:
- gtest dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
gpuTarget: ${{ job.target }} parameters:
os: ${{ job.os }} extraBuildFlags: >-
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
${{ if parameters.triggerDownstreamJobs }}: -DCMAKE_BUILD_TYPE=Release
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake/
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DBUILD_CLIENTS_TESTS=ON
parameters: -DBUILD_CLIENTS_SAMPLES=OFF
os: ${{ job.os }} -GNinja
extraBuildFlags: >- - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor parameters:
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ artifactName: hipSPARSE
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/amdclang gpuTarget: $(JOB_GPU_TARGET)
-DCMAKE_BUILD_TYPE=Release publish: false
-DBUILD_CLIENTS_TESTS=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
-DBUILD_CLIENTS_SAMPLES=OFF parameters:
-GNinja sourceDir: $(Build.SourcesDirectory)/build/clients
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml contentsString: matrices/**
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
componentName: ${{ parameters.componentName }} parameters:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} artifactName: testMatrices
gpuTarget: ${{ job.target }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
publish: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
parameters:
sourceDir: $(Agent.BuildDirectory)/s/build/clients
contentsString: matrices/**
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
artifactName: testMatrices
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# environment: test
# gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hipSPARSE_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: hipSPARSE
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: hipSPARSE
componentName: ${{ parameters.componentName }} testDir: '$(Agent.BuildDirectory)/rocm/bin'
os: ${{ job.os }} testExecutable: './hipsparse-test'
testDir: '$(Agent.BuildDirectory)/rocm/bin' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
testExecutable: './hipsparse-test'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: hipSPARSELt
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -40,12 +16,10 @@ parameters:
- gfortran - gfortran
- libgfortran5 - libgfortran5
- libopenblas-dev - libopenblas-dev
- liblapack-dev
- name: pipModules - name: pipModules
type: object type: object
default: default:
- joblib - joblib
- msgpack
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -54,12 +28,9 @@ parameters:
- hipSPARSE - hipSPARSE
- llvm-project - llvm-project
- rocBLAS - rocBLAS
- rocm-cmake
- rocm_smi_lib
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- roctracer
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -68,197 +39,122 @@ parameters:
- llvm-project - llvm-project
- hipBLAS-common - hipBLAS-common
- hipBLASLt - hipBLASLt
- rocm-cmake
- rocBLAS - rocBLAS
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipSPARSELt
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
variables: - name: TENSILE_ROCM_ASSEMBLER_PATH
- group: common value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang
- template: /.azuredevops/variables-global.yml - name: CMAKE_CXX_COMPILER
- name: HIP_ROCCLR_HOME value: $(Agent.BuildDirectory)/rocm/llvm/bin/hipcc
value: $(Build.BinariesDirectory)/rocm - name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH
- name: TENSILE_ROCM_ASSEMBLER_PATH value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler
value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang - name: PATH
- name: CMAKE_CXX_COMPILER value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
value: $(Agent.BuildDirectory)/rocm/llvm/bin/hipcc pool: ${{ variables.MEDIUM_BUILD_POOL }}
- name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH workspace:
value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler clean: all
- name: PATH strategy:
value: $(Agent.BuildDirectory)/rocm/llvm/bin:$(Agent.BuildDirectory)/rocm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-latest.yml
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml checkoutRepo: ${{ parameters.checkoutRepo }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
# ignore sparse checkout for monorepo case, we want access to hipblaslt directory dependencyList: ${{ parameters.rocmDependencies }}
# sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml # CI case: download latest default branch build
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: staging
dependencyList: ${{ parameters.rocmDependencies }} # manual build case: triggered by ROCm/ROCm repo
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
aggregatePipeline: ${{ parameters.aggregatePipeline }} # Build and install gtest and lapack
${{ if parameters.triggerDownstreamJobs }}: # $(Pipeline.Workspace)/deps is a temporary folder for the build process
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} # $(Pipeline.Workspace)/s/deps is part of the hipSPARSELt repo
# NOTE: content between `---` is for transition support between old/new build systems - script: mkdir $(Pipeline.Workspace)/deps
# and should be removed once transition is complete. displayName: Create temp folder for external dependencies
# ----------------------------- # hipSPARSELt already has a CMake script for external deps, so we can just run that
# Build and install gtest and lapack # https://github.com/ROCm/hipSPARSELt/blob/develop/deps/CMakeLists.txt
# $(Pipeline.Workspace)/deps is a temporary folder for the build process - script: cmake $(Pipeline.Workspace)/s/deps
# $(Pipeline.Workspace)/s/deps is part of the hipSPARSELt repo displayName: Configure hipSPARSELt external dependencies
- script: mkdir -p $(Pipeline.Workspace)/deps workingDirectory: $(Pipeline.Workspace)/deps
displayName: Create temp folder for external dependencies - script: make
# hipSPARSELt already has a CMake script for external deps, so we can just run that displayName: Build hipSPARSELt external dependencies
# https://github.com/ROCm/hipSPARSELt/blob/develop/deps/CMakeLists.txt workingDirectory: $(Pipeline.Workspace)/deps
- ${{ if ne(parameters.sparseCheckoutDir, '') }}: - script: sudo make install
script: cmake $(Pipeline.Workspace)/s/projects/hipsparselt/deps displayName: Install hipSPARSELt external dependencies
${{ else }}: workingDirectory: $(Pipeline.Workspace)/deps
script: cmake $(Pipeline.Workspace)/s/deps - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
displayName: Configure hipSPARSELt external dependencies parameters:
workingDirectory: $(Pipeline.Workspace)/deps extraBuildFlags: >-
- script: make -DCMAKE_BUILD_TYPE=Release
displayName: Build hipSPARSELt external dependencies -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
workingDirectory: $(Pipeline.Workspace)/deps -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
- script: sudo make install -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
displayName: Install hipSPARSELt external dependencies -DTensile_LOGIC=
workingDirectory: $(Pipeline.Workspace)/deps -DTensile_CPU_THREADS=
# ----------------------------- -DTensile_CODE_OBJECT_VERSION=default
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DTensile_LIBRARY_FORMAT=msgpack
parameters: -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm"
os: ${{ job.os }} -DROCM_PATH=$(Agent.BuildDirectory)/rocm
# NOTE: the following options are old build only -DBUILD_CLIENTS_TESTS=ON
# and can be removed after full transition to new build -GNinja
# -DAMDGPU_TARGETS=${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
# -DCMAKE_Fortran_COMPILER=f95 parameters:
# -DTensile_LOGIC= gpuTarget: $(JOB_GPU_TARGET)
# -DTensile_CPU_THREADS=
# -DTensile_LIBRARY_FORMAT=msgpack
# -DROCM_PATH=$(Agent.BuildDirectory)/rocm
# -DBUILD_CLIENTS_TESTS=ON
# -DBUILD_USE_LOCAL_TENSILE=OFF
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm"
-DGPU_TARGETS=${{ job.target }}
-DAMDGPU_TARGETS=${{ job.target }}
-DCMAKE_Fortran_COMPILER=f95
-DTensile_LOGIC=
-DTensile_CPU_THREADS=
-DTensile_LIBRARY_FORMAT=msgpack
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DBUILD_CLIENTS_TESTS=ON
-DBUILD_USE_LOCAL_TENSILE=OFF
-DHIPSPARSELT_ENABLE_FETCH=ON
-GNinja
${{ if ne(parameters.sparseCheckoutDir, '') }}:
cmakeSourceDir: $(Build.SourcesDirectory)/projects/hipsparselt
cmakeBuildDir: $(Build.SourcesDirectory)/projects/hipsparselt
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
gpuTarget: ${{ job.target }}
extraCopyDirectories:
- deps
extraPaths: /home/user/workspace/rocm/llvm/bin:/home/user/workspace/rocm/bin
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- TENSILE_ROCM_ASSEMBLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang
- CMAKE_CXX_COMPILER:::/home/user/workspace/rocm/llvm/bin/hipcc
- TENSILE_ROCM_OFFLOAD_BUNDLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang-offload-bundler
installLatestCMake: true
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hipSPARSELt_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: hipSPARSELt
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
timeoutInMinutes: 120 variables:
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} - group: common
condition: - template: /.azuredevops/variables-global.yml
and(succeeded(), pool: $(JOB_TEST_POOL)
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), workspace:
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), clean: all
eq(${{ parameters.aggregatePipeline }}, False) strategy:
) matrix:
variables: gfx942:
- group: common JOB_GPU_TARGET: gfx942
- template: /.azuredevops/variables-global.yml JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
pool: ${{ job.target }}_test_pool steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- checkout: none - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} gpuTarget: $(JOB_GPU_TARGET)
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
preTargetFilter: ${{ parameters.componentName }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} componentName: hipSPARSELt
os: ${{ job.os }} testDir: '$(Agent.BuildDirectory)/rocm/bin'
${{ if parameters.triggerDownstreamJobs }}: testExecutable: './hipsparselt-test'
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes --gtest_filter=*pre_checkin*'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
testDir: '$(Agent.BuildDirectory)/rocm/bin'
testExecutable: './hipsparselt-test'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes --gtest_filter=*pre_checkin*'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: hipTensor
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -54,113 +30,90 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipTensor
- job: ${{ parameters.componentName }}_build_${{ job.target }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }}
pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace:
workspace: clean: all
clean: all strategy:
steps: matrix:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml gfx942:
parameters: JOB_GPU_TARGET: gfx942
aptPackages: ${{ parameters.aptPackages }} steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
dependencyList: ${{ parameters.rocmDependencies }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }} gpuTarget: $(JOB_GPU_TARGET)
${{ if parameters.triggerDownstreamJobs }}: # CI case: download latest default branch build
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml dependencySource: staging
parameters: # manual build case: triggered by ROCm/ROCm repo
extraBuildFlags: >- ${{ elseif ne(parameters.checkoutRef, '') }}:
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm dependencySource: tag-builds
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang parameters:
-DROCM_PATH=$(Agent.BuildDirectory)/rocm extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm
-DHIPTENSOR_BUILD_TESTS=ON -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DAMDGPU_TARGETS=${{ job.target }} -DROCM_PATH=$(Agent.BuildDirectory)/rocm
-GNinja -DCMAKE_BUILD_TYPE=Release
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DHIPTENSOR_BUILD_TESTS=ON
parameters: -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
componentName: ${{ parameters.componentName }} multithreadFlag: -- -j32
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml gpuTarget: $(JOB_GPU_TARGET)
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: hipTensor_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: timeoutInMinutes: 90
- job: ${{ parameters.componentName }}_test_${{ job.target }} dependsOn: hipTensor
timeoutInMinutes: 90 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmTestDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
gpuTarget: ${{ job.target }} parameters:
${{ if parameters.triggerDownstreamJobs }}: dependencyList: ${{ parameters.rocmTestDependencies }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
componentName: ${{ parameters.componentName }} dependencySource: tag-builds
testDir: '$(Agent.BuildDirectory)/rocm/bin/hiptensor' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
testParameters: '-E ".*-extended" --extra-verbose --output-on-failure --force-new-ctest-process --output-junit test_output.xml' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml parameters:
parameters: componentName: hipTensor
aptPackages: ${{ parameters.aptPackages }} testDir: '$(Agent.BuildDirectory)/rocm/bin/hiptensor'
environment: test testParameters: '-E ".*-extended" -VV --output-on-failure --force-new-ctest-process --output-junit test_output.xml'
gpuTarget: ${{ job.target }}

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -44,123 +39,108 @@ parameters:
- rocSPARSE - rocSPARSE
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: hipfort
- job: hipfort_build_${{ job.target }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }}
pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace:
workspace: clean: all
clean: all strategy:
steps: matrix:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml gfx942:
parameters: JOB_GPU_TARGET: gfx942
aptPackages: ${{ parameters.aptPackages }} steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-latest.yml
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} checkoutRepo: ${{ parameters.checkoutRepo }}
dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
gpuTarget: ${{ job.target }} parameters:
aggregatePipeline: ${{ parameters.aggregatePipeline }} dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
extraBuildFlags: >- ${{ if eq(parameters.checkoutRef, '') }}:
-DROCM_PATH=$(Agent.BuildDirectory)/rocm dependencySource: staging
-DCMAKE_BUILD_TYPE=Release # manual build case: triggered by ROCm/ROCm repo
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm ${{ elseif ne(parameters.checkoutRef, '') }}:
-DHIPFORT_INSTALL_DIR=$(Build.BinariesDirectory) dependencySource: tag-builds
-DHIPFORT_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/flang - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_Fortran_FLAGS="-Mfree -fPIC" parameters:
-DCMAKE_Fortran_FLAGS_DEBUG="" extraBuildFlags: >-
-DHIPFORT_COMPILER_FLAGS="-cpp" -DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DHIPFORT_AR=$(Agent.BuildDirectory)/rocm/llvm/bin/llvm-ar -DCMAKE_BUILD_TYPE=Release
-DHIPFORT_RANLIB=$(Agent.BuildDirectory)/rocm/llvm/bin/llvm-ranlib -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/llvm
-DAMDGPU_TARGETS=${{ job.target }} -DHIPFORT_INSTALL_DIR=$(Build.BinariesDirectory)
-DBUILD_TESTING=ON -DHIPFORT_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/flang
-GNinja -DCMAKE_Fortran_FLAGS="-Mfree -fPIC"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DCMAKE_Fortran_FLAGS_DEBUG=""
parameters: -DHIPFORT_COMPILER_FLAGS="-cpp"
gpuTarget: ${{ job.target }} -DHIPFORT_AR=$(Agent.BuildDirectory)/rocm/llvm/bin/llvm-ar
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml -DHIPFORT_RANLIB=$(Agent.BuildDirectory)/rocm/llvm/bin/llvm-ranlib
parameters: -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} -DBUILD_TESTING=ON
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }}
installLatestCMake: true
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: hipfort_testing
- job: hipfort_test_${{ job.target }} dependsOn: hipfort
dependsOn: hipfort_build_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
checkoutRepo: ${{ parameters.checkoutRepo }} gpuTarget: $(JOB_GPU_TARGET)
- task: Bash@3 ${{ if eq(parameters.checkoutRef, '') }}:
displayName: 'ROCm symbolic link' dependencySource: staging
inputs: ${{ elseif ne(parameters.checkoutRef, '') }}:
targetType: inline dependencySource: tag-builds
script: | - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
# Assuming that /opt is no longer persistent across runs, test environments are fully ephemeral parameters:
sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm checkoutRepo: ${{ parameters.checkoutRepo }}
workingDirectory: $(Build.SourcesDirectory) - task: Bash@3
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml displayName: 'ROCm symbolic link'
- task: Bash@3 inputs:
displayName: 'Test hipfort' targetType: inline
inputs: script: |
targetType: inline sudo rm -rf /opt/rocm
script: PATH=$(Agent.BuildDirectory)/rocm/bin:$PATH make run_all sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
workingDirectory: $(Build.SourcesDirectory)/test workingDirectory: $(Build.SourcesDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
parameters: - task: Bash@3
aptPackages: ${{ parameters.aptPackages }} displayName: 'Test hipfort'
environment: test inputs:
gpuTarget: ${{ job.target }} targetType: inline
optSymLink: true script: PATH=$(Agent.BuildDirectory)/rocm/bin:$PATH make run_all
workingDirectory: $(Build.SourcesDirectory)/test

View File

@@ -5,196 +5,138 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- python3-pip
- libnuma-dev - libnuma-dev
- ninja-build - ninja-build
- pkg-config
- python-is-python3 - python-is-python3
- python3-pip
- zlib1g-dev - zlib1g-dev
- pkg-config
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- rocm-cmake - rocm-cmake
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
# - { os: ubuntu2404, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: llvm_project
- job: llvm_project_${{ job.os }} variables:
pool: - group: common
${{ if eq(job.os, 'ubuntu2404') }}: - template: /.azuredevops/variables-global.yml
name: 'rocm-ci_high_build_pool_2404' #temporarily using 'high' pool while 'ultra' is down - name: HIP_DEVICE_LIB_PATH
${{ else }}: value: '$(Build.BinariesDirectory)/amdgcn/bitcode'
name: 'rocm-ci_ultra_build_pool' pool: ${{ variables.MEDIUM_BUILD_POOL }}
${{ if eq(job.os, 'almalinux8') }}: workspace:
container: clean: all
image: rocmexternalcicd.azurecr.io/manylinux228:latest steps:
endpoint: ContainerService3 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
variables: parameters:
- group: common aptPackages: ${{ parameters.aptPackages }}
- template: /.azuredevops/variables-global.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- name: HIP_DEVICE_LIB_PATH - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
value: '$(Build.BinariesDirectory)/amdgcn/bitcode' parameters:
- name: HIP_PATH checkoutRepo: ${{ parameters.checkoutRepo }}
value: '$(Agent.BuildDirectory)/rocm' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
workspace: parameters:
clean: all dependencyList: ${{ parameters.rocmDependencies }}
steps: skipLlvmSymlink: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml # CI case: download latest default branch build
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
aptPackages: ${{ parameters.aptPackages }} dependencySource: staging
packageManager: ${{ job.packageManager }} # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml componentName: rocm-llvm
parameters: extraBuildFlags: >-
checkoutRef: ${{ parameters.checkoutRef }} -DCMAKE_PREFIX_PATH="$(Build.BinariesDirectory)/llvm;$(Build.BinariesDirectory)"
dependencyList: ${{ parameters.rocmDependencies }} -DCMAKE_BUILD_TYPE=Release
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DLLVM_ENABLE_PROJECTS=clang;lld;clang-tools-extra;mlir
os: ${{ job.os }} -DLLVM_ENABLE_RUNTIMES=compiler-rt;libunwind;libcxx;libcxxabi
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DCLANG_ENABLE_AMDCLANG=ON
parameters: -DLLVM_TARGETS_TO_BUILD=AMDGPU;X86
componentName: rocm-llvm -DLIBCXX_ENABLE_SHARED=OFF
os: ${{ job.os }} -DLIBCXX_ENABLE_STATIC=ON
useAmdclang: false -DLIBCXX_INSTALL_LIBRARY=OFF
extraBuildFlags: >- -DLIBCXX_INSTALL_HEADERS=OFF
-DCMAKE_PREFIX_PATH="$(Build.BinariesDirectory)/llvm;$(Build.BinariesDirectory)" -DLIBCXXABI_ENABLE_SHARED=OFF
-DCMAKE_BUILD_TYPE=Release -DLIBCXXABI_ENABLE_STATIC=ON
-DLLVM_ENABLE_PROJECTS=clang;lld;clang-tools-extra;mlir;flang -DLIBCXXABI_INSTALL_STATIC_LIBRARY=OFF
-DLLVM_ENABLE_RUNTIMES=compiler-rt;libunwind;libcxx;libcxxabi -DLLVM_BUILD_DOCS=OFF
-DCLANG_ENABLE_AMDCLANG=ON -DLLVM_ENABLE_SPHINX=OFF
-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86 -DLLVM_ENABLE_ASSERTIONS=OFF
-DLIBCXX_ENABLE_SHARED=OFF -DLLVM_ENABLE_Z3_SOLVER=OFF
-DLIBCXX_ENABLE_STATIC=ON -DLLVM_ENABLE_ZLIB=ON
-DLIBCXX_INSTALL_LIBRARY=OFF -DCLANG_DEFAULT_LINKER=lld
-DLIBCXX_INSTALL_HEADERS=OFF -DCLANG_DEFAULT_RTLIB=compiler-rt
-DLIBCXXABI_ENABLE_SHARED=OFF -DCLANG_DEFAULT_UNWINDLIB=libgcc
-DLIBCXXABI_ENABLE_STATIC=ON -DSANITIZER_AMDGPU=OFF
-DLIBCXXABI_INSTALL_STATIC_LIBRARY=OFF -DPACKAGE_VENDOR=AMD
-DLLVM_BUILD_DOCS=OFF -DCLANG_LINK_FLANG_LEGACY=ON
-DLLVM_ENABLE_SPHINX=OFF -DCMAKE_CXX_STANDARD=17
-DLLVM_ENABLE_ASSERTIONS=OFF -DROCM_LLVM_BACKWARD_COMPAT_LINK=$(Build.BinariesDirectory)/llvm
-DLLVM_ENABLE_Z3_SOLVER=OFF -DROCM_LLVM_BACKWARD_COMPAT_LINK_TARGET=./lib/llvm
-DLLVM_ENABLE_ZLIB=ON -GNinja
-DCLANG_DEFAULT_LINKER=lld cmakeBuildDir: 'llvm/build'
-DCLANG_DEFAULT_RTLIB=compiler-rt installDir: '$(Build.BinariesDirectory)/llvm'
-DCLANG_DEFAULT_UNWINDLIB=libgcc # use llvm-lit to run unit tests for llvm, clang, and lld
-DSANITIZER_AMDGPU=OFF - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
-DPACKAGE_VENDOR=AMD parameters:
-DCLANG_LINK_FLANG_LEGACY=ON componentName: check-llvm
-DCMAKE_CXX_STANDARD=17 testDir: 'llvm/build'
-DROCM_LLVM_BACKWARD_COMPAT_LINK=$(Build.BinariesDirectory)/llvm testExecutable: './bin/llvm-lit'
-DROCM_LLVM_BACKWARD_COMPAT_LINK_TARGET=./lib/llvm testParameters: '-q --xunit-xml-output=llvm_test_output.xml ./test'
-GNinja testOutputFile: llvm_test_output.xml
cmakeBuildDir: '$(Build.SourcesDirectory)/llvm/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
cmakeSourceDir: '$(Build.SourcesDirectory)/llvm' parameters:
installDir: '$(Build.BinariesDirectory)/llvm' componentName: check-clang
# use llvm-lit to run unit tests for llvm, clang, and lld testDir: 'llvm/build'
- task: Bash@3 testExecutable: './bin/llvm-lit'
displayName: 'Copy llvm-lit to install directory' testParameters: '-q --xunit-xml-output=clang_test_output.xml ./tools/clang/test'
inputs: testOutputFile: clang_test_output.xml
targetType: inline - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
script: | parameters:
cp $(Build.SourcesDirectory)/llvm/build/bin/llvm-lit $(Build.BinariesDirectory)/llvm/bin/ componentName: check-lld
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml testDir: 'llvm/build'
parameters: testExecutable: './bin/llvm-lit'
componentName: check-llvm testParameters: '-q --xunit-xml-output=lld_test_output.xml ./tools/lld/test'
testDir: 'llvm/build' testOutputFile: lld_test_output.xml
testExecutable: './bin/llvm-lit' - task: CopyFiles@2
testParameters: '-q --xunit-xml-output=llvm_test_output.xml --filter-out="live-debug-values-spill-tracking" ./test' displayName: Copy FileCheck for Publishing
testOutputFile: llvm_test_output.xml inputs:
os: ${{ job.os }} CleanTargetFolder: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml SourceFolder: llvm/build/bin
parameters: Contents: FileCheck
componentName: check-clang TargetFolder: $(Build.BinariesDirectory)/llvm/bin
testDir: 'llvm/build' retryCount: 3
testExecutable: './bin/llvm-lit' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
testParameters: '-q --xunit-xml-output=clang_test_output.xml ./tools/clang/test' parameters:
testOutputFile: clang_test_output.xml componentName: device-libs
os: ${{ job.os }} extraBuildFlags: >-
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build"
parameters: -DCMAKE_BUILD_TYPE=Release
componentName: check-lld cmakeBuildDir: 'amd/device-libs/build'
testDir: 'llvm/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
testExecutable: './bin/llvm-lit' parameters:
testParameters: '-q --xunit-xml-output=lld_test_output.xml ./tools/lld/test' componentName: comgr
testOutputFile: lld_test_output.xml extraBuildFlags: >-
os: ${{ job.os }} -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build;$(Build.SourcesDirectory)/amd/device-libs/build"
- task: CopyFiles@2 -DCMAKE_BUILD_TYPE=Release
displayName: Copy FileCheck for Publishing cmakeBuildDir: 'amd/comgr/build'
inputs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
CleanTargetFolder: false parameters:
SourceFolder: llvm/build/bin componentName: comgr
Contents: FileCheck testParameters: '--output-on-failure --force-new-ctest-process --output-junit comgr_test_output.xml'
TargetFolder: $(Build.BinariesDirectory)/llvm/bin testDir: 'amd/comgr/build'
retryCount: 3 testOutputFile: comgr_test_output.xml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
componentName: device-libs componentName: hipcc
os: ${{ job.os }} extraBuildFlags: >-
useAmdclang: false -DCMAKE_BUILD_TYPE=Release
extraBuildFlags: >- -DHIPCC_BACKWARD_COMPATIBILITY=OFF
-DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build" cmakeBuildDir: 'amd/hipcc/build'
-DCMAKE_BUILD_TYPE=Release - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
cmakeBuildDir: '$(Build.SourcesDirectory)/amd/device-libs/build'
cmakeSourceDir: '$(Build.SourcesDirectory)/amd/device-libs'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: comgr
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build;$(Build.SourcesDirectory)/amd/device-libs/build"
-DCOMGR_DISABLE_SPIRV=1
-DCMAKE_BUILD_TYPE=Release
cmakeBuildDir: '$(Build.SourcesDirectory)/amd/comgr/build'
cmakeSourceDir: '$(Build.SourcesDirectory)/amd/comgr'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: comgr
testParameters: '--output-on-failure --force-new-ctest-process --output-junit comgr_test_output.xml'
testDir: 'amd/comgr/build'
testOutputFile: comgr_test_output.xml
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: hipcc
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-DHIPCC_BACKWARD_COMPATIBILITY=OFF
cmakeBuildDir: '$(Build.SourcesDirectory)/amd/hipcc/build'
cmakeSourceDir: '$(Build.SourcesDirectory)/amd/hipcc'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: combined
extraEnvVars:
- HIP_DEVICE_LIB_PATH:::/home/user/workspace/bin/amdgcn/bitcode
- HIP_PATH:::/home/user/workspace/rocm

View File

@@ -0,0 +1,166 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: aptPackages
type: object
default:
- cmake
- python3-pip
- name: pipModules
type: object
default:
- astunparse==1.6.2
- colorlover
- dash>=1.12.0
- matplotlib
- numpy>=1.17.5
- pandas>=1.4.3
- pymongo
- pyyaml
- tabulate
- tqdm
- dash-svg
- dash-bootstrap-components
- kaleido
- setuptools
- plotille
- mock
- pytest
- pytest-cov
- pytest-xdist
- name: rocmDependencies
type: object
default:
- clr
- llvm-project
- rocm-cmake
- rocm-core
- rocminfo
- ROCR-Runtime
- rocprofiler
- rocprofiler-register
- roctracer
jobs:
- job: omniperf
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: ${{ variables.BASE_BUILD_POOL }}
workspace:
clean: all
strategy:
matrix:
gfx942:
JOB_GPU_TARGET: gfx942
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters:
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: $(JOB_GPU_TARGET)
# CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
gpuTarget: $(JOB_GPU_TARGET)
- job: omniperf_testing
dependsOn: omniperf
condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: PYTHON_VERSION
value: 3.10
pool: $(JOB_TEST_POOL)
workspace:
clean: all
strategy:
matrix:
gfx942:
JOB_GPU_TARGET: gfx942
JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters:
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: $(JOB_GPU_TARGET)
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- task: Bash@3
displayName: Add ROCm binaries to PATH
inputs:
targetType: inline
script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
- task: Bash@3
displayName: Add ROCm compilers to PATH
inputs:
targetType: inline
script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
extraBuildFlags: >-
-DCMAKE_HIP_ARCHITECTURES=$(JOB_GPU_TARGET)
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_BUILD_TYPE=Release
-DENABLE_TESTS=ON
-DINSTALL_TESTS=ON
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: omniperf
testDir: $(Build.BinariesDirectory)/libexec/omniperf
testExecutable: export OMNIPERF_ARCH_OVERRIDE="MI300X"; ctest
- task: Bash@3
displayName: Remove ROCm binaries from PATH
inputs:
targetType: inline
script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/bin;;' -e 's;^/;;' -e 's;/$;;')"
- task: Bash@3
displayName: Remove ROCm compilers from PATH
inputs:
targetType: inline
script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/llvm/bin;;' -e 's;^/;;' -e 's;/$;;')"

View File

@@ -0,0 +1,140 @@
# largely referenced from: https://github.com/ROCm/omnitrace/blob/main/.github/workflows/ubuntu-jammy.yml
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: aptPackages
type: object
default:
- autoconf
- autotools-dev
- bison
- build-essential
- bzip2
- clang
- cmake
- environment-modules
- g++-12
- libdrm-dev
- libfabric-dev
- libiberty-dev
- libpapi-dev
- libpfm4-dev
- libtool
- libopenmpi-dev
- m4
- openmpi-bin
- software-properties-common
- python3-pip
- texinfo
- zlib1g-dev
- name: pipModules
type: object
default:
- numpy
- perfetto
- dataclasses
- name: rocmDependencies
type: object
default:
- aomp
- clr
- llvm-project
- rccl
- rocm-core
- rocm_smi_lib
- rocminfo
- ROCR-Runtime
- rocprofiler
- rocprofiler-register
- roctracer
jobs:
- job: omnitrace
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool: ${{ variables.MEDIUM_BUILD_POOL }}
workspace:
clean: all
strategy:
matrix:
gfx942:
JOB_GPU_TARGET: gfx942
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: $(JOB_GPU_TARGET)
# CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- task: Bash@3
displayName: ROCm symbolic link
inputs:
targetType: inline
script: |
sudo rm -rf /opt/rocm
sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
- task: Bash@3
displayName: Add ROCm binaries to PATH
inputs:
targetType: inline
script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
- task: Bash@3
displayName: Add ROCm compilers to PATH
inputs:
targetType: inline
script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
# build flags reference: https://rocm.docs.amd.com/projects/omnitrace/en/latest/install/install.html
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DOMNITRACE_BUILD_TESTING=ON
-DOMNITRACE_BUILD_DYNINST=ON
-DOMNITRACE_BUILD_LIBUNWIND=ON
-DDYNINST_BUILD_TBB=ON
-DDYNINST_BUILD_ELFUTILS=ON
-DDYNINST_BUILD_LIBIBERTY=ON
-DDYNINST_BUILD_BOOST=ON
-DOMNITRACE_USE_PAPI=ON
-DOMNITRACE_USE_MPI=ON
-DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
multithreadFlag: -- -j32
- task: Bash@3
displayName: Set up omnitrace env
inputs:
targetType: inline
script: source share/omnitrace/setup-env.sh
workingDirectory: build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: omnitrace
- task: Bash@3
displayName: Remove ROCm binaries from PATH
inputs:
targetType: inline
script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/bin;;' -e 's;^/;;' -e 's;/$;;')"
- task: Bash@3
displayName: Remove ROCm compilers from PATH
inputs:
targetType: inline
script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/llvm/bin;;' -e 's;^/;;' -e 's;/$;;')"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
gpuTarget: $(JOB_GPU_TARGET)

View File

@@ -1,308 +0,0 @@
parameters:
- name: componentName
type: string
default: origami
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- wget
- python3
- python3-dev
- python3-pip
- python3-venv
- libgtest-dev
- libboost-filesystem-dev
- libboost-program-options-dev
- name: pipModules
type: object
default:
- nanobind>=2.0.0
- pytest
- pytest-cov
- name: rocmDependencies
type: object
default:
- clr
- llvm-project
- rocm-cmake
- rocminfo
- ROCR-Runtime
- rocprofiler-register
- name: rocmTestDependencies
type: object
default:
- clr
- llvm-project
- rocm-cmake
- rocminfo
- ROCR-Runtime
- rocprofiler-register
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
# - { os: ubuntu2204, packageManager: apt, target: gfx1100 }
# - { os: ubuntu2204, packageManager: apt, target: gfx1151 }
# - { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- name: downstreamComponentMatrix
type: object
default:
- hipBLASLt:
name: hipBLASLt
sparseCheckoutDir: projects/hipblaslt
skipUnifiedBuild: 'false'
buildDependsOn:
- origami_build
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: origami_build_${{ job.os }}
${{ if parameters.buildDependsOn }}:
dependsOn:
- ${{ each build in parameters.buildDependsOn }}:
- ${{ build }}_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: ROCM_PATH
value: $(Agent.BuildDirectory)/rocm
pool:
vmImage: ${{ variables.BASE_BUILD_POOL }}
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml
parameters:
dependencyList:
- gtest
- ${{ if ne(job.os, 'almalinux8') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml
parameters:
dependencyList:
- catch2
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
os: ${{ job.os }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DORIGAMI_BUILD_SHARED_LIBS=ON
-DORIGAMI_ENABLE_PYTHON=ON
-DORIGAMI_BUILD_TESTING=ON
-DORIGAMI_ENABLE_FETCH=ON
-GNinja
- ${{ if ne(job.os, 'almalinux8') }}:
- task: PublishPipelineArtifact@1
displayName: 'Publish Build Directory Artifact'
inputs:
targetPath: '$(Agent.BuildDirectory)/s/build'
artifact: '${{ parameters.componentName }}_${{ job.os }}_build_dir'
publishLocation: 'pipeline'
- task: PublishPipelineArtifact@1
displayName: 'Publish Python Source Artifact'
inputs:
targetPath: '$(Agent.BuildDirectory)/s/python'
artifact: '${{ parameters.componentName }}_${{ job.os }}_python_src'
publishLocation: 'pipeline'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
componentName: ${{ parameters.componentName }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(parameters.unifiedBuild, False) }}:
- ${{ each job in parameters.jobMatrix.testJobs }}:
- job: origami_test_${{ job.os }}_${{ job.target }}
timeoutInMinutes: 120
dependsOn: origami_build_${{ job.os }}
condition:
and(succeeded(),
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')),
eq(${{ parameters.aggregatePipeline }}, False)
)
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml
parameters:
dependencyList:
- gtest
- ${{ if ne(job.os, 'almalinux8') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml
parameters:
dependencyList:
- catch2
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters:
preTargetFilter: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmTestDependencies }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- task: CMake@1
displayName: 'Origami Test CMake Configuration'
inputs:
cmakeArgs: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DORIGAMI_BUILD_SHARED_LIBS=ON
-DORIGAMI_ENABLE_PYTHON=ON
-DORIGAMI_BUILD_TESTING=ON
-GNinja
$(Agent.BuildDirectory)/s
- task: Bash@3
displayName: 'Build Origami Tests and Python Bindings'
inputs:
targetType: inline
workingDirectory: build
script: |
cmake --build . --target origami-tests origami_python -- -j$(nproc)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
# Run tests using CTest (discovers and runs both C++ and Python tests)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
testDir: 'build'
testParameters: '--output-on-failure --force-new-ctest-process --output-junit test_output.xml'
# Test pip install workflow
# - task: Bash@3
# displayName: 'Test Pip Install'
# inputs:
# targetType: inline
# script: |
# set -e
# echo "==================================================================="
# echo "Testing pip install workflow (pip install -e .)"
# echo "==================================================================="
# # Set environment variables for pip install CMake build
# export ROCM_PATH=$(Agent.BuildDirectory)/rocm
# export CMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm:$(Agent.BuildDirectory)/vendor
# export CMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
# echo "ROCM_PATH: $ROCM_PATH"
# echo "CMAKE_PREFIX_PATH: $CMAKE_PREFIX_PATH"
# echo "CMAKE_CXX_COMPILER: $CMAKE_CXX_COMPILER"
# echo ""
# # Install from source directory
# cd "$(Agent.BuildDirectory)/s/python"
# pip install -e .
# # Verify import works
# echo ""
# echo "Verifying origami can be imported..."
# python3 -c "import origami; print('✓ Successfully imported origami')"
# # Run pytest on installed package
# echo ""
# echo "Running pytest tests..."
# python3 -m pytest tests/ -v -m "not slow" --tb=short
# echo ""
# echo "==================================================================="
# echo "Pip install test completed successfully"
# echo "==================================================================="
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,67 +1,36 @@
parameters: parameters:
- name: componentName
type: string
default: rccl
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
- name: systemsRepo
type: string
default: systems_repo
- name: systemsSparseCheckoutDir
type: string
default: 'projects/rocprofiler-sdk'
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake
- git
- libboost-program-options-dev
- libdrm-dev
- libfftw3-dev
- libnuma-dev
- libstdc++-12-dev
- ninja-build
- python3-pip - python3-pip
- cmake
- libboost-program-options-dev
- googletest
- libfftw3-dev
- git
- ninja-build
- libstdc++-12-dev
- libnuma-dev
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- rocm-cmake
- llvm-project
- ROCR-Runtime
- clr
- rocminfo
- rocm_smi_lib
- rocprofiler-register
- rocm-core
- HIPIFY
- aomp - aomp
- aomp-extras - aomp-extras
- clr
- HIPIFY
- llvm-project
- rocm-cmake
- rocm-core
- rocm_smi_lib
- rocminfo
- rocprofiler-register
- ROCR-Runtime
- roctracer
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -76,167 +45,99 @@ parameters:
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- rocprofiler-sdk:
name: rocprofiler-sdk
sparseCheckoutDir: ''
skipUnifiedBuild: 'false'
buildDependsOn:
- rccl_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rccl
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
timeoutInMinutes: 120 pool: ${{ variables.MEDIUM_BUILD_POOL }}
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
- name: HIP_ROCCLR_HOME matrix:
value: $(Build.BinariesDirectory)/rocm gfx942:
pool: ${{ variables.MEDIUM_BUILD_POOL }} JOB_GPU_TARGET: gfx942
${{ if eq(job.os, 'almalinux8') }}: steps:
container: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
image: rocmexternalcicd.azurecr.io/manylinux228:latest parameters:
endpoint: ContainerService3 aptPackages: ${{ parameters.aptPackages }}
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-latest.yml
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
aptPackages: ${{ parameters.aptPackages }} submoduleBehaviour: recursive
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ if eq(parameters.checkoutRef, '') }}:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencySource: staging
submoduleBehaviour: recursive # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
dependencyList: - script: chmod +x $(Agent.BuildDirectory)/rocm/bin/hipify-perl
- gtest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: extraBuildFlags: >-
checkoutRef: ${{ parameters.checkoutRef }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
dependencyList: ${{ parameters.rocmDependencies }} -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
os: ${{ job.os }} -DHALF_INCLUDE_DIR=$(Agent.BuildDirectory)/rocm/include
gpuTarget: ${{ job.target }} -DCMAKE_BUILD_TYPE=Release
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DROCM_PATH=$(Agent.BuildDirectory)/rocm
${{ if parameters.triggerDownstreamJobs }}: -DBUILD_TESTS=ON
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake/
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
parameters: -GNinja
os: ${{ job.os }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
extraBuildFlags: >- parameters:
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc gpuTarget: $(JOB_GPU_TARGET)
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
-DCMAKE_BUILD_TYPE=Release
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DBUILD_TESTS=ON
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake;$(Agent.BuildDirectory)/rocm/libexec/hipify
-DGPU_TARGETS=${{ job.target }}
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
installLatestCMake: true
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rccl_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: timeoutInMinutes: 120
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} dependsOn: rccl
timeoutInMinutes: 120 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
preTargetFilter: ${{ parameters.componentName }} parameters:
os: ${{ job.os }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRef: ${{ parameters.checkoutRef }} parameters:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencyList: ${{ parameters.rocmTestDependencies }}
os: ${{ job.os }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: staging
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
componentName: ${{ parameters.componentName }} parameters:
os: ${{ job.os }} componentName: rccl
testDir: '$(Agent.BuildDirectory)/rocm/bin' testDir: '$(Agent.BuildDirectory)/rocm/bin'
testExecutable: './rccl-UnitTests' testExecutable: './rccl-UnitTests'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.systemsRepo }}
sparseCheckoutDir: ${{ parameters.systemsSparseCheckoutDir }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}
${{ if parameters.unifiedBuild }}:
buildDependsOn: ${{ component.unifiedBuild.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ component.unifiedBuild.downstreamAggregateNames }}
${{ else }}:
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: rdc
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -43,27 +19,20 @@ parameters:
- libtool - libtool
- pkg-config - pkg-config
- libdrm-dev - libdrm-dev
- libnuma-dev
- libyaml-cpp-dev - libyaml-cpp-dev
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- amdsmi - amdsmi
- clr - clr
- hipBLAS-common
- hipBLASLt
- hipRAND
- llvm-project - llvm-project
- rocBLAS - rocBLAS
- rocm-cmake - rocm-cmake
- rocm-core
- rocminfo - rocminfo
- rocm_smi_lib - rocm_smi_lib
- ROCmValidationSuite - ROCmValidationSuite
- rocprofiler - rocprofiler
- rocprofiler-register - rocprofiler-register
- rocprofiler-sdk
- rocRAND
- ROCR-Runtime - ROCR-Runtime
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
@@ -79,157 +48,121 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rdc
- job: ${{ parameters.componentName }}_build_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
cmakeVersion: '3.25.0' checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
checkoutRepo: ${{ parameters.checkoutRepo }} gpuTarget: $(JOB_GPU_TARGET)
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRef: ${{ parameters.checkoutRef }} # manual build case: triggered by ROCm/ROCm repo
dependencyList: ${{ parameters.rocmDependencies }} ${{ elseif ne(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: tag-builds
aggregatePipeline: ${{ parameters.aggregatePipeline }} # Build grpc
${{ if parameters.triggerDownstreamJobs }}: - task: Bash@3
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} displayName: 'git clone grpc'
# Build grpc inputs:
- task: Bash@3 targetType: inline
displayName: 'git clone grpc' script: git clone -b v1.61.0 https://github.com/grpc/grpc --depth=1 --shallow-submodules --recurse-submodules
inputs: workingDirectory: $(Build.SourcesDirectory)
targetType: inline - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
script: git clone -b v1.67.1 https://github.com/grpc/grpc --depth=1 --shallow-submodules --recurse-submodules parameters:
workingDirectory: $(Build.SourcesDirectory) cmakeBuildDir: $(Build.SourcesDirectory)/grpc/build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml installDir: $(Build.SourcesDirectory)/bin
parameters: extraBuildFlags: >-
componentName: ${{ parameters.componentName }} -DgRPC_INSTALL=ON
cmakeBuildDir: $(Build.SourcesDirectory)/grpc/build -DgRPC_BUILD_TESTS=OFF
cmakeSourceDir: $(Build.SourcesDirectory)/grpc -DBUILD_SHARED_LIBS=ON
installDir: $(Build.SourcesDirectory)/bin -DCMAKE_INSTALL_LIBDIR=lib
extraBuildFlags: >- -DCMAKE_BUILD_TYPE=Release
-DgRPC_INSTALL=ON -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
-DgRPC_BUILD_TESTS=OFF -GNinja
-DBUILD_SHARED_LIBS=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_INSTALL_LIBDIR=lib parameters:
-DCMAKE_BUILD_TYPE=Release extraBuildFlags: >-
-DAMDGPU_TARGETS=${{ job.target }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-GNinja -DGRPC_ROOT="$(Build.SourcesDirectory)/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DBUILD_RVS=ON
parameters: -DBUILD_PROFILER=ON
componentName: ${{ parameters.componentName }} -DBUILD_TESTS=ON
extraBuildFlags: >- - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm parameters:
-DGRPC_ROOT="$(Build.SourcesDirectory)/bin" gpuTarget: $(JOB_GPU_TARGET)
-DBUILD_RVS=ON
-DBUILD_PROFILER=ON
-DBUILD_TESTS=ON
-DAMDGPU_TARGETS=${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rdc_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rdc
- job: ${{ parameters.componentName }}_test_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
- name: ROCM_PATH JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
value: $(Agent.BuildDirectory)/rocm steps:
- name: ROCM_DIR - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
value: $(Agent.BuildDirectory)/rocm parameters:
pool: ${{ job.target }}_test_pool aptPackages: ${{ parameters.aptPackages }}
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
steps: parameters:
- checkout: none gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} ${{ if eq(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - task: Bash@3
- task: Bash@3 displayName: Setup test environment
displayName: Setup test environment inputs:
inputs: targetType: inline
targetType: inline script: |
script: | sudo rm -rf /opt/rocm
sudo ln -s $(Agent.BuildDirectory)/rocm/bin/rdcd /usr/sbin/rdcd sudo rm -rf /usr/sbin/rdcd
echo $(Agent.BuildDirectory)/rocm/lib/rdc/grpc/lib | sudo tee /etc/ld.so.conf.d/grpc.conf sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
sudo ldconfig -v sudo ln -s $(Agent.BuildDirectory)/rocm/bin/rdcd /usr/sbin/rdcd
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml echo $(Agent.BuildDirectory)/rocm/lib/rdc/grpc/lib | sudo tee /etc/ld.so.conf.d/grpc.conf
- task: Bash@3 sudo ldconfig -v
displayName: Test rdc - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
inputs: - task: Bash@3
targetType: inline displayName: Test rdc
script: >- inputs:
$(Agent.BuildDirectory)/rocm/share/rdc/rdctst_tests/rdctst targetType: inline
--batch_mode script: >-
--start_rdcd $(Agent.BuildDirectory)/rocm/share/rdc/rdctst_tests/rdctst
--unauth_comm --batch_mode
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml --start_rdcd
parameters: --unauth_comm
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
extraPaths: /home/user/workspace/rocm/bin

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -26,8 +21,6 @@ parameters:
- libavcodec-dev - libavcodec-dev
- libavformat-dev - libavformat-dev
- libavutil-dev - libavutil-dev
- libdlpack-dev
- libsndfile1-dev
- libswscale-dev - libswscale-dev
- libturbojpeg-dev - libturbojpeg-dev
- libjpeg-turbo-official=3.0.2-20240124 - libjpeg-turbo-official=3.0.2-20240124
@@ -43,15 +36,15 @@ parameters:
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- aomp
- clr
- half
- llvm-project
- MIVisionX
- rocDecode
- rocm-cmake - rocm-cmake
- llvm-project
- ROCR-Runtime - ROCR-Runtime
- clr
- rocDecode
- half
- rpp - rpp
- MIVisionX
- aomp
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -60,208 +53,182 @@ parameters:
- half - half
- llvm-project - llvm-project
- MIVisionX - MIVisionX
- rocDecode
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- rpp - rpp
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocAL
- job: rocAL_build_${{ job.target }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool:
pool: ${{ variables.MEDIUM_BUILD_POOL }} vmImage: ${{ variables.BASE_BUILD_POOL }}
workspace: workspace:
clean: all clean: all
steps: strategy:
- task: Bash@3 matrix:
displayName: 'Register libjpeg-turbo packages' gfx942:
inputs: JOB_GPU_TARGET: gfx942
targetType: inline steps:
script: | - task: Bash@3
sudo mkdir --parents --mode=0755 /etc/apt/keyrings displayName: 'Register libjpeg-turbo packages'
wget -q -O- https://packagecloud.io/dcommander/libjpeg-turbo/gpgkey | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/libjpeg-turbo.gpg > /dev/null inputs:
echo "deb [signed-by=/etc/apt/trusted.gpg.d/libjpeg-turbo.gpg] https://packagecloud.io/dcommander/libjpeg-turbo/any/ any main" | sudo tee /etc/apt/sources.list.d/libjpeg-turbo.list targetType: inline
sudo apt update script: |
apt-cache show libjpeg-turbo-official | grep Version sudo mkdir --parents --mode=0755 /etc/apt/keyrings
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml wget -q -O- https://packagecloud.io/dcommander/libjpeg-turbo/gpgkey | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/libjpeg-turbo.gpg > /dev/null
parameters: echo "deb [signed-by=/etc/apt/trusted.gpg.d/libjpeg-turbo.gpg] https://packagecloud.io/dcommander/libjpeg-turbo/any/ any main" | sudo tee /etc/apt/sources.list.d/libjpeg-turbo.list
aptPackages: ${{ parameters.aptPackages }} sudo apt update
pipModules: ${{ parameters.pipModules }} apt-cache show libjpeg-turbo-official | grep Version
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
checkoutRepo: ${{ parameters.checkoutRepo }} pipModules: ${{ parameters.pipModules }}
- task: Bash@3 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
displayName: 'Clone PyBind11' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
inputs: parameters:
targetType: inline checkoutRepo: ${{ parameters.checkoutRepo }}
script: git clone --depth 1 -b v2.11.1 https://github.com/pybind/pybind11 - task: Bash@3
workingDirectory: '$(Build.SourcesDirectory)' displayName: 'Clone PyBind11'
- task: Bash@3 inputs:
displayName: 'Clone RapidJSON' targetType: inline
inputs: script: git clone --depth 1 -b v2.11.1 https://github.com/pybind/pybind11
targetType: inline workingDirectory: '$(Build.SourcesDirectory)'
script: git clone --depth 1 https://github.com/Tencent/rapidjson.git - task: Bash@3
workingDirectory: '$(Build.SourcesDirectory)' displayName: 'Clone RapidJSON'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml inputs:
parameters: targetType: inline
componentName: PyBind11 script: git clone --depth 1 https://github.com/Tencent/rapidjson.git
cmakeBuildDir: '$(Build.SourcesDirectory)/pybind11/build' workingDirectory: '$(Build.SourcesDirectory)'
cmakeSourceDir: '$(Build.SourcesDirectory)/pybind11' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
customInstallPath: false parameters:
installEnabled: false componentName: PyBind11
extraBuildFlags: >- cmakeBuildDir: '$(Build.SourcesDirectory)/pybind11/build'
-DDOWNLOAD_CATCH=ON customInstallPath: false
-DDOWNLOAD_EIGEN=ON installEnabled: false
-GNinja extraBuildFlags: >-
- task: Bash@3 -DDOWNLOAD_CATCH=ON
displayName: 'Install PyBind11' -DDOWNLOAD_EIGEN=ON
inputs: -GNinja
targetType: inline - task: Bash@3
script: sudo cmake --build . --target install displayName: 'Install PyBind11'
workingDirectory: '$(Build.SourcesDirectory)/pybind11/build' inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml targetType: inline
parameters: script: sudo cmake --build . --target install
componentName: RapidJSON workingDirectory: '$(Build.SourcesDirectory)/pybind11/build'
cmakeBuildDir: '$(Build.SourcesDirectory)/rapidjson/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
cmakeSourceDir: '$(Build.SourcesDirectory)/rapidjson' parameters:
customInstallPath: false componentName: RapidJSON
installEnabled: false cmakeBuildDir: '$(Build.SourcesDirectory)/rapidjson/build'
extraBuildFlags: >- customInstallPath: false
-GNinja installEnabled: false
- task: Bash@3 extraBuildFlags: >-
displayName: 'Install RapidJSON' -GNinja
inputs: - task: Bash@3
targetType: inline displayName: 'Install RapidJSON'
script: sudo cmake --build . --target install inputs:
workingDirectory: '$(Build.SourcesDirectory)/rapidjson/build' targetType: inline
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml script: sudo cmake --build . --target install
parameters: workingDirectory: '$(Build.SourcesDirectory)/rapidjson/build'
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
dependencyList: ${{ parameters.rocmDependencies }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml # CI case: download latest default branch build
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
extraBuildFlags: >- dependencySource: staging
-DROCM_PATH=$(Agent.BuildDirectory)/rocm # manual build case: triggered by ROCm/ROCm repo
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;/opt/libjpeg-turbo ${{ elseif ne(parameters.checkoutRef, '') }}:
-DCMAKE_INSTALL_PREFIX_PYTHON=$Python3_STDARCH dependencySource: tag-builds
-DCMAKE_BUILD_TYPE=Release - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DGPU_TARGETS=${{ job.target }} parameters:
-GNinja extraBuildFlags: >-
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DROCM_PATH=$(Agent.BuildDirectory)/rocm
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;/opt/libjpeg-turbo
gpuTarget: ${{ job.target }} -DCMAKE_INSTALL_PREFIX_PYTHON=$Python3_STDARCH
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml -DCMAKE_BUILD_TYPE=Release
parameters: -GNinja
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml parameters:
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml gpuTarget: $(JOB_GPU_TARGET)
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# registerJPEGPackages: true
# gpuTarget: ${{ job.target }}
# extraCopyDirectories:
# - /opt/libjpeg-turbo
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocAL_testing
- job: rocAL_test_${{ job.target }} dependsOn: rocAL
dependsOn: rocAL_build_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), - name: ROCM_PATH
eq(${{ parameters.aggregatePipeline }}, False) value: $(Agent.BuildDirectory)/rocm
) - name: CMAKE_INCLUDE_PATH
variables: value: $(Agent.BuildDirectory)/rocm/include/rocal
- group: common pool: $(JOB_TEST_POOL)
- template: /.azuredevops/variables-global.yml workspace:
- name: ROCM_PATH clean: all
value: $(Agent.BuildDirectory)/rocm strategy:
- name: CMAKE_INCLUDE_PATH matrix:
value: $(Agent.BuildDirectory)/rocm/include/rocal gfx942:
pool: JOB_GPU_TARGET: gfx942
name: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - task: Bash@3
steps: displayName: 'Register libjpeg-turbo packages'
- task: Bash@3 inputs:
displayName: 'Register libjpeg-turbo packages' targetType: inline
inputs: script: |
targetType: inline sudo mkdir --parents --mode=0755 /etc/apt/keyrings
script: | wget -q -O- https://packagecloud.io/dcommander/libjpeg-turbo/gpgkey | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/libjpeg-turbo.gpg > /dev/null
sudo mkdir --parents --mode=0755 /etc/apt/keyrings echo "deb [signed-by=/etc/apt/trusted.gpg.d/libjpeg-turbo.gpg] https://packagecloud.io/dcommander/libjpeg-turbo/any/ any main" | sudo tee /etc/apt/sources.list.d/libjpeg-turbo.list
wget -q -O- https://packagecloud.io/dcommander/libjpeg-turbo/gpgkey | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/libjpeg-turbo.gpg > /dev/null sudo apt update
echo "deb [signed-by=/etc/apt/trusted.gpg.d/libjpeg-turbo.gpg] https://packagecloud.io/dcommander/libjpeg-turbo/any/ any main" | sudo tee /etc/apt/sources.list.d/libjpeg-turbo.list apt-cache show libjpeg-turbo-official | grep Version
sudo apt update - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
apt-cache show libjpeg-turbo-official | grep Version parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmTestDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
gpuTarget: ${{ job.target }} parameters:
- task: Bash@3 dependencyList: ${{ parameters.rocmTestDependencies }}
displayName: Link libjpeg-turbo gpuTarget: $(JOB_GPU_TARGET)
inputs: ${{ if eq(parameters.checkoutRef, '') }}:
targetType: inline dependencySource: staging
script: | ${{ elseif ne(parameters.checkoutRef, '') }}:
echo /opt/libjpeg-turbo/lib64 | sudo tee /etc/ld.so.conf.d/libjpeg-turbo.conf dependencySource: tag-builds
sudo ldconfig -v - task: Bash@3
- task: Bash@3 displayName: Link libjpeg-turbo
displayName: Build rocAL tests inputs:
inputs: targetType: inline
targetType: inline script: |
script: | echo /opt/libjpeg-turbo/lib64 | sudo tee /etc/ld.so.conf.d/libjpeg-turbo.conf
mkdir rocAL-tests sudo ldconfig -v
cd rocAL-tests - task: Bash@3
cmake $(Agent.BuildDirectory)/rocm/share/rocal/test displayName: Build rocAL tests
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml targetType: inline
parameters: script: |
componentName: rocAL mkdir rocAL-tests
testDir: rocAL-tests cd rocAL-tests
- task: Bash@3 cmake $(Agent.BuildDirectory)/rocm/share/rocal/test
displayName: Clean up libjpeg-turbo - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
condition: always() - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
inputs: parameters:
targetType: inline componentName: rocAL
script: | testDir: rocAL-tests
sudo rm /etc/ld.so.conf.d/libjpeg-turbo.conf reloadAMDGPU: true
sudo ldconfig -v - task: Bash@3
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml displayName: Clean up libjpeg-turbo
parameters: inputs:
aptPackages: ${{ parameters.aptPackages }} targetType: inline
pipModules: ${{ parameters.pipModules }} script: |
registerJPEGPackages: true sudo rm /etc/ld.so.conf.d/libjpeg-turbo.conf
environment: test sudo ldconfig -v
gpuTarget: ${{ job.target }}
extraCopyDirectories:
- /opt/libjpeg-turbo
# docker image will be missing the ldconfig to libjpeg-turbo

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -20,7 +15,6 @@ parameters:
- git - git
- mpich - mpich
- ninja-build - ninja-build
- python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -51,109 +45,95 @@ parameters:
- rocSPARSE - rocSPARSE
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocALUTION
- job: rocALUTION_build_${{ job.target }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME
- name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm
value: $(Build.BinariesDirectory)/rocm pool:
pool: ${{ variables.MEDIUM_BUILD_POOL }} vmImage: ${{ variables.BASE_BUILD_POOL }}
workspace: workspace:
clean: all clean: all
steps: strategy:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml matrix:
parameters: gfx942:
aptPackages: ${{ parameters.aptPackages }} JOB_GPU_TARGET: gfx942
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters: parameters:
checkoutRepo: ${{ parameters.checkoutRepo }} aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
checkoutRef: ${{ parameters.checkoutRef }} parameters:
dependencyList: ${{ parameters.rocmDependencies }} checkoutRepo: ${{ parameters.checkoutRepo }}
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
aggregatePipeline: ${{ parameters.aggregatePipeline }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
extraBuildFlags: >- # CI case: download latest default branch build
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ ${{ if eq(parameters.checkoutRef, '') }}:
-DCMAKE_BUILD_TYPE=Release dependencySource: staging
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake/ # manual build case: triggered by ROCm/ROCm repo
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/lib/cmake/hip ${{ elseif ne(parameters.checkoutRef, '') }}:
-DAMDGPU_TARGETS=${{ job.target }} dependencySource: tag-builds
-DBUILD_CLIENTS_TESTS=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DBUILD_CLIENTS_BENCHMARKS=OFF parameters:
-DBUILD_CLIENTS_SAMPLES=OFF extraBuildFlags: >-
-GNinja -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DCMAKE_BUILD_TYPE=Release
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/share/rocm/cmake/
gpuTarget: ${{ job.target }} -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/lib/cmake/hip
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
parameters: -DBUILD_CLIENTS_TESTS=ON
gpuTarget: ${{ job.target }} -DBUILD_CLIENTS_BENCHMARKS=OFF
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml -DBUILD_CLIENTS_SAMPLES=OFF
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml -GNinja
# parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
# aptPackages: ${{ parameters.aptPackages }} parameters:
# gpuTarget: ${{ job.target }} gpuTarget: $(JOB_GPU_TARGET)
# extraEnvVars:
# - HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocALUTION_testing
- job: rocALUTION_test_${{ job.target }} dependsOn: rocALUTION
dependsOn: rocALUTION_build_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
componentName: rocALUTION ${{ if eq(parameters.checkoutRef, '') }}:
testDir: '$(Agent.BuildDirectory)/rocm/bin' dependencySource: staging
testExecutable: './rocalution-test' ${{ elseif ne(parameters.checkoutRef, '') }}:
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
environment: test componentName: rocALUTION
gpuTarget: ${{ job.target }} testDir: '$(Agent.BuildDirectory)/rocm/bin'
testExecutable: './rocalution-test'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'

View File

@@ -1,47 +1,25 @@
parameters: parameters:
- name: componentName
type: string
default: rocBLAS
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- git
- gfortran
- libdrm-dev
- libmsgpack-dev
- libopenblas-dev
- ninja-build - ninja-build
- python3-pip
- python3-venv - python3-venv
- git
- libmsgpack-dev
- gfortran
- libopenblas-dev
- googletest
- libgtest-dev
- wget - wget
- python3-pip
- libdrm-dev
- name: pipModules - name: pipModules
type: object type: object
default: default:
@@ -50,18 +28,18 @@ parameters:
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- aomp
- clr
- hipBLAS-common
- hipBLASLt
- llvm-project
- rocm-cmake - rocm-cmake
- rocm-core - llvm-project
- rocm_smi_lib - ROCR-Runtime
- clr
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - rocm_smi_lib
- roctracer - rocm-core
- aomp
- aomp-extras
- hipBLAS-common
- hipBLASLt
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -70,218 +48,116 @@ parameters:
- hipBLAS-common - hipBLAS-common
- hipBLASLt - hipBLASLt
- llvm-project - llvm-project
- rocm-cmake
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- rocm_smi_lib - rocm_smi_lib
- ROCR-Runtime - ROCR-Runtime
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
#- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
#- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- rocSPARSE:
name: rocSPARSE
sparseCheckoutDir: projects/rocsparse
skipUnifiedBuild: 'false'
buildDependsOn:
- rocBLAS_build
# rocSOLVER depends on both rocBLAS and rocPRIM
# for a unified build, rocBLAS will be the one to call rocSOLVER
# - rocSOLVER:
# name: rocSOLVER
# sparseCheckoutDir: projects/rocsolver
# skipUnifiedBuild: 'false'
# buildDependsOn:
# - rocBLAS_build
# unifiedBuild:
# downstreamAggregateNames: rocBLAS+rocPRIM
# buildDependsOn:
# - rocBLAS_build
# - rocPRIM_build
# temporary rocblas->hipblas downstream path while the SOLVERs are disabled
- hipBLAS:
name: hipBLAS
sparseCheckoutDir: projects/hipblas
skipUnifiedBuild: 'false'
buildDependsOn:
- rocBLAS_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocBLAS
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
variables: - name: TENSILE_ROCM_ASSEMBLER_PATH
- group: common value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang
- template: /.azuredevops/variables-global.yml - name: CMAKE_CXX_COMPILER
- name: HIP_ROCCLR_HOME value: $(Agent.BuildDirectory)/rocm/bin/hipcc
value: $(Build.BinariesDirectory)/rocm - name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH
- name: TENSILE_ROCM_ASSEMBLER_PATH value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler
value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang pool: ${{ variables.MEDIUM_BUILD_POOL }}
- name: TENSILE_ROCM_OFFLOAD_BUNDLER_PATH workspace:
value: $(Agent.BuildDirectory)/rocm/llvm/bin/clang-offload-bundler clean: all
- name: ROCM_PATH strategy:
value: $(Agent.BuildDirectory)/rocm matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
${{ if eq(job.os, 'almalinux8') }}: JOB_GPU_TARGET: gfx942
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all pipModules: ${{ parameters.pipModules }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} checkoutRepo: ${{ parameters.checkoutRepo }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aocl.yml
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ if eq(parameters.checkoutRef, '') }}:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aocl.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
dependencyList: extraBuildFlags: >-
- gtest -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install
parameters: -DCMAKE_BUILD_TYPE=Release
checkoutRef: ${{ parameters.checkoutRef }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
dependencyList: ${{ parameters.rocmDependencies }} -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
os: ${{ job.os }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} -DTensile_CODE_OBJECT_VERSION=default
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DTensile_LOGIC=asm_full
${{ if parameters.triggerDownstreamJobs }}: -DTensile_SEPARATE_ARCHITECTURES=ON
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DTensile_LAZY_LIBRARY_LOADING=ON
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DTensile_LIBRARY_FORMAT=msgpack
parameters: -DBUILD_CLIENTS_TESTS=ON
os: ${{ job.os }} -DBUILD_CLIENTS_BENCHMARKS=OFF
cmakeSourceDir: $(Agent.BuildDirectory)/sparse/projects/rocblas -DBUILD_CLIENTS_SAMPLES=OFF
cmakeBuildDir: $(Agent.BuildDirectory)/sparse/projects/rocblas/build -DROCM_PATH=$(Agent.BuildDirectory)/rocm
extraBuildFlags: >- -GNinja
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DCMAKE_BUILD_TYPE=Release parameters:
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/amdclang++ gpuTarget: $(JOB_GPU_TARGET)
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/amdclang
-DGPU_TARGETS=${{ job.target }}
-DBUILD_CLIENTS_TESTS=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
installAOCL: true
gpuTarget: ${{ job.target }}
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- TENSILE_ROCM_ASSEMBLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang
- TENSILE_ROCM_OFFLOAD_BUNDLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang-offload-bundler
- ROCM_PATH:::/home/user/workspace/rocm
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocBLAS_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocBLAS
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
timeoutInMinutes: 120 variables:
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} - group: common
condition: - template: /.azuredevops/variables-global.yml
and(succeeded(), pool: $(JOB_TEST_POOL)
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), workspace:
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), clean: all
eq(${{ parameters.aggregatePipeline }}, False) strategy:
) matrix:
variables: gfx942:
- group: common JOB_GPU_TARGET: gfx942
- template: /.azuredevops/variables-global.yml JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
pool: ${{ job.target }}_test_pool steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- checkout: none pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
pipModules: ${{ parameters.pipModules }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
os: ${{ job.os }} dependencyList: ${{ parameters.rocmTestDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: staging
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
${{ if parameters.triggerDownstreamJobs }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml componentName: rocBLAS
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml testDir: '$(Agent.BuildDirectory)/rocm/bin'
parameters: testExecutable: './rocblas-test'
componentName: ${{ parameters.componentName }} testParameters: '--yaml rocblas_smoke.yaml --gtest_output=xml:./test_output.xml --gtest_color=yes'
os: ${{ job.os }}
testDir: '$(Agent.BuildDirectory)/rocm/bin'
testExecutable: './rocblas-test'
testParameters: '--yaml rocblas_smoke.yaml --gtest_output=xml:./test_output.xml --gtest_color=yes'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}
${{ if parameters.unifiedBuild }}:
buildDependsOn: ${{ component.unifiedBuild.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ component.unifiedBuild.downstreamAggregateNames }}
${{ else }}:
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}

View File

@@ -1,62 +1,35 @@
parameters: parameters:
- name: componentName
type: string
default: rocDecode
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
- name: rocPyDecodeRepo
type: string
default: rocpydecode_repo
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- python3-pip
- cmake - cmake
- ninja-build
- pkg-config
- ffmpeg - ffmpeg
- libavcodec-dev - libavcodec-dev
- libavformat-dev - libavformat-dev
- libavutil-dev - libavutil-dev
- libdrm-dev
- libstdc++-12-dev - libstdc++-12-dev
- libva-amdgpu-dev - libva-amdgpu-dev
- mesa-amdgpu-va-drivers - mesa-amdgpu-va-drivers
- ninja-build - libdrm-dev
- pkg-config
- python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project
- rocm-cmake - rocm-cmake
- rocm-core - llvm-project
- rocminfo
- rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- clr
- rocminfo
- rocm-core
- rocprofiler-register
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -66,153 +39,99 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- rocPyDecode:
name: rocPyDecode
sparseCheckoutDir: ''
skipUnifiedBuild: 'false'
buildDependsOn:
- rocDecode_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocDecode
- job: ${{ parameters.componentName }}_build_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml steps:
- name: ROCM_PATH # Since mesa-amdgpu-multimedia-devel is not directly available from apt, register it
value: $(Agent.BuildDirectory)/rocm - task: Bash@3
pool: displayName: 'Register ROCm packages'
vmImage: ${{ variables.BASE_BUILD_POOL }} inputs:
${{ if eq(job.os, 'almalinux8') }}: targetType: inline
container: script: |
image: rocmexternalcicd.azurecr.io/manylinux228:latest sudo mkdir --parents --mode=0755 /etc/apt/keyrings
endpoint: ContainerService3 wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
workspace: echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/${{ variables.KEYRING_VERSION }}/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/amdgpu.list
clean: all echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${{ variables.KEYRING_VERSION }} jammy main" | sudo tee --append /etc/apt/sources.list.d/rocm.list
steps: echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml sudo apt update
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} aptPackages: ${{ parameters.aptPackages }}
registerROCmPackages: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
${{ if parameters.triggerDownstreamJobs }}: ${{ elseif ne(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
os: ${{ job.os }} extraBuildFlags: >-
consolidateBuildAndInstall: true -DROCM_PATH=$(Agent.BuildDirectory)/rocm
extraBuildFlags: >- -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release
-DCMAKE_BUILD_TYPE=Release -GNinja
-GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# registerROCmPackages: true
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocDecode_testing
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} dependsOn: rocDecode
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
- name: ROCM_PATH JOB_GPU_TARGET: gfx942
value: $(Agent.BuildDirectory)/rocm JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
pool: steps:
name: ${{ job.target }}_test_pool - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
workspace: parameters:
clean: all aptPackages: ${{ parameters.aptPackages }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} ${{ if eq(parameters.checkoutRef, '') }}:
registerROCmPackages: true dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
os: ${{ job.os }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
os: ${{ job.os }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmTestDependencies }} # anything in /opt may be persistent across runs
gpuTarget: ${{ job.target }} # so we need to remove the symlink if it already exists
os: ${{ job.os }} - script: |
- task: Bash@3 sudo rm -rf /opt/rocm
displayName: Build rocDecode tests sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
inputs: mkdir rocDecode-tests
targetType: inline cd rocDecode-tests
script: | cmake /opt/rocm/share/rocdecode/test
${{ iif(eq(job.os, 'almalinux8'), 'source /opt/rh/gcc-toolset-14/enable', '') }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
mkdir rocDecode-tests - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
cd rocDecode-tests parameters:
cmake $(Agent.BuildDirectory)/rocm/share/rocdecode/test componentName: rocDecode
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml testDir: 'rocDecode-tests'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml - script: sudo rm /opt/rocm
parameters:
componentName: rocDecode
testDir: 'rocDecode-tests'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
registerROCmPackages: true
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.rocPyDecodeRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: rocFFT
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -65,145 +41,96 @@ parameters:
- ROCR-Runtime - ROCR-Runtime
- rocRAND - rocRAND
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
- name: downstreamComponentMatrix
type: object
default:
- hipFFT:
name: hipFFT
sparseCheckoutDir: projects/hipfft
skipUnifiedBuild: 'false'
buildDependsOn:
- rocFFT_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocFFT
- job: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_ubuntu2204_${{ job.target }} # todo: un-hardcode OS value: $(Build.BinariesDirectory)/rocm
variables: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- group: common workspace:
- template: /.azuredevops/variables-global.yml clean: all
- name: HIP_ROCCLR_HOME strategy:
value: $(Build.BinariesDirectory)/rocm matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
${{ if parameters.triggerDownstreamJobs }}: ${{ elseif ne(parameters.checkoutRef, '') }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_TYPE=Release
-DAMDGPU_TARGETS=${{ job.target }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
-DUSE_HIP_CLANG=ON -DUSE_HIP_CLANG=ON
-DHIP_COMPILER=clang -DHIP_COMPILER=clang
-DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_TESTS=ON
-DBUILD_CLIENTS_BENCHMARKS=OFF -DBUILD_CLIENTS_BENCHMARKS=OFF
-DBUILD_CLIENTS_SAMPLES=OFF -DBUILD_CLIENTS_SAMPLES=OFF
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters: parameters:
componentName: ${{ parameters.componentName }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocFFT_testing
- job: ${{ parameters.componentName }}_test_ubuntu2204_${{ job.target }} dependsOn: rocFFT
dependsOn: ${{ parameters.componentName }}_build_ubuntu2204_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- checkout: none parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
preTargetFilter: ${{ parameters.componentName }} parameters:
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmTestDependencies }}
${{ if parameters.triggerDownstreamJobs }}: gpuTarget: $(JOB_GPU_TARGET)
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
componentName: ${{ parameters.componentName }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
testDir: '$(Agent.BuildDirectory)/rocm/bin' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
testExecutable: './rocfft-test' parameters:
testParameters: '--test_prob 0.004 --gtest_output=xml:./test_output.xml --gtest_color=yes' componentName: rocFFT
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml testDir: '$(Agent.BuildDirectory)/rocm/bin'
parameters: testExecutable: './rocfft-test'
aptPackages: ${{ parameters.aptPackages }} testParameters: '--test_prob 0.004 --gtest_output=xml:./test_output.xml --gtest_color=yes'
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,183 +0,0 @@
parameters:
- name: componentName
type: string
default: rocJPEG
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- libdrm-dev
- libstdc++-12-dev
- libva-amdgpu-dev
- mesa-amdgpu-va-drivers
- ninja-build
- pkg-config
- python3-pip
- name: rocmDependencies
type: object
default:
- clr
- llvm-project
- rocm-cmake
- rocminfo
- rocm-core
- rocprofiler-register
- ROCR-Runtime
- name: rocmTestDependencies
type: object
default:
- clr
- llvm-project
- rocminfo
- rocprofiler-register
- ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: ROCM_PATH
value: $(Agent.BuildDirectory)/rocm
pool:
${{ if eq(job.os, 'ubuntu2404') }}:
name: rocm-ci_medium_build_pool_2404
${{ else }}:
name: ${{ variables.MEDIUM_BUILD_POOL }}
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
registerROCmPackages: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
consolidateBuildAndInstall: true
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm"
-DCMAKE_BUILD_TYPE=Release
-DGPU_TARGETS=${{ job.target }}
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# gpuTarget: ${{ job.target }}
# registerROCmPackages: true
- ${{ each job in parameters.jobMatrix.testJobs }}:
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }}
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }}
condition:
and(succeeded(),
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'),
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])),
eq(${{ parameters.aggregatePipeline }}, False)
)
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: ROCM_PATH
value: $(Agent.BuildDirectory)/rocm
pool:
name: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
registerROCmPackages: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters:
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmTestDependencies }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- task: Bash@3
displayName: Build rocJPEG tests
inputs:
targetType: inline
script: |
${{ iif(eq(job.os, 'almalinux8'), 'source /opt/rh/gcc-toolset-14/enable', '') }}
mkdir rocJPEG-tests
cd rocJPEG-tests
cmake $(Agent.BuildDirectory)/rocm/share/rocjpeg/test
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: rocJPEG
testDir: 'rocJPEG-tests'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
registerROCmPackages: true

View File

@@ -5,50 +5,31 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- ninja-build
- git - git
- python3-pip
- libdrm-dev - libdrm-dev
- libstdc++-12-dev - libstdc++-12-dev
- ninja-build
- python3-pip
- name: pipModules - name: pipModules
type: object type: object
default: default:
- hip-python --extra-index-url https://test.pypi.org/simple
- ml_dtypes
- numpy
- tomli - tomli
- scipy
- pybind11
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project - llvm-project
- rocm-cmake - rocm-cmake
- clr
- rocminfo - rocminfo
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- job: rocMLIR_build - job: rocMLIR
variables: variables:
- group: common - group: common
- template: /.azuredevops/variables-global.yml - template: /.azuredevops/variables-global.yml
@@ -66,9 +47,13 @@ jobs:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }} # CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
@@ -76,80 +61,72 @@ jobs:
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++ -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DBUILD_FAT_LIBROCKCOMPILER=1 -DBUILD_FAT_LIBROCKCOMPILER=1
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml # compiling and running test on the test system together
- job: rocMLIR_testing
dependsOn: rocMLIR
condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool: $(JOB_TEST_POOL)
workspace:
clean: all
strategy:
matrix:
gfx942:
JOB_GPU_TARGET: gfx942
JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }} pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- ${{ each job in parameters.jobMatrix.testJobs }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
# compiling and running test on the test system together parameters:
- job: rocMLIR_test_${{ job.target }} checkoutRepo: ${{ parameters.checkoutRepo }}
dependsOn: rocMLIR_build - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
condition: parameters:
and(succeeded(), ${{ if eq(parameters.checkoutRef, '') }}:
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), dependencySource: staging
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), ${{ elseif ne(parameters.checkoutRef, '') }}:
eq(${{ parameters.aggregatePipeline }}, False) dependencySource: tag-builds
) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
variables: parameters:
- group: common dependencyList: ${{ parameters.rocmDependencies }}
- template: /.azuredevops/variables-global.yml gpuTarget: $(JOB_GPU_TARGET)
pool: ${{ job.target }}_test_pool # CI case: download latest default branch build
workspace: ${{ if eq(parameters.checkoutRef, '') }}:
clean: all dependencySource: staging
steps: # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
aptPackages: ${{ parameters.aptPackages }} - task: Bash@3
pipModules: ${{ parameters.pipModules }} displayName: ROCm symbolic link
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml targetType: inline
parameters: script: |
checkoutRepo: ${{ parameters.checkoutRepo }} sudo rm -rf /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} installEnabled: false
dependencyList: ${{ parameters.rocmDependencies }} extraBuildFlags: >-
gpuTarget: ${{ job.target }} -DCMAKE_BUILD_TYPE=Release
- task: Bash@3 -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++
displayName: Symlink rocm_agent_enumerator -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang
inputs: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
targetType: inline -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
script: | -DROCM_TEST_CHIPSET=$(JOB_GPU_TARGET)
# Assuming that /opt is no longer persistent across runs, test environments are fully ephemeral -GNinja
sudo mkdir -p /opt/rocm/bin - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
sudo ln -s $(Agent.BuildDirectory)/rocm/bin/rocm_agent_enumerator /opt/rocm/bin/rocm_agent_enumerator - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters:
parameters: componentName: rocMLIR
installEnabled: false testDir: $(Build.SourcesDirectory)/build
extraBuildFlags: >- testExecutable: ninja
-DCMAKE_BUILD_TYPE=Release testParameters: check-rocmlir
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/clang
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/lib
-DCMAKE_INCLUDE_PATH=$(Agent.BuildDirectory)/rocm/lib
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DAMDGPU_TARGETS=${{ job.target }}
-DROCM_TEST_CHIPSET=${{ job.target }}
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: rocMLIR
testDir: $(Build.SourcesDirectory)/build
testExecutable: ninja
testParameters: check-rocmlir
testPublishResults: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,49 +1,26 @@
parameters: parameters:
- name: componentName
type: string
default: rocPRIM
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- git
- ninja-build - ninja-build
- libgtest-dev
- git
- python3-pip - python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project
- rocm-cmake - rocm-cmake
- rocminfo - llvm-project
- ROCR-Runtime - ROCR-Runtime
- clr
- rocminfo
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -53,179 +30,87 @@ parameters:
- ROCR-Runtime - ROCR-Runtime
- rocprofiler-register - rocprofiler-register
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942, shard: 1, shardCount: 3 }
- { os: ubuntu2204, packageManager: apt, target: gfx942, shard: 2, shardCount: 3 }
- { os: ubuntu2204, packageManager: apt, target: gfx942, shard: 3, shardCount: 3 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a, shard: 1, shardCount: 3 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a, shard: 2, shardCount: 3 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a, shard: 3, shardCount: 3 }
- name: downstreamComponentMatrix
type: object
default:
- rocThrust:
name: rocThrust
sparseCheckoutDir: projects/rocthrust
skipUnifiedBuild: 'false'
buildDependsOn:
- rocPRIM_build
- hipCUB:
name: hipCUB
sparseCheckoutDir: projects/hipcub
skipUnifiedBuild: 'false'
buildDependsOn:
- rocPRIM_build
# rocSOLVER depends on both rocBLAS and rocPRIM
# for a unified build, rocBLAS will be the one to call rocSOLVER
# - rocSOLVER:
# name: rocSOLVER
# sparseCheckoutDir: projects/rocsolver
# skipUnifiedBuild: 'true'
# buildDependsOn:
# - rocPRIM_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocPRIM
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_${{ job.os }}_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
${{ if eq(job.os, 'almalinux8') }}: JOB_GPU_TARGET: gfx942
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ if eq(parameters.checkoutRef, '') }}:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: dependencySource: tag-builds
- gtest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: extraBuildFlags: >-
checkoutRef: ${{ parameters.checkoutRef }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
dependencyList: ${{ parameters.rocmDependencies }} -DBUILD_BENCHMARK=ON
gpuTarget: ${{ job.target }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
os: ${{ job.os }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DBUILD_TEST=ON
${{ if parameters.triggerDownstreamJobs }}: -GNinja
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
os: ${{ job.os }}
consolidateBuildAndInstall: true
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor"
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DAMDGPU_TARGETS=${{ job.target }}
-DBUILD_BENCHMARK=ON
-DBUILD_TEST=ON
-GNinja
extraCxxFlags: -Wno-deprecated-declarations
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocPRIM_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocPRIM
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }}_shard_${{ job.shard }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: rocPRIM
componentName: ${{ parameters.componentName }} testDir: '$(Agent.BuildDirectory)/rocm/bin/rocprim'
testDir: '$(Agent.BuildDirectory)/rocm/bin/rocprim'
extraTestParameters: '-I ${{ job.shard }},,${{ job.shardCount }}'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -5,27 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -43,222 +22,169 @@ parameters:
- name: pipModules - name: pipModules
type: object type: object
default: default:
- hip-python --extra-index-url https://test.pypi.org/simple
- numpy
- pybind11 - pybind11
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project
- rocDecode
- rocJPEG
- rocm-cmake - rocm-cmake
- rocm-core - llvm-project
- rocminfo
- ROCR-Runtime - ROCR-Runtime
- clr
- rocminfo
- rocm-core
- rocprofiler-register - rocprofiler-register
- rocDecode
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocPyDecode
- job: rocPyDecode_build_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
- name: ROCM_PATH matrix:
value: $(Agent.BuildDirectory)/rocm gfx942:
pool: JOB_GPU_TARGET: gfx942
vmImage: ${{ variables.BASE_BUILD_POOL }} steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml pipModules: ${{ parameters.pipModules }}
parameters: - task: Bash@3
aptPackages: ${{ parameters.aptPackages }} displayName: 'pip install hip-python'
pipModules: ${{ parameters.pipModules }} inputs:
packageManager: ${{ job.packageManager }} targetType: inline
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml script: pip install -i https://test.pypi.org/simple hip-python
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }}
dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} # CI case: download latest default branch build
aggregatePipeline: ${{ parameters.aggregatePipeline }} ${{ if eq(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: staging
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} # manual build case: triggered by ROCm/ROCm repo
- task: Bash@3 ${{ elseif ne(parameters.checkoutRef, '') }}:
displayName: 'Save Python Package Paths' dependencySource: tag-builds
inputs: - task: Bash@3
targetType: inline displayName: 'ROCm symbolic link'
script: | inputs:
echo "##vso[task.setvariable variable=PYTHON_USER_SITE;]$(python3 -m site --user-site)" targetType: inline
echo "##vso[task.setvariable variable=PYTHON_DIST_PACKAGES;]$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')" script: |
echo "##vso[task.setvariable variable=PYBIND11_PATH;]$(python3 -c 'import pybind11; print(pybind11.get_cmake_dir())')" sudo rm -rf /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
parameters: - task: Bash@3
installEnabled: false displayName: 'Set User Site Packages Path'
extraBuildFlags: >- inputs:
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(PYTHON_USER_SITE)/pybind11;$(PYTHON_DIST_PACKAGES)/pybind11;$(PYBIND11_PATH) targetType: inline
-DCMAKE_BUILD_TYPE=Release script: echo "##vso[task.setvariable variable=USER_SITE;]$(python -m site --user-site)"
-DGPU_TARGETS=${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_INSTALL_PREFIX_PYTHON=$(Build.BinariesDirectory) parameters:
-GNinja extraBuildFlags: >-
- task: Bash@3 -DROCM_PATH=$(Agent.BuildDirectory)/rocm
displayName: 'rocPyDecode install' -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(USER_SITE)/pybind11
inputs: -DCMAKE_BUILD_TYPE=Release
targetType: inline -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
script: | -DCMAKE_INSTALL_PREFIX_PYTHON=$(Build.BinariesDirectory)
sudo cmake --build . --target install -GNinja
sudo chown -R $(whoami):$(id -gn) $(Build.BinariesDirectory) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
workingDirectory: $(Build.SourcesDirectory)/build parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: publish: false
gpuTarget: ${{ job.target }} - task: Bash@3
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml displayName: Create wheel file
parameters: inputs:
gpuTarget: ${{ job.target }} targetType: inline
publish: false script: |
- task: Bash@3 export ROCM_PATH=$(Agent.BuildDirectory)/rocm
displayName: Create wheel file export HIP_INCLUDE_DIRS=$(Agent.BuildDirectory)/rocm/include/hip
inputs: python3 setup.py bdist_wheel
targetType: inline workingDirectory: $(Build.SourcesDirectory)
script: | - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
export HIP_INCLUDE_DIRS=$(Agent.BuildDirectory)/rocm/include/hip parameters:
sudo python3 setup.py bdist_wheel sourceDir: $(Build.SourcesDirectory)/dist
sudo chown -R $(whoami):$(id -gn) $(find . -name "*.whl") contentsString: '*.whl'
workingDirectory: $(Build.SourcesDirectory) targetDir: $(Build.ArtifactStagingDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml clean: false
parameters: - task: PublishPipelineArtifact@1
sourceDir: $(Build.SourcesDirectory)/dist displayName: 'wheel file Publish'
contentsString: '*.whl' retryCountOnTaskFailure: 3
targetDir: $(Build.ArtifactStagingDirectory) inputs:
clean: false targetPath: $(Build.ArtifactStagingDirectory)
- task: PublishPipelineArtifact@1
displayName: 'wheel file Publish'
retryCountOnTaskFailure: 3
inputs:
targetPath: $(Build.ArtifactStagingDirectory)
- task: Bash@3
displayName: Save pipeline artifact file names
inputs:
workingDirectory: $(Pipeline.Workspace)
targetType: inline
script: |
whlFile=$(find "$(Build.ArtifactStagingDirectory)" -type f -name "*.whl" | head -n 1)
if [ -n "$whlFile" ]; then
echo $(basename "$whlFile") >> pipelineArtifacts.txt
fi
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocPyDecode_testing
- job: rocPyDecode_test_${{ job.target }} dependsOn: rocPyDecode
dependsOn: rocPyDecode_build_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
- name: ROCM_PATH JOB_GPU_TARGET: gfx942
value: $(Agent.BuildDirectory)/rocm JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
pool: steps:
name: ${{ job.target }}_test_pool - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
workspace: parameters:
clean: all aptPackages: ${{ parameters.aptPackages }}
steps: pipModules: ${{ parameters.pipModules }}
- task: Bash@3 - task: Bash@3
displayName: Ensure pybind11-dev is not installed displayName: 'pip install hip-python'
inputs: inputs:
targetType: inline targetType: inline
script: | script: pip install -i https://test.pypi.org/simple hip-python
if dpkg -l | grep -q pybind11-dev; then - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
echo "Removing pybind11-dev..." - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
sudo apt remove -y pybind11-dev parameters:
else gpuTarget: $(JOB_GPU_TARGET)
echo "pybind11-dev is not installed." - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
fi parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
aptPackages: ${{ parameters.aptPackages }} ${{ elseif ne(parameters.checkoutRef, '') }}:
pipModules: ${{ parameters.pipModules }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- task: DownloadPipelineArtifact@2 parameters:
displayName: 'Download Pipeline Wheel Files' dependencyList: ${{ parameters.rocmDependencies }}
retryCountOnTaskFailure: 3 gpuTarget: $(JOB_GPU_TARGET)
inputs: ${{ if eq(parameters.checkoutRef, '') }}:
itemPattern: '**/*.whl' dependencySource: staging
targetPath: $(Agent.BuildDirectory) ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - task: Bash@3
parameters: displayName: Setup test environment
checkoutRef: ${{ parameters.checkoutRef }} inputs:
dependencyList: ${{ parameters.rocmDependencies }} targetType: inline
gpuTarget: ${{ job.target }} script: |
setupHIPLibrarySymlinks: true sudo rm -rf /opt/rocm
- task: Bash@3 sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
displayName: pip install echo "##vso[task.setvariable variable=USER_SITE;]$(python3 -m site --user-site)"
inputs: cd $(Build.SourcesDirectory)
targetType: inline sudo pip install .
script: | cmake -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(USER_SITE)/pybind11 -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) .
pip uninstall -y rocPyDecode - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
find -name *.whl -exec pip install {} \; - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
workingDirectory: $(Agent.BuildDirectory) parameters:
- task: Bash@3 componentName: rocPyDecode
displayName: Setup search paths testDir: $(Build.SourcesDirectory)
inputs: # sudo required for pip install but screws up permissions for next pipeline run
targetType: inline - task: Bash@3
script: | displayName: Clean up test environment
echo "##vso[task.setvariable variable=PYTHON_USER_SITE;]$(python3 -m site --user-site)" condition: always()
echo "##vso[task.setvariable variable=PYTHON_DIST_PACKAGES;]$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')" inputs:
echo "##vso[task.setvariable variable=PYBIND11_PATH;]$(python3 -c 'import pybind11; print(pybind11.get_cmake_dir())')" targetType: inline
- task: CMake@1 script: |
displayName: 'rocPyDecode Test CMake Flags' sudo pip uninstall -y rocPyDecode
inputs: sudo rm -rf $(Build.SourcesDirectory)/*
workingDirectory: $(Agent.BuildDirectory)/rocm/share/rocpydecode/tests
cmakeArgs: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(PYTHON_USER_SITE)/pybind11;$(PYTHON_DIST_PACKAGES)/pybind11;$(PYBIND11_PATH)
-DCMAKE_BUILD_TYPE=Release
-DGPU_TARGETS=${{ job.target }}
.
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: rocPyDecode
testDir: $(Agent.BuildDirectory)/rocm/share/rocpydecode/tests
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
pythonEnvVars: true
# note that this docker won't have hip-python installed via pip

View File

@@ -1,49 +1,26 @@
parameters: parameters:
- name: componentName
type: string
default: rocRAND
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- git
- ninja-build - ninja-build
- python3-pip - googletest
- libgtest-dev
- git
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project
- rocm-cmake - rocm-cmake
- rocminfo - llvm-project
- ROCR-Runtime - ROCR-Runtime
- clr
- rocminfo
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -53,171 +30,89 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- hipRAND:
name: hipRAND
sparseCheckoutDir: projects/hiprand
skipUnifiedBuild: 'false'
buildDependsOn:
- rocRAND_build
- MIOpen:
name: MIOpen
sparseCheckoutDir: projects/miopen
skipUnifiedBuild: 'true'
buildDependsOn:
- rocRAND_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocRAND
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
variables: pool:
- group: common vmImage: ${{ variables.BASE_BUILD_POOL }}
- template: /.azuredevops/variables-global.yml workspace:
- name: HIP_ROCCLR_HOME clean: all
value: $(Build.BinariesDirectory)/rocm strategy:
pool: matrix:
${{ if eq(job.os, 'ubuntu2404') }}: gfx942:
vmImage: 'ubuntu-24.04' JOB_GPU_TARGET: gfx942
${{ else }}: steps:
name: ${{ variables.MEDIUM_BUILD_POOL }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
${{ if eq(job.os, 'almalinux8') }}: parameters:
container: aptPackages: ${{ parameters.aptPackages }}
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
endpoint: ContainerService3 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
workspace: parameters:
clean: all checkoutRepo: ${{ parameters.checkoutRepo }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
aptPackages: ${{ parameters.aptPackages }} gpuTarget: $(JOB_GPU_TARGET)
packageManager: ${{ job.packageManager }} # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml dependencySource: staging
parameters: # manual build case: triggered by ROCm/ROCm repo
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ elseif ne(parameters.checkoutRef, '') }}:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
dependencyList: extraBuildFlags: >-
- gtest -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml -DBUILD_TEST=ON
parameters: -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
checkoutRef: ${{ parameters.checkoutRef }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmDependencies }} -GNinja
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
aggregatePipeline: ${{ parameters.aggregatePipeline }} parameters:
os: ${{ job.os }} gpuTarget: $(JOB_GPU_TARGET)
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
consolidateBuildAndInstall: true
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DAMDGPU_TARGETS=${{ job.target }}
-DBUILD_TEST=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# gpuTarget: ${{ job.target }}
# extraEnvVars:
# - HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocRAND_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocRAND
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: rocRAND
componentName: ${{ parameters.componentName }} testDir: '$(Agent.BuildDirectory)/rocm/bin/rocRAND'
testDir: '$(Agent.BuildDirectory)/rocm/bin/rocRAND'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,54 +1,34 @@
parameters: parameters:
- name: componentName
type: string
default: rocSOLVER
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- gfortran
- git
- libfmt-dev
- libsuitesparse-dev
- ninja-build - ninja-build
- libsuitesparse-dev
- gfortran
- libfmt-dev
- git
- googletest
- libgtest-dev
- python3-pip - python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr - clr
- hipSPARSE
- llvm-project - llvm-project
- rocBLAS - rocBLAS
- rocm-cmake - rocm-cmake
- rocminfo - rocminfo
- rocPRIM - rocPRIM
- ROCR-Runtime - ROCR-Runtime
- rocSPARSE
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -66,203 +46,109 @@ parameters:
- rocSPARSE - rocSPARSE
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
#- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
#- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- hipBLAS:
name: hipBLAS
sparseCheckoutDir: projects/hipblas
skipUnifiedBuild: 'false'
buildDependsOn:
- rocSOLVER_build
# hipSOLVER depends on both rocSOLVER and rocSPARSE
# for a unified build, rocSOLVER will be the one to call hipSOLVER
# - hipSOLVER:
# name: hipSOLVER
# sparseCheckoutDir: projects/hipsolver
# skipUnifiedBuild: 'false'
# buildDependsOn:
# - rocSOLVER_build
# unifiedBuild:
# downstreamAggregateNames: rocSOLVER+rocSPARSE
# buildDependsOn:
# - rocSOLVER_build
# - rocSPARSE_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocSOLVER
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_${{ job.os }}_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
${{ if eq(job.os, 'almalinux8') }}: JOB_GPU_TARGET: gfx942
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
aptPackages: ${{ parameters.aptPackages }} - task: Bash@3
packageManager: ${{ job.packageManager }} displayName: 'Clone lapack'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml targetType: inline
parameters: script: git clone --depth 1 --branch v3.9.1 https://github.com/Reference-LAPACK/lapack
checkoutRepo: ${{ parameters.checkoutRepo }} workingDirectory: '$(Build.SourcesDirectory)'
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- task: Bash@3 parameters:
displayName: 'Clone lapack' dependencyList: ${{ parameters.rocmDependencies }}
inputs: gpuTarget: $(JOB_GPU_TARGET)
targetType: inline # CI case: download latest default branch build
script: git clone --depth 1 --branch v3.9.1 https://github.com/Reference-LAPACK/lapack ${{ if eq(parameters.checkoutRef, '') }}:
workingDirectory: '$(Build.SourcesDirectory)' dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: dependencySource: tag-builds
- gtest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: componentName: lapack
checkoutRef: ${{ parameters.checkoutRef }} extraBuildFlags: >-
dependencyList: ${{ parameters.rocmDependencies }} -DCMAKE_BUILD_TYPE=Release
os: ${{ job.os }} -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls
gpuTarget: ${{ job.target }} -DBUILD_TESTING=OFF
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DCBLAS=ON
${{ if parameters.triggerDownstreamJobs }}: -DLAPACKE=OFF
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml cmakeBuildDir: '$(Build.SourcesDirectory)/lapack/build'
parameters: installDir: '$(Pipeline.Workspace)/deps-install'
componentName: lapack - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
os: ${{ job.os }} parameters:
extraBuildFlags: >- extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DBUILD_TESTING=OFF -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
-DCBLAS=ON -DBUILD_CLIENTS_TESTS=ON
-DLAPACKE=OFF -DBUILD_CLIENTS_BENCHMARKS=OFF
-GNinja -DBUILD_CLIENTS_SAMPLES=OFF
cmakeBuildDir: '$(Build.SourcesDirectory)/lapack/build' -GNinja
cmakeSourceDir: '$(Build.SourcesDirectory)/lapack' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
installDir: '$(Pipeline.Workspace)/deps-install' parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml gpuTarget: $(JOB_GPU_TARGET)
parameters:
os: ${{ job.os }}
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install;$(Agent.BuildDirectory)/vendor
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DAMDGPU_TARGETS=${{ job.target }}
-DBUILD_CLIENTS_TESTS=ON
-DBUILD_CLIENTS_BENCHMARKS=OFF
-DBUILD_CLIENTS_SAMPLES=OFF
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
extraCopyDirectories:
- deps-install
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocSOLVER_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocSOLVER
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters: parameters:
preTargetFilter: ${{ parameters.componentName }} ${{ if eq(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
os: ${{ job.os }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} ${{ if eq(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: tag-builds
${{ if parameters.triggerDownstreamJobs }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml componentName: rocSOLVER
parameters: testDir: '$(Agent.BuildDirectory)/rocm/bin'
componentName: ${{ parameters.componentName }} testExecutable: './rocsolver-test'
os: ${{ job.os }} testParameters: '--gtest_filter="*checkin*" --gtest_output=xml:./test_output.xml --gtest_color=yes'
testDir: '$(Agent.BuildDirectory)/rocm/bin'
testExecutable: './rocsolver-test'
testParameters: '--gtest_filter="*checkin*" --gtest_output=xml:./test_output.xml --gtest_color=yes'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}
${{ if parameters.unifiedBuild }}:
buildDependsOn: ${{ component.unifiedBuild.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ component.unifiedBuild.downstreamAggregateNames }}
${{ else }}:
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}

View File

@@ -1,57 +1,34 @@
parameters: parameters:
- name: componentName
type: string
default: rocSPARSE
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake
- gfortran
- git
- libboost-program-options-dev
- libdrm-dev
- libfftw3-dev
- ninja-build
- python3-pip - python3-pip
- cmake
- ninja-build
- libboost-program-options-dev
- googletest
- libfftw3-dev
- git
- gfortran
- libgtest-dev
- libdrm-dev
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr
- llvm-project
- rocBLAS
- rocm-cmake - rocm-cmake
- llvm-project
- ROCR-Runtime
- clr
- rocBLAS
- rocminfo - rocminfo
- rocPRIM - rocPRIM
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime
- roctracer
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
@@ -65,179 +42,108 @@ parameters:
- ROCR-Runtime - ROCR-Runtime
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
#- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- name: downstreamComponentMatrix
type: object
default:
- hipSPARSE:
name: hipSPARSE
sparseCheckoutDir: projects/hipsparse
skipUnifiedBuild: 'false'
buildDependsOn:
- rocSPARSE_build
# hipSOLVER depends on both rocSOLVER and rocSPARSE
# for a unified build, rocSOLVER will be the one to call hipSOLVER
# - hipSOLVER:
# name: hipSOLVER
# sparseCheckoutDir: projects/hipsolver
# skipUnifiedBuild: 'true'
# buildDependsOn:
# - rocSPARSE_build
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocSPARSE
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
variables: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- group: common workspace:
- template: /.azuredevops/variables-global.yml clean: all
- name: HIP_ROCCLR_HOME strategy:
value: $(Build.BinariesDirectory)/rocm matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml checkoutRepo: ${{ parameters.checkoutRepo }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
dependencyList: ${{ if eq(parameters.checkoutRef, '') }}:
- gtest dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRef: ${{ parameters.checkoutRef }} dependencySource: tag-builds
dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
gpuTarget: ${{ job.target }} parameters:
os: ${{ job.os }} extraBuildFlags: >-
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
${{ if parameters.triggerDownstreamJobs }}: -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DROCM_PATH=$(Agent.BuildDirectory)/rocm
parameters: -DCMAKE_BUILD_TYPE=Release
os: ${{ job.os }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
extraBuildFlags: >- -DBUILD_CLIENTS_SAMPLES=OFF
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor -DBUILD_CLIENTS_TESTS=ON
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/amdclang++ -DBUILD_CLIENTS_BENCHMARKS=OFF
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/amdclang -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip;$(Agent.BuildDirectory)/rocm/hip/cmake
-DROCM_PATH=$(Agent.BuildDirectory)/rocm -GNinja
-DCMAKE_BUILD_TYPE=Release - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DAMDGPU_TARGETS=${{ job.target }} parameters:
-DBUILD_CLIENTS_SAMPLES=OFF artifactName: rocSPARSE
-DBUILD_CLIENTS_TESTS=ON gpuTarget: $(JOB_GPU_TARGET)
-DBUILD_CLIENTS_BENCHMARKS=OFF publish: false
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip;$(Agent.BuildDirectory)/rocm/hip/cmake - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
-GNinja parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml sourceDir: $(Build.SourcesDirectory)/build/clients
parameters: contentsString: matrices/**
componentName: ${{ parameters.componentName }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
gpuTarget: ${{ job.target }} artifactName: testMatrices
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml gpuTarget: $(JOB_GPU_TARGET)
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
publish: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
parameters:
sourceDir: $(Agent.BuildDirectory)/s/build/clients
contentsString: matrices/**
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
artifactName: testMatrices
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocSPARSE_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: timeoutInMinutes: 90
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} dependsOn: rocSPARSE
timeoutInMinutes: 120 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: rocSPARSE
componentName: ${{ parameters.componentName }} testDir: '$(Agent.BuildDirectory)/rocm/bin'
os: ${{ job.os }} testExecutable: './rocsparse-test'
testDir: '$(Agent.BuildDirectory)/rocm/bin' testParameters: '--gtest_filter="*quick*" --gtest_output=xml:./test_output.xml --gtest_color=yes'
testExecutable: './rocsparse-test'
testParameters: '--gtest_filter="*quick*" --gtest_output=xml:./test_output.xml --gtest_color=yes'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}
- ${{ if parameters.triggerDownstreamJobs }}:
- ${{ each component in parameters.downstreamComponentMatrix }}:
- ${{ if not(and(parameters.unifiedBuild, eq(component.skipUnifiedBuild, 'true'))) }}:
- template: /.azuredevops/components/${{ component.name }}.yml@pipelines_repo
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ component.sparseCheckoutDir }}
buildDependsOn: ${{ component.buildDependsOn }}
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}+${{ parameters.componentName }}
triggerDownstreamJobs: true
unifiedBuild: ${{ parameters.unifiedBuild }}

View File

@@ -1,49 +1,26 @@
parameters: parameters:
- name: componentName
type: string
default: rocThrust
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- git
- ninja-build - ninja-build
- libboost-program-options-dev - libboost-program-options-dev
- googletest
- libfftw3-dev - libfftw3-dev
- git
- python3-pip - python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- clr - clr
- hipRAND
- llvm-project - llvm-project
- rocm-cmake
- rocminfo - rocminfo
- rocPRIM - rocPRIM
- ROCR-Runtime - ROCR-Runtime
@@ -54,142 +31,91 @@ parameters:
- llvm-project - llvm-project
- rocminfo - rocminfo
- rocPRIM - rocPRIM
- rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- hipRAND
- name: jobMatrix - rocprofiler-register
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocThrust
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_${{ job.os }}_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
${{ if eq(job.os, 'almalinux8') }}: JOB_GPU_TARGET: gfx942
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencyList: ${{ parameters.rocmDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: # CI case: download latest default branch build
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ if eq(parameters.checkoutRef, '') }}:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml # manual build case: triggered by ROCm/ROCm repo
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: dependencySource: tag-builds
- gtest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: extraBuildFlags: >-
checkoutRef: ${{ parameters.checkoutRef }} -GNinja
dependencyList: ${{ parameters.rocmDependencies }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
gpuTarget: ${{ job.target }} -DROCM_PATH=$(Agent.BuildDirectory)/rocm
os: ${{ job.os }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
${{ if parameters.triggerDownstreamJobs }}: -DBUILD_TEST=ON
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
os: ${{ job.os }}
consolidateBuildAndInstall: true
extraBuildFlags: >-
-GNinja
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor"
-DAMDGPU_TARGETS=${{ job.target }}
-DBUILD_TEST=ON
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocThrust_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocThrust
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- checkout: none aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: ${{ if eq(parameters.checkoutRef, '') }}:
preTargetFilter: ${{ parameters.componentName }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: rocThrust
componentName: ${{ parameters.componentName }} testDir: '$(Agent.BuildDirectory)/rocm/bin/rocthrust'
testDir: '$(Agent.BuildDirectory)/rocm/bin/rocthrust'
testParameters: '--output-on-failure --force-new-ctest-process --output-junit test_output.xml --exclude-regex "scan.hip"'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,34 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: rocWMMA
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -36,7 +12,6 @@ parameters:
- cmake - cmake
- ninja-build - ninja-build
- libboost-program-options-dev - libboost-program-options-dev
- libdrm-dev
- libgtest-dev - libgtest-dev
- googletest - googletest
- libfftw3-dev - libfftw3-dev
@@ -69,115 +44,90 @@ parameters:
- ROCR-Runtime - ROCR-Runtime
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocWMMA
- job: ${{ parameters.componentName }}_build_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_${{ job.target }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
workspace: JOB_GPU_TARGET: gfx942
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
extraBuildFlags: >- - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm parameters:
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCWMMA_BUILD_TESTS=ON -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DROCWMMA_BUILD_SAMPLES=OFF -DCMAKE_BUILD_TYPE=Release
-DGPU_TARGETS=${{ job.target }} -DROCWMMA_BUILD_TESTS=ON
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DROCWMMA_BUILD_SAMPLES=OFF
-DROCM_PLATFORM_VERSION=$(NEXT_RELEASE_VERSION) -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
-GNinja -GNinja
# gfx1030 not supported in documentation # gfx1030 not supported in documentation
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters: parameters:
componentName: ${{ parameters.componentName }} gpuTarget: $(JOB_GPU_TARGET)
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocWMMA_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: timeoutInMinutes: 90
- job: ${{ parameters.componentName }}_test_${{ job.target }} dependsOn: rocWMMA
timeoutInMinutes: 350 condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml gpuTarget: $(JOB_GPU_TARGET)
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
preTargetFilter: ${{ parameters.componentName }} parameters:
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmTestDependencies }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
componentName: ${{ parameters.componentName }} ${{ elseif ne(parameters.checkoutRef, '') }}:
testDir: '$(Agent.BuildDirectory)/rocm/bin/rocwmma' dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
environment: test componentName: rocWMMA
gpuTarget: ${{ job.target }} testDir: '$(Agent.BuildDirectory)/rocm/bin/rocwmma'

View File

@@ -5,93 +5,46 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- doxygen - doxygen
- doxygen-doc - doxygen-doc
- ninja-build - ninja-build
- python3-sphinx
- name: pipModules - name: pipModules
type: object type: object
default: default:
- cget - cget
- cmake==3.20.5
- ninja - ninja
- rocm-docs-core
- sphinx
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: ubuntu2404, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocm_cmake
- job: rocm_cmake_${{ job.os }} variables:
pool: - group: common
${{ if eq(job.os, 'ubuntu2404') }}: - template: /.azuredevops/variables-global.yml
vmImage: 'ubuntu-24.04' pool:
${{ else }}: vmImage: ${{ variables.BASE_BUILD_POOL }}
vmImage: 'ubuntu-22.04' workspace:
${{ if eq(job.os, 'almalinux8') }}: clean: all
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
variables: aptPackages: ${{ parameters.aptPackages }}
- group: common pipModules: ${{ parameters.pipModules }}
- template: /.azuredevops/variables-global.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
clean: all parameters:
steps: checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: # extra steps for ctest suite
aptPackages: ${{ parameters.aptPackages }} - script: |
pipModules: ${{ parameters.pipModules }} python -m pip install -r $(Build.SourcesDirectory)/docs/requirements.txt
packageManager: ${{ job.packageManager }} python -m pip install -r $(Build.SourcesDirectory)/test/docsphinx/docs/.sphinx/requirements.txt
- task: Bash@3 git config --global user.email "you@example.com"
displayName: Add CMake to PATH git config --global user.name "Your Name"
inputs: displayName: "ctest setup"
targetType: inline - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
script: echo "##vso[task.prependpath]$(python3 -m site --user-base)/bin" parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml componentName: rocm-cmake
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
useAmdclang: false
- task: Bash@3
displayName: CTest setup
inputs:
targetType: inline
script: |
python -m pip install -r $(Build.SourcesDirectory)/docs/requirements.txt
python -m pip install -r $(Build.SourcesDirectory)/test/docsphinx/docs/.sphinx/requirements.txt
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: rocm-cmake
testParameters: '-E "pass-version-parent" --extra-verbose --output-on-failure --force-new-ctest-process --output-junit test_output.xml'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# environment: combined

View File

@@ -1,103 +1,33 @@
parameters: parameters:
- name: componentName
type: string
default: rocm-core
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: ubuntu2404, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocm_core
- job: rocm_core_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
pool: workspace:
${{ if eq(job.os, 'ubuntu2404') }}: clean: all
vmImage: 'ubuntu-24.04' steps:
${{ else }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
vmImage: 'ubuntu-22.04' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
${{ if eq(job.os, 'almalinux8') }}: parameters:
container: checkoutRepo: ${{ parameters.checkoutRepo }}
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
endpoint: ContainerService3 parameters:
variables: extraBuildFlags: >-
- group: common -DCMAKE_CURRENT_BINARY_DIR=$PWD
- template: /.azuredevops/variables-global.yml -DCMAKE_CURRENT_SOURCE_DIR=$PWD/../
workspace: -DCMAKE_VERBOSE_MAKEFILE=1
clean: all -DCPACK_GENERATOR=DEB
steps: -DCPACK_DEBIAN_PACKAGE_RELEASE="local.9999~99.99"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml -DCPACK_RPM_PACKAGE_RELEASE="local.9999"
parameters: -DROCM_VERSION="$(next-release)"
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_CURRENT_BINARY_DIR=$PWD
-DCMAKE_CURRENT_SOURCE_DIR=$PWD/../
-DCMAKE_VERBOSE_MAKEFILE=1
-DCPACK_GENERATOR=DEB
-DCPACK_DEBIAN_PACKAGE_RELEASE="local.9999~99.99"
-DCPACK_RPM_PACKAGE_RELEASE="local.9999"
-DROCM_VERSION="$(NEXT_RELEASE_VERSION)"
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}

View File

@@ -5,51 +5,17 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- libdw-dev
- libglfw3-dev - libglfw3-dev
- libmsgpack-dev
- libopencv-dev
- libtbb-dev
- libtiff-dev
- libva-amdgpu-dev
- libva2-amdgpu
- mesa-amdgpu-va-drivers
- libavcodec-dev
- libavformat-dev
- libavutil-dev
- ninja-build
- python3-pip - python3-pip
- protobuf-compiler
- libprotoc-dev
- libopencv-dev
- name: pipModules
type: object
default:
- future==1.0.0
- pytz==2022.1
- numpy==1.23
- google==3.0.0
- protobuf==3.12.4
- onnx==1.12.0
- nnef==1.0.7
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- AMDMIGraphX - AMDMIGraphX
- aomp
- aomp-extras
- clr - clr
- half
- composable_kernel
- hipBLAS - hipBLAS
- hipBLAS-common - hipBLAS-common
- hipBLASLt - hipBLASLt
@@ -59,37 +25,21 @@ parameters:
- hipRAND - hipRAND
- hipSOLVER - hipSOLVER
- hipSPARSE - hipSPARSE
- hipTensor
- llvm-project - llvm-project
- MIOpen
- MIVisionX
- rocm_smi_lib
- rccl
- rocAL
- rocALUTION
- rocBLAS - rocBLAS
- rocDecode
- rocFFT - rocFFT
- rocJPEG
- rocPRIM - rocPRIM
- rocprofiler-register - rocprofiler-register
- rocprofiler-sdk
- ROCR-Runtime - ROCR-Runtime
- rocRAND - rocRAND
- rocSOLVER - rocSOLVER
- rocSPARSE - rocSPARSE
- rocThrust - rocThrust
- rocWMMA
- rpp
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
- AMDMIGraphX - AMDMIGraphX
- aomp
- aomp-extras
- clr - clr
- half
- composable_kernel
- hipBLAS - hipBLAS
- hipBLAS-common - hipBLAS-common
- hipBLASLt - hipBLASLt
@@ -99,158 +49,121 @@ parameters:
- hipRAND - hipRAND
- hipSOLVER - hipSOLVER
- hipSPARSE - hipSPARSE
- hipTensor
- llvm-project - llvm-project
- MIOpen
- MIVisionX
- rocm_smi_lib
- rccl
- rocAL
- rocALUTION
- rocBLAS - rocBLAS
- rocDecode
- rocFFT - rocFFT
- rocminfo - rocminfo
- rocPRIM - rocPRIM
- rocJPEG
- rocprofiler-register - rocprofiler-register
- rocprofiler-sdk
- ROCR-Runtime - ROCR-Runtime
- rocRAND - rocRAND
- rocSOLVER - rocSOLVER
- rocSPARSE - rocSPARSE
- rocThrust - rocThrust
- roctracer - roctracer
- rocWMMA
- rpp
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocm_examples
- job: rocm_examples_build_${{ job.target }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }}
pool: ${{ variables.MEDIUM_BUILD_POOL }} workspace:
workspace: clean: all
clean: all strategy:
steps: matrix:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml gfx942:
parameters: JOB_GPU_TARGET: gfx942
aptPackages: ${{ parameters.aptPackages }} steps:
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
registerROCmPackages: true parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
cmakeVersion: '3.25.0' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml checkoutRepo: ${{ parameters.checkoutRepo }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
aggregatePipeline: ${{ parameters.aggregatePipeline }} # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
# https://github.com/ROCm/HIP/issues/2203 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
extraBuildFlags: >- parameters:
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ # https://github.com/ROCm/HIP/issues/2203
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm extraBuildFlags: >-
-DROCM_ROOT=$(Agent.BuildDirectory)/rocm -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DAMDGPU_TARGETS=${{ job.target }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_HIP_ARCHITECTURES=${{ job.target }} -DROCM_ROOT=$(Agent.BuildDirectory)/rocm
-DCMAKE_EXE_LINKER_FLAGS=-fgpu-rdc -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
-GNinja -DCMAKE_HIP_ARCHITECTURES=$(JOB_GPU_TARGET)
- task: Bash@3 -DCMAKE_EXE_LINKER_FLAGS=-fgpu-rdc
displayName: Move rocm-examples binaries to rocm/examples - task: Bash@3
inputs: displayName: Move rocm-examples binaries to rocm/examples
targetType: inline inputs:
script: | targetType: inline
mkdir -p $(Build.BinariesDirectory)/examples script: |
mv $(Build.BinariesDirectory)/bin/* $(Build.BinariesDirectory)/examples mkdir -p $(Build.BinariesDirectory)/examples
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml mv $(Build.BinariesDirectory)/bin/* $(Build.BinariesDirectory)/examples
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
gpuTarget: ${{ job.target }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml gpuTarget: $(JOB_GPU_TARGET)
parameters:
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocm_examples_testing
- job: rocm_examples_test_${{ job.target }} dependsOn: rocm_examples
dependsOn: rocm_examples_build_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), - name: TEST_LOG_FILE
eq(${{ parameters.aggregatePipeline }}, False) value: $(Pipeline.Workspace)/rocm-examplesTestLog.log
) pool: $(JOB_TEST_POOL)
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
- name: TEST_LOG_FILE matrix:
value: $(Pipeline.Workspace)/rocm-examplesTestLog.log gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
registerROCmPackages: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml parameters:
parameters: checkoutRepo: ${{ parameters.checkoutRepo }}
cmakeVersion: '3.25.0' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRepo: ${{ parameters.checkoutRepo }} ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }}
dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
# https://github.com/ROCm/HIP/issues/2203 dependencySource: tag-builds
extraBuildFlags: >- - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ parameters:
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm # https://github.com/ROCm/HIP/issues/2203
-DROCM_ROOT=$(Agent.BuildDirectory)/rocm extraBuildFlags: >-
-DAMDGPU_TARGETS=${{ job.target }} -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-DCMAKE_HIP_ARCHITECTURES=${{ job.target }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_EXE_LINKER_FLAGS=-fgpu-rdc -DROCM_ROOT=$(Agent.BuildDirectory)/rocm
-GNinja -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml -DCMAKE_HIP_ARCHITECTURES=$(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml -DCMAKE_EXE_LINKER_FLAGS=-fgpu-rdc
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
componentName: rocm-examples - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
testDir: $(Build.SourcesDirectory)/build parameters:
testParameters: '--output-on-failure --force-new-ctest-process --output-junit test_output.xml' componentName: rocm-examples
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml testDir: $(Build.SourcesDirectory)/build
parameters: reloadAMDGPU: true
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,193 +0,0 @@
parameters:
- name: componentName
type: string
default: rocm_libraries
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- ccache
- gfortran
- git
- libdrm-dev
- liblapack-dev
- libmsgpack-dev
- libnuma-dev
- libopenblas-dev
- ninja-build
- python3-pip
- python3-venv
- googletest
- libgtest-dev
- libgmock-dev
- libboost-filesystem-dev
- name: pipModules
type: object
default:
- msgpack
- joblib
- "packaging>=22.0"
- pytest
- pytest-cmake
- --upgrade
- name: rocmDependencies
type: object
default:
- aomp
- clr
- llvm-project
- rocminfo
- rocm-cmake
- rocm_smi_lib
- rocprofiler-register
- ROCR-Runtime
- roctracer
- name: rocmTestDependencies
type: object
default:
- aomp
- clr
- llvm-project
- rocminfo
- rocm_smi_lib
- rocprofiler-register
- ROCR-Runtime
- roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { pool: rocm-ci_ultra_build_pool, os: ubuntu2204, packageManager: apt, target: gfx942 }
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }}
timeoutInMinutes: 300
${{ if parameters.buildDependsOn }}:
dependsOn:
- ${{ each build in parameters.buildDependsOn }}:
- ${{ build }}_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: DAY_STRING
value: $[format('{0:ddMMyyyy}', pipeline.startTime)]
pool: ${{ job.pool }}
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-cmake-custom.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml
parameters:
dependencyList:
- gtest
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- script: |
mkdir -p $(CCACHE_DIR)
echo "##vso[task.prependpath]/usr/lib/ccache"
displayName: Update path for ccache
- task: Cache@2
displayName: Ccache caching
inputs:
key: rocm-libraries | ${{ job.os }} | ${{ job.target }} | $(DAY_STRING) | $(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
path: $(CCACHE_DIR)
restoreKeys: |
rocm-libraries | ${{ job.os }} | ${{ job.target }} | $(DAY_STRING)
rocm-libraries | ${{ job.os }} | ${{ job.target }}
rocm-libraries | ${{ job.os }}
- task: Bash@3
displayName: Add paths for CMake and Python site-packages binaries
inputs:
targetType: inline
script: |
USER_BASE=$(python3 -m site --user-base)
echo "##vso[task.prependpath]$USER_BASE/bin"
echo "##vso[task.setvariable variable=PytestCmakePath]$USER_BASE/share/Pytest/cmake"
displayName: Set cmake configure paths
- task: Bash@3
displayName: Add ROCm binaries to PATH
inputs:
targetType: inline
script: |
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
extraBuildFlags: >-
-D CMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor;$(PytestCmakePath)
-D CMAKE_INCLUDE_PATH=$(Agent.BuildDirectory)/rocm/llvm/include
-D CMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-D CMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache
-D CMAKE_C_COMPILER_LAUNCHER=ccache
-G Ninja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
gpuTarget: ${{ job.target }}
extraPaths: /home/user/workspace/rocm/llvm/bin:/home/user/workspace/rocm/bin
installLatestCMake: true
extraCopyDirectories:
- deps

View File

@@ -5,12 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -37,17 +31,8 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- job: rocm_bandwidth_test_build - job: rocm_bandwidth_test
variables: variables:
- group: common - group: common
- template: /.azuredevops/variables-global.yml - template: /.azuredevops/variables-global.yml
@@ -70,9 +55,13 @@ jobs:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }} # CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
@@ -80,55 +69,42 @@ jobs:
-DCMAKE_MODULE_PATH=$(Build.SourcesDirectory)/cmake_modules -DCMAKE_MODULE_PATH=$(Build.SourcesDirectory)/cmake_modules
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/include;$(Agent.BuildDirectory)/rocm/include/hsa -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/rocm/include;$(Agent.BuildDirectory)/rocm/include/hsa
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# extraEnvVars:
# - ROCR_INC_DIR:::/home/user/workspace/rocm
# - ROCR_LIB_DIR:::/home/user/workspace/rocm
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocm_bandwidth_test_testing
- job: rocm_bandwidth_test_test_${{ job.target }} dependsOn: rocm_bandwidth_test
dependsOn: rocm_bandwidth_test_build condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
checkoutRef: ${{ parameters.checkoutRef }} gpuTarget: $(JOB_GPU_TARGET)
dependencyList: ${{ parameters.rocmTestDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
componentName: rocm_bandwidth_test - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
testDir: '$(Agent.BuildDirectory)' parameters:
testExecutable: './rocm/bin/rocm-bandwidth-test' componentName: rocm_bandwidth_test
testParameters: '' testDir: '$(Agent.BuildDirectory)'
testPublishResults: false testExecutable: './rocm/bin/rocm-bandwidth-test'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml testParameters: ''
parameters: testPublishResults: false
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,145 +1,55 @@
parameters: parameters:
- name: componentName
type: string
default: rocm_smi_lib
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- libdrm-dev
- ninja-build
- pkg-config
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: ubuntu2404, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocm_smi_lib
- job: rocm_smi_lib_build_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
pool: workspace:
${{ if eq(job.os, 'ubuntu2404') }}: clean: all
vmImage: 'ubuntu-24.04' steps:
${{ else }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
vmImage: 'ubuntu-22.04' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
${{ if eq(job.os, 'almalinux8') }}: parameters:
container: checkoutRepo: ${{ parameters.checkoutRepo }}
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
endpoint: ContainerService3 parameters:
variables: extraBuildFlags: >-
- group: common -DBUILD_TESTS=ON
- template: /.azuredevops/variables-global.yml -DROCM_DEP_ROCMCORE=ON
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DBUILD_TESTS=ON
-DROCM_DEP_ROCMCORE=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocm_smi_lib_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocm_smi_lib
- job: rocm_smi_lib_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: rocm_smi_lib_build_${{ job.os }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- checkout: none - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: runRocminfo: false
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml componentName: rocm_smi_lib
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml testDir: '$(Agent.BuildDirectory)'
parameters: testExecutable: './rocm/share/rocm_smi/rsmitst_tests/rsmitst'
os: ${{ job.os }} testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
parameters:
runRocminfo: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
testDir: '$(Agent.BuildDirectory)'
testExecutable: 'sudo ./rocm/share/rocm_smi/rsmitst_tests/rsmitst'
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,41 +1,10 @@
parameters: parameters:
- name: componentName
type: string
default: rocminfo
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- libdrm-amdgpu-dev
- libdrm-dev
- ninja-build
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -47,129 +16,76 @@ parameters:
- ROCR-Runtime - ROCR-Runtime
- rocprofiler-register - rocprofiler-register
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocminfo
- job: ${{ parameters.componentName }}_build_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
pool: workspace:
vmImage: 'ubuntu-22.04' clean: all
${{ if eq(job.os, 'almalinux8') }}: steps:
container: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
endpoint: ContainerService3 parameters:
variables: checkoutRepo: ${{ parameters.checkoutRepo }}
- group: common - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: /.azuredevops/variables-global.yml parameters:
workspace: dependencyList: ${{ parameters.rocmDependencies }}
clean: all skipLlvmSymlink: true
steps: # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
aptPackages: ${{ parameters.aptPackages }} # manual build case: triggered by ROCm/ROCm repo
packageManager: ${{ job.packageManager }} ${{ elseif ne(parameters.checkoutRef, '') }}:
registerROCmPackages: true dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: extraBuildFlags: >-
checkoutRepo: ${{ parameters.checkoutRepo }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} -DROCRTST_BLD_TYPE=release
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
os: ${{ job.os }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCRTST_BLD_TYPE=release
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocminfo_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocminfo
- job: rocminfo_test_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: rocminfo_build_${{ job.os }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} dependencyList: ${{ parameters.rocmTestDependencies }}
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
registerROCmPackages: true ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
os: ${{ job.os }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters:
parameters: runRocminfo: false
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
dependencyList: ${{ parameters.rocmTestDependencies }} parameters:
gpuTarget: ${{ job.target }} componentName: rocminfo
os: ${{ job.os }} testDir: '$(Agent.BuildDirectory)'
${{ if parameters.triggerDownstreamJobs }}: testExecutable: './rocm/bin/rocminfo'
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} testParameters: ''
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml testPublishResults: false
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
runRocminfo: false parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml componentName: rocm_agent_enumerator
parameters: testDir: '$(Agent.BuildDirectory)'
componentName: ${{ parameters.componentName }} testExecutable: './rocm/bin/rocm_agent_enumerator'
testDir: '$(Agent.BuildDirectory)' testParameters: ''
testExecutable: './rocm/bin/rocminfo' testPublishResults: false
testParameters: ''
testPublishResults: false
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: rocm_agent_enumerator
testDir: '$(Agent.BuildDirectory)'
testExecutable: './rocm/bin/rocm_agent_enumerator'
testParameters: ''
testPublishResults: false
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
registerROCmPackages: true
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,238 +0,0 @@
parameters:
- name: componentName
type: string
default: rocprofiler-compute
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- libdw-dev
- libtbb-dev
- locales
- ninja-build
- python3-pip
- name: pipModules
type: object
default:
- astunparse==1.6.2
- colorlover
- dash-bootstrap-components
- dash-svg
- "dash>=3.0.0"
- kaleido==0.2.1
- matplotlib
- "numpy>=1.17.5"
- "pandas>=1.4.3"
- plotext
- plotille
- pymongo
- pyyaml
- setuptools
- sqlalchemy
- tabulate
- textual
- textual_plotext
- textual-fspicker
- tqdm
- mock
- pytest
- pytest-cov
- pytest-xdist
- name: rocmDependencies
type: object
default:
- clr
- llvm-project
- ROCR-Runtime
- rocprofiler-sdk
- name: rocmTestDependencies
type: object
default:
- amdsmi
- clr
- llvm-project
- rocm-cmake
- rocm-core
- rocminfo
- rocm_smi_lib
- ROCR-Runtime
- rocprofiler
- rocprofiler-sdk
- rocprofiler-register
- roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: rocprofiler_compute_build_${{ job.target }}
${{ if parameters.buildDependsOn }}:
dependsOn:
- ${{ each build in parameters.buildDependsOn }}:
- ${{ build }}_${{ job.target }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: ROCM_PATH
value: $(Agent.BuildDirectory)/rocm
pool:
vmImage: ${{ variables.BASE_BUILD_POOL }}
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: ${{ job.target }}
aggregatePipeline: ${{ parameters.aggregatePipeline }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
extraBuildFlags: >-
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# gpuTarget: ${{ job.target }}
- ${{ if eq(parameters.unifiedBuild, False) }}:
- ${{ each job in parameters.jobMatrix.testJobs }}:
- job: rocprofiler_compute_test_${{ job.target }}
timeoutInMinutes: 120
dependsOn: rocprofiler_compute_build_${{ job.target }}
condition:
and(succeeded(),
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'),
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')),
eq(${{ parameters.aggregatePipeline }}, False)
)
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: PYTHON_VERSION
value: 3.10
pool: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
parameters:
preTargetFilter: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmTestDependencies }}
gpuTarget: ${{ job.target }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- task: Bash@3
displayName: Add en_US.UTF-8 locale
inputs:
targetType: inline
script: |
sudo locale-gen en_US.UTF-8
sudo update-locale
locale -a
- task: Bash@3
displayName: Add ROCm binaries to PATH
inputs:
targetType: inline
script: |
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
extraBuildFlags: >-
-DCMAKE_HIP_ARCHITECTURES=${{ job.target }}
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_BUILD_TYPE=Release
-DENABLE_TESTS=ON
-DINSTALL_TESTS=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
testDir: $(Build.BinariesDirectory)/libexec/rocprofiler-compute
testExecutable: ROCM_PATH=$(Agent.BuildDirectory)/rocm ctest
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -1,104 +1,37 @@
parameters: parameters:
- name: componentName
type: string
default: rocprofiler-register
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages
type: object
default:
- cmake
- ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: ubuntu2404, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocprofiler_register
- job: rocprofiler_register_${{ job.os }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os }} vmImage: ${{ variables.BASE_BUILD_POOL }}
pool: workspace:
${{ if eq(job.os, 'ubuntu2404') }}: clean: all
vmImage: 'ubuntu-24.04' steps:
${{ else }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
vmImage: 'ubuntu-22.04' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
${{ if eq(job.os, 'almalinux8') }}: parameters:
container: checkoutRepo: ${{ parameters.checkoutRepo }}
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
endpoint: ContainerService3 parameters:
variables: componentName: rocprofiler-register
- group: common - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- template: /.azuredevops/variables-global.yml parameters:
workspace: componentName: rocprofiler-register-tests
clean: all extraBuildFlags: >-
steps: -DCMAKE_PREFIX_PATH=$(Build.BinariesDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml cmakeBuildDir: 'tests/build'
parameters: installEnabled: false
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml componentName: rocprofiler-register
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml testDir: 'tests/build'
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
checkoutRepo: ${{ parameters.checkoutRepo }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Build.BinariesDirectory)
-DROCPROFILER_REGISTER_BUILD_TESTS=ON
-DROCPROFILER_REGISTER_BUILD_SAMPLES=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
testDir: $(Agent.BuildDirectory)/s/build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# environment: combined

View File

@@ -1,48 +1,18 @@
parameters: parameters:
- name: componentName
type: string
default: rocprofiler-sdk
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- build-essential
- cmake - cmake
- libdrm-amdgpu-dev - python3-pip
- libdrm-dev - libdrm-dev
- libdw-dev - libdw-dev
- libelf-dev - libelf-dev
- libsqlite3-dev
- libva-dev
- ninja-build
- pkg-config
- python3-pip
- name: pipModules - name: pipModules
type: object type: object
default: default:
@@ -57,17 +27,14 @@ parameters:
- pandas - pandas
- perfetto - perfetto
- pycobertura - pycobertura
- "pytest>=6.2.5" - pytest
- pyyaml - pyyaml
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- aomp
- clr - clr
- llvm-project - llvm-project
- rccl - rccl
- rocDecode
- rocJPEG
- rocm-cmake - rocm-cmake
- rocm-core - rocm-core
- rocminfo - rocminfo
@@ -75,157 +42,52 @@ parameters:
- rocprofiler-register - rocprofiler-register
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocprofilersdk
- job: rocprofiler_sdk_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool:
- ${{ build }}_${{ job.os}}_${{ job.target }} vmImage: ${{ variables.BASE_BUILD_POOL }}
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
pool: ${{ variables.MEDIUM_BUILD_POOL }} matrix:
${{ if eq(job.os, 'almalinux8') }}: gfx942:
container: JOB_GPU_TARGET: gfx942
image: rocmexternalcicd.azurecr.io/manylinux228:latest steps:
endpoint: ContainerService3 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
workspace: parameters:
clean: all aptPackages: ${{ parameters.aptPackages }}
steps: pipModules: ${{ parameters.pipModules }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
pipModules: ${{ parameters.pipModules }} checkoutRepo: ${{ parameters.checkoutRepo }}
packageManager: ${{ job.packageManager }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
registerROCmPackages: true parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencySource: tag-builds
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} # CI case: download latest default branch build
dependencyList: ${{ parameters.rocmDependencies }} ${{ if eq(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: staging
gpuTarget: ${{ job.target }} # manual build case: triggered by ROCm/ROCm repo
aggregatePipeline: ${{ parameters.aggregatePipeline }} ${{ elseif ne(parameters.checkoutRef, '') }}:
${{ if parameters.triggerDownstreamJobs }}: dependencySource: tag-builds
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- task: Bash@3 parameters:
displayName: Add Python site-packages binaries to path extraBuildFlags: >-
inputs: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
targetType: inline -DROCPROFILER_BUILD_TESTS=ON
script: | -DROCPROFILER_BUILD_SAMPLES=OFF
USER_BASE=$(python3 -m site --user-base) -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
echo "##vso[task.prependpath]$USER_BASE/bin" multithreadFlag: -- -j2
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters: parameters:
componentName: ${{ parameters.componentName }} gpuTarget: $(JOB_GPU_TARGET)
os: ${{ job.os }}
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCPROFILER_BUILD_TESTS=ON
-DROCPROFILER_BUILD_SAMPLES=ON
-DROCPROFILER_BUILD_RELEASE=ON
-DGPU_TARGETS=${{ job.target }}
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# gpuTarget: ${{ job.target }}
# registerROCmPackages: true
- ${{ if eq(parameters.unifiedBuild, False) }}:
- ${{ each job in parameters.jobMatrix.testJobs }}:
- job: rocprofiler_sdk_test_${{ job.os }}_${{ job.target }}
dependsOn: rocprofiler_sdk_build_${{ job.os }}_${{ job.target }}
condition:
and(succeeded(),
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'),
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')),
eq(${{ parameters.aggregatePipeline }}, False)
)
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
packageManager: ${{ job.packageManager }}
registerROCmPackages: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- task: Bash@3
displayName: Add Python and ROCm binaries to path
inputs:
targetType: inline
script: |
USER_BASE=$(python3 -m site --user-base)
echo "##vso[task.prependpath]$USER_BASE/bin"
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCPROFILER_BUILD_TESTS=ON
-DROCPROFILER_BUILD_SAMPLES=ON
-DROCPROFILER_BUILD_RELEASE=ON
-DGPU_TARGETS=${{ job.target }}
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH}}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
testDir: $(Agent.BuildDirectory)/build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
registerROCmPackages: true

View File

@@ -6,30 +6,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: componentName
type: string
default: rocprofiler-systems
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -40,29 +16,19 @@ parameters:
- bzip2 - bzip2
- clang - clang
- cmake - cmake
- chrpath
- environment-modules - environment-modules
- ffmpeg
- g++-12 - g++-12
- libavcodec-dev
- libavformat-dev
- libavutil-dev
- libdrm-amdgpu-dev
- libdrm-dev - libdrm-dev
- libdw-dev
- libfabric-dev - libfabric-dev
- libiberty-dev - libiberty-dev
- libpapi-dev - libpapi-dev
- libpfm4-dev - libpfm4-dev
- libtool - libtool
- libopenmpi-dev - libopenmpi-dev
- libsqlite3-dev
- m4 - m4
- ninja-build
- openmpi-bin - openmpi-bin
- pkg-config
- python3-pip
- software-properties-common - software-properties-common
- python3-pip
- texinfo - texinfo
- zlib1g-dev - zlib1g-dev
- name: pipModules - name: pipModules
@@ -74,198 +40,100 @@ parameters:
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- amdsmi
- aomp
- clr - clr
- llvm-project - llvm-project
- rccl - rccl
- rocDecode
- rocJPEG
- rocm-core - rocm-core
- rocminfo
- rocm_smi_lib - rocm_smi_lib
- rocprofiler-register - rocminfo
- rocprofiler-sdk
- ROCR-Runtime - ROCR-Runtime
- rocprofiler
- rocprofiler-register
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocprofiler_systems
- job: rocprofiler_systems_build_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: pool: ${{ variables.MEDIUM_BUILD_POOL }}
- ${{ build }}_${{ job.os }} workspace:
variables: clean: all
- group: common strategy:
- template: /.azuredevops/variables-global.yml matrix:
- name: ROCM_PATH gfx942:
value: $(Agent.BuildDirectory)/rocm JOB_GPU_TARGET: gfx942
pool: ${{ variables.MEDIUM_BUILD_POOL }} steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml pipModules: ${{ parameters.pipModules }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
pipModules: ${{ parameters.pipModules }} parameters:
registerROCmPackages: true checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
checkoutRepo: ${{ parameters.checkoutRepo }} gpuTarget: $(JOB_GPU_TARGET)
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: # manual build case: triggered by ROCm/ROCm repo
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - task: Bash@3
aggregatePipeline: ${{ parameters.aggregatePipeline }} displayName: ROCm symbolic link
- task: Bash@3 inputs:
displayName: Add ROCm binaries to PATH targetType: inline
inputs: script: |
targetType: inline sudo rm -rf /opt/rocm
script: | sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin" - task: Bash@3
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin" displayName: Add ROCm binaries to PATH
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml inputs:
parameters: targetType: inline
# build flags reference: https://rocm.docs.amd.com/projects/omnitrace/en/latest/install/install.html script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
extraBuildFlags: >- - task: Bash@3
-DROCPROFSYS_BUILD_TESTING=ON displayName: Add ROCm compilers to PATH
-DROCPROFSYS_BUILD_DYNINST=ON inputs:
-DROCPROFSYS_BUILD_LIBUNWIND=ON targetType: inline
-DROCPROFSYS_DISABLE_EXAMPLES="openmp-target" script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
-DDYNINST_BUILD_TBB=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DDYNINST_BUILD_ELFUTILS=ON parameters:
-DDYNINST_BUILD_LIBIBERTY=ON # build flags reference: https://rocm.docs.amd.com/projects/omnitrace/en/latest/install/install.html
-DDYNINST_BUILD_BOOST=ON extraBuildFlags: >-
-DROCPROFSYS_USE_PAPI=ON -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCPROFSYS_USE_MPI=ON -DROCPROFSYS_BUILD_TESTING=ON
-DCMAKE_CXX_FLAGS=-I$(Agent.BuildDirectory)/rocm/include/rocjpeg -DROCPROFSYS_BUILD_DYNINST=ON
-DGPU_TARGETS=${{ job.target }} -DROCPROFSYS_BUILD_LIBUNWIND=ON
-GNinja -DDYNINST_BUILD_TBB=ON
componentName: ${{ parameters.componentName }} -DDYNINST_BUILD_ELFUTILS=ON
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DDYNINST_BUILD_LIBIBERTY=ON
parameters: -DDYNINST_BUILD_BOOST=ON
gpuTarget: ${{ job.target }} -DROCPROFSYS_USE_PAPI=ON
componentName: ${{ parameters.componentName }} -DROCPROFSYS_USE_MPI=ON
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml multithreadFlag: -- -j32
parameters: - task: Bash@3
gpuTarget: ${{ job.target }} displayName: Set up rocprofiler-systems env
componentName: ${{ parameters.componentName }} inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml targetType: inline
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml script: source share/rocprofiler-systems/setup-env.sh
parameters: workingDirectory: build
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
pipModules: ${{ parameters.pipModules }} parameters:
gpuTarget: ${{ job.target }} componentName: rocprofiler-systems
registerROCmPackages: true - task: Bash@3
extraPaths: /home/user/workspace/rocm/bin:/home/user/workspace/rocm/llvm/bin displayName: Remove ROCm binaries from PATH
inputs:
- ${{ if eq(parameters.unifiedBuild, False) }}: targetType: inline
- ${{ each job in parameters.jobMatrix.testJobs }}: script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/bin;;' -e 's;^/;;' -e 's;/$;;')"
- job: rocprofiler_systems_test_${{ job.target }} - task: Bash@3
dependsOn: rocprofiler_systems_build_${{ job.target }} displayName: Remove ROCm compilers from PATH
condition: inputs:
and(succeeded(), targetType: inline
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/llvm/bin;;' -e 's;^/;;' -e 's;/$;;')"
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
eq(${{ parameters.aggregatePipeline }}, False) parameters:
) gpuTarget: $(JOB_GPU_TARGET)
timeoutInMinutes: 180
variables:
- group: common
- template: /.azuredevops/variables-global.yml
- name: ROCM_PATH
value: $(Agent.BuildDirectory)/rocm
pool:
name: ${{ job.target }}_test_pool
workspace:
clean: all
steps:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
registerROCmPackages: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters:
checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: ${{ job.target }}
${{ if parameters.triggerDownstreamJobs }}:
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }}
- task: Bash@3
displayName: Add ROCm binaries to PATH
inputs:
targetType: inline
script: |
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin"
echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin"
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
cmakeSourceDir: $(Agent.BuildDirectory)/s/projects/rocprofiler-systems
# build flags reference: https://rocm.docs.amd.com/projects/omnitrace/en/latest/install/install.html
extraBuildFlags: >-
-DCMAKE_INSTALL_PREFIX=$(Agent.BuildDirectory)/rocprofiler-systems
-DROCPROFSYS_USE_PYTHON=ON
-DROCPROFSYS_BUILD_TESTING=ON
-DROCPROFSYS_BUILD_DYNINST=ON
-DROCPROFSYS_BUILD_LIBUNWIND=ON
-DROCPROFSYS_DISABLE_EXAMPLES="openmp-target"
-DDYNINST_BUILD_TBB=ON
-DDYNINST_BUILD_ELFUTILS=ON
-DDYNINST_BUILD_LIBIBERTY=ON
-DDYNINST_BUILD_BOOST=ON
-DROCPROFSYS_USE_PAPI=ON
-DROCPROFSYS_USE_MPI=ON
-DCMAKE_CXX_FLAGS=-I$(Agent.BuildDirectory)/rocm/include/rocjpeg
-DGPU_TARGETS=${{ job.target }}
-GNinja
- task: Bash@3
displayName: Set up rocprofiler-systems env
inputs:
targetType: inline
script: source $(Agent.BuildDirectory)/rocprofiler-systems/share/rocprofiler-systems/setup-env.sh
workingDirectory: $(Agent.BuildDirectory)/rocprofiler-systems/share/rocprofiler-systems
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters:
componentName: ${{ parameters.componentName }}
testDir: $(Agent.BuildDirectory)/s/build/tests/
testParameters: '--output-on-failure'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
registerROCmPackages: true
gpuTarget: ${{ job.target }}
extraPaths: /home/user/workspace/rocm/bin:/home/user/workspace/rocm/llvm/bin

View File

@@ -1,39 +1,15 @@
parameters: parameters:
- name: componentName
type: string
default: rocprofiler
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- libgtest-dev
- libdrm-dev - libdrm-dev
- libdw-dev - libdw-dev
- libsystemd-dev - libsystemd-dev
@@ -44,13 +20,13 @@ parameters:
- name: pipModules - name: pipModules
type: object type: object
default: default:
- barectf
- Cppheaderparser
- lxml
- matplotlib
- pandas
- pyyaml==5.3.1 - pyyaml==5.3.1
- Cppheaderparser
- websockets - websockets
- matplotlib
- lxml
- barectf
- pandas
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -59,175 +35,121 @@ parameters:
- ROCdbgapi - ROCdbgapi
- rocm-cmake - rocm-cmake
- rocm-core - rocm-core
- rocminfo
- rocm_smi_lib - rocm_smi_lib
- rocprofiler-register - rocminfo
- ROCR-Runtime - ROCR-Runtime
- rocprofiler-register
- roctracer - roctracer
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rocprofiler
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Agent.BuildDirectory)/rocm
variables: - name: ROCM_PATH
- group: common value: $(Agent.BuildDirectory)/rocm
- template: /.azuredevops/variables-global.yml pool: ${{ variables.MEDIUM_BUILD_POOL }}
- name: HIP_ROCCLR_HOME workspace:
value: $(Agent.BuildDirectory)/rocm clean: all
- name: ROCM_PATH strategy:
value: $(Agent.BuildDirectory)/rocm matrix:
pool: ${{ variables.MEDIUM_BUILD_POOL }} gfx942:
${{ if eq(job.os, 'almalinux8') }}: JOB_GPU_TARGET: gfx942
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all pipModules: ${{ parameters.pipModules }}
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} checkoutRepo: ${{ parameters.checkoutRepo }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
packageManager: ${{ job.packageManager }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml dependencySource: staging
parameters: ${{ elseif ne(parameters.checkoutRef, '') }}:
checkoutRepo: ${{ parameters.checkoutRepo }} dependencySource: tag-builds
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml parameters:
parameters: dependencyList: ${{ parameters.rocmDependencies }}
dependencyList: gpuTarget: $(JOB_GPU_TARGET)
- gtest # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
os: ${{ job.os }} # manual build case: triggered by ROCm/ROCm repo
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
parameters: dependencySource: tag-builds
checkoutRef: ${{ parameters.checkoutRef }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
dependencyList: ${{ parameters.rocmDependencies }} parameters:
gpuTarget: ${{ job.target }} extraBuildFlags: >-
os: ${{ job.os }} -DCMAKE_MODULE_PATH=$(Build.SourcesDirectory)/cmake_modules;$(Agent.BuildDirectory)/rocm/lib/cmake;$(Agent.BuildDirectory)/rocm/lib/cmake/hip
aggregatePipeline: ${{ parameters.aggregatePipeline }} -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
${{ if parameters.triggerDownstreamJobs }}: -DENABLE_LDCONFIG=OFF
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DUSE_PROF_API=1
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DGPU_TARGETS=$(JOB_GPU_TARGET)
parameters: -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
os: ${{ job.os }} multithreadFlag: -- -j32
useAmdclang: false - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
extraBuildFlags: >- parameters:
-DCMAKE_MODULE_PATH=$(Build.SourcesDirectory)/cmake_modules;$(Agent.BuildDirectory)/rocm/lib/cmake;$(Agent.BuildDirectory)/rocm/lib/cmake/hip;$(Agent.BuildDirectory)/rocm/lib64/cmake;$(Agent.BuildDirectory)/rocm/lib64/cmake/hip gpuTarget: $(JOB_GPU_TARGET)
-DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm;$(Agent.BuildDirectory)/vendor"
-DROCM_PATH=$(Agent.BuildDirectory)/rocm
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DENABLE_LDCONFIG=OFF
-DUSE_PROF_API=1
-DGPU_TARGETS=${{ job.target }}
multithreadFlag: -- -j32
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
gpuTarget: ${{ job.target }}
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.os, 'ubuntu2204') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
gpuTarget: ${{ job.target }}
extraEnvVars:
- HIP_ROCCLR_HOME:::/home/user/workspace/rocm
- ROCM_PATH:::/home/user/workspace/rocm
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: rocprofiler_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: rocprofiler
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
- name: ROCM_PATH JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
value: $(Agent.BuildDirectory)/rocm steps:
- name: LD_LIBRARY_PATH - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
value: $(Agent.BuildDirectory)/rocm/lib/rocprofiler:$(Agent.BuildDirectory)/rocm/share/rocprofiler/tests-v1/test:$(Agent.BuildDirectory)/rocm/share/rocprofiler/tests parameters:
pool: ${{ job.target }}_test_pool aptPackages: ${{ parameters.aptPackages }}
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
steps: parameters:
- checkout: none gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} ${{ if eq(parameters.checkoutRef, '') }}:
packageManager: ${{ job.packageManager }} dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml dependencySource: tag-builds
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
preTargetFilter: ${{ parameters.componentName }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmDependencies }}
os: ${{ job.os }} gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
os: ${{ job.os }} ${{ elseif ne(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: tag-builds
parameters: - task: Bash@3
checkoutRef: ${{ parameters.checkoutRef }} displayName: Setup test environment
dependencyList: ${{ parameters.rocmDependencies }} inputs:
gpuTarget: ${{ job.target }} targetType: inline
os: ${{ job.os }} script: |
${{ if parameters.triggerDownstreamJobs }}: sudo rm -rf /opt/rocm
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
parameters: parameters:
componentName: rocprofilerV1 componentName: rocprofilerV1
testDir: $(Agent.BuildDirectory)/rocm/share/rocprofiler/tests-v1 testExecutable: LD_LIBRARY_PATH="$(Agent.BuildDirectory)/rocm/lib/rocprofiler:$(Agent.BuildDirectory)/rocm/share/rocprofiler/tests-v1/test" ./run.sh
testExecutable: ./run.sh testDir: $(Agent.BuildDirectory)/rocm/share/rocprofiler/tests-v1
testParameters: '' testParameters: ''
testPublishResults: false testPublishResults: false
os: ${{ job.os }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters:
parameters: componentName: rocprofilerV2
componentName: rocprofilerV2 testExecutable: LD_LIBRARY_PATH="$(Agent.BuildDirectory)/rocm/lib/rocprofiler:$(Agent.BuildDirectory)/rocm/share/rocprofiler/tests" share/rocprofiler/tests/runUnitTests
testDir: $(Agent.BuildDirectory)/rocm testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
testExecutable: share/rocprofiler/tests/runUnitTests testDir: $(Agent.BuildDirectory)/rocm
testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes'
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}

View File

@@ -5,11 +5,6 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
@@ -19,7 +14,6 @@ parameters:
- libdw-dev - libdw-dev
- libstdc++-12-dev - libstdc++-12-dev
- python-is-python3 - python-is-python3
- python3-pip
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -40,17 +34,8 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- job: rocr_debug_agent_build - job: rocr_debug_agent
variables: variables:
- group: common - group: common
- template: /.azuredevops/variables-global.yml - template: /.azuredevops/variables-global.yml
@@ -68,9 +53,13 @@ jobs:
checkoutRepo: ${{ parameters.checkoutRepo }} checkoutRepo: ${{ parameters.checkoutRepo }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
checkoutRef: ${{ parameters.checkoutRef }}
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
aggregatePipeline: ${{ parameters.aggregatePipeline }} # CI case: download latest default branch build
${{ if eq(parameters.checkoutRef, '') }}:
dependencySource: staging
# manual build case: triggered by ROCm/ROCm repo
${{ elseif ne(parameters.checkoutRef, '') }}:
dependencySource: tag-builds
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
extraBuildFlags: >- extraBuildFlags: >-
@@ -79,57 +68,54 @@ jobs:
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DROCM_PATH=$(Agent.BuildDirectory)/rocm -DROCM_PATH=$(Agent.BuildDirectory)/rocm
-GNinja -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rocr_debug_agent_testing
- job: rocr_debug_agent_test_${{ job.target }} dependsOn: rocr_debug_agent
dependsOn: rocr_debug_agent_build condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), pool: $(JOB_TEST_POOL)
eq(${{ parameters.aggregatePipeline }}, False) workspace:
) clean: all
variables: strategy:
- group: common matrix:
- template: /.azuredevops/variables-global.yml gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters:
parameters: dependencyList: ${{ parameters.rocmTestDependencies }}
componentName: rocr_debug_agent-tests gpuTarget: $(JOB_GPU_TARGET)
extraBuildFlags: >- ${{ if eq(parameters.checkoutRef, '') }}:
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake;$(Agent.BuildDirectory)/rocm/lib/cmake/hip dependencySource: staging
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm ${{ elseif ne(parameters.checkoutRef, '') }}:
-DROCM_PATH=$(Agent.BuildDirectory)/rocm dependencySource: tag-builds
cmakeBuildDir: '$(Agent.BuildDirectory)/rocm/src/rocm-debug-agent-test' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
cmakeSourceDir: '.' parameters:
installEnabled: false componentName: rocr_debug_agent-tests
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml extraBuildFlags: >-
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake;$(Agent.BuildDirectory)/rocm/lib/cmake/hip
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
componentName: rocr_debug_agent -DROCM_PATH=$(Agent.BuildDirectory)/rocm
testDir: '$(Agent.BuildDirectory)/rocm/src/rocm-debug-agent-test' cmakeBuildDir: '$(Agent.BuildDirectory)/rocm/src/rocm-debug-agent-test'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml cmakeSourceDir: '.'
parameters: installEnabled: false
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
environment: test - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
gpuTarget: ${{ job.target }} parameters:
componentName: rocr_debug_agent
testDir: '$(Agent.BuildDirectory)/rocm/src/rocm-debug-agent-test'

View File

@@ -1,43 +1,17 @@
parameters: parameters:
- name: componentName
type: string
default: roctracer
- name: checkoutRepo - name: checkoutRepo
type: string type: string
default: 'self' default: 'self'
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# monorepo related parameters
- name: sparseCheckoutDir
type: string
default: ''
- name: triggerDownstreamJobs
type: boolean
default: false
- name: downstreamAggregateNames
type: string
default: ''
- name: buildDependsOn
type: object
default: null
- name: unifiedBuild
type: boolean
default: false
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake - cmake
- ninja-build
- doxygen - doxygen
- graphviz - graphviz
- libdrm-amdgpu-dev
- ninja-build
- zlib1g-dev
- name: pipModules - name: pipModules
type: object type: object
default: default:
@@ -60,146 +34,95 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
testJobs:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: roctracer
- job: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
${{ if parameters.buildDependsOn }}: - group: common
dependsOn: - template: /.azuredevops/variables-global.yml
- ${{ each build in parameters.buildDependsOn }}: - name: HIP_ROCCLR_HOME
- ${{ build }}_${{ job.os }}_${{ job.target }} value: $(Build.BinariesDirectory)/rocm
variables: pool:
- group: common vmImage: ${{ variables.BASE_BUILD_POOL }}
- template: /.azuredevops/variables-global.yml workspace:
pool: clean: all
vmImage: ${{ variables.BASE_BUILD_POOL }} strategy:
${{ if eq(job.os, 'almalinux8') }}: matrix:
container: gfx942:
image: rocmexternalcicd.azurecr.io/manylinux228:latest JOB_GPU_TARGET: gfx942
endpoint: ContainerService3 steps:
workspace: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
clean: all parameters:
steps: aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml pipModules: ${{ parameters.pipModules }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
pipModules: ${{ parameters.pipModules }} parameters:
packageManager: ${{ job.packageManager }} checkoutRepo: ${{ parameters.checkoutRepo }}
registerROCmPackages: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml dependencyList: ${{ parameters.rocmDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRepo: ${{ parameters.checkoutRepo }} # CI case: download latest default branch build
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} ${{ if eq(parameters.checkoutRef, '') }}:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencySource: staging
parameters: # manual build case: triggered by ROCm/ROCm repo
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
aggregatePipeline: ${{ parameters.aggregatePipeline }} parameters:
os: ${{ job.os }} extraBuildFlags: >-
${{ if parameters.triggerDownstreamJobs }}: -DCMAKE_BUILD_TYPE=release
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} -DROCM_PATH=$(Agent.BuildDirectory)/rocm
# the linker flags will not affect ubuntu2204 builds as the paths do not exist -DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
parameters: -DGPU_TARGETS=$(JOB_GPU_TARGET)
os: ${{ job.os }} -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
useAmdclang: false -GNinja
extraBuildFlags: >- - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
-DCMAKE_BUILD_TYPE=release parameters:
-DROCM_PATH=$(Agent.BuildDirectory)/rocm gpuTarget: $(JOB_GPU_TARGET)
-DCMAKE_MODULE_PATH=$(Agent.BuildDirectory)/rocm/lib/cmake/hip;$(Agent.BuildDirectory)/rocm/lib64/cmake/hip
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
-DGPU_TARGETS=${{ job.target }}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters:
componentName: ${{ parameters.componentName }}
sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
componentName: ${{ parameters.componentName }}
os: ${{ job.os }}
gpuTarget: ${{ job.target }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
# parameters:
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# gpuTarget: ${{ job.target }}
# registerROCmPackages: true
- ${{ if eq(parameters.unifiedBuild, False) }}: - job: roctracer_testing
- ${{ each job in parameters.jobMatrix.testJobs }}: dependsOn: roctracer
- job: ${{ parameters.componentName }}_test_${{ job.os }}_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
dependsOn: ${{ parameters.componentName }}_build_${{ job.os }}_${{ job.target }} variables:
condition: - group: common
and(succeeded(), - template: /.azuredevops/variables-global.yml
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), pool: $(JOB_TEST_POOL)
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), '${{ parameters.componentName }}')), workspace:
eq(${{ parameters.aggregatePipeline }}, False) clean: all
) strategy:
variables: matrix:
- group: common gfx942:
- template: /.azuredevops/variables-global.yml JOB_GPU_TARGET: gfx942
pool: ${{ job.target }}_test_pool JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
workspace: steps:
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
steps: parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml aptPackages: ${{ parameters.aptPackages }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
pipModules: ${{ parameters.pipModules }} parameters:
packageManager: ${{ job.packageManager }} gpuTarget: $(JOB_GPU_TARGET)
registerROCmPackages: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
preTargetFilter: ${{ parameters.componentName }} ${{ elseif ne(parameters.checkoutRef, '') }}:
gpuTarget: ${{ job.target }} dependencySource: tag-builds
os: ${{ job.os }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml dependencyList: ${{ parameters.rocmTestDependencies }}
parameters: gpuTarget: $(JOB_GPU_TARGET)
checkoutRef: ${{ parameters.checkoutRef }} ${{ if eq(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: staging
gpuTarget: ${{ job.target }} ${{ elseif ne(parameters.checkoutRef, '') }}:
os: ${{ job.os }} dependencySource: tag-builds
${{ if parameters.triggerDownstreamJobs }}: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
downstreamAggregateNames: ${{ parameters.downstreamAggregateNames }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml componentName: roctracer
parameters: testExecutable: $(Agent.BuildDirectory)/rocm/share/roctracer/run_tests.sh
componentName: ${{ parameters.componentName }} testParameters: ''
testExecutable: $(Agent.BuildDirectory)/rocm/share/roctracer/run_tests.sh testDir: $(Agent.BuildDirectory)
testParameters: '' testPublishResults: false
testDir: $(Agent.BuildDirectory)
testPublishResults: false
os: ${{ job.os }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }}
environment: test
gpuTarget: ${{ job.target }}
registerROCmPackages: true

View File

@@ -5,22 +5,16 @@ parameters:
- name: checkoutRef - name: checkoutRef
type: string type: string
default: '' default: ''
# set to true if doing full build of ROCm stack
# and dependencies are pulled from same pipeline
- name: aggregatePipeline
type: boolean
default: false
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- clang
- cmake - cmake
- imagemagick
- libopencv-dev - libopencv-dev
- libsndfile1-dev - libsndfile1-dev
- libstdc++-12-dev - libstdc++-12-dev
- imagemagick
- ninja-build - ninja-build
- python3-pip - clang
- name: pipModules - name: pipModules
type: object type: object
default: default:
@@ -34,7 +28,6 @@ parameters:
- clr - clr
- half - half
- llvm-project - llvm-project
- rocm-cmake
- rocminfo - rocminfo
- ROCR-Runtime - ROCR-Runtime
- name: rocmTestDependencies - name: rocmTestDependencies
@@ -50,151 +43,138 @@ parameters:
- rocprofiler-register - rocprofiler-register
- ROCR-Runtime - ROCR-Runtime
- name: jobMatrix
type: object
default:
buildJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
testJobs:
- gfx942:
target: gfx942
- gfx90a:
target: gfx90a
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: rpp
- job: rpp_build_${{ job.target }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool:
- name: ROCM_PATH vmImage: ${{ variables.BASE_BUILD_POOL }}
value: $(Agent.BuildDirectory)/rocm workspace:
pool: clean: all
vmImage: ${{ variables.BASE_BUILD_POOL }} strategy:
workspace: matrix:
clean: all gfx942:
steps: JOB_GPU_TARGET: gfx942
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml steps:
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
aptPackages: ${{ parameters.aptPackages }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml aptPackages: ${{ parameters.aptPackages }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml
checkoutRepo: ${{ parameters.checkoutRepo }} parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml checkoutRepo: ${{ parameters.checkoutRepo }}
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
checkoutRef: ${{ parameters.checkoutRef }} parameters:
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
gpuTarget: ${{ job.target }} gpuTarget: $(JOB_GPU_TARGET)
aggregatePipeline: ${{ parameters.aggregatePipeline }} # CI case: download latest default branch build
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
extraBuildFlags: >- # manual build case: triggered by ROCm/ROCm repo
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ ${{ elseif ne(parameters.checkoutRef, '') }}:
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang dependencySource: tag-builds
-DHALF_INCLUDE_DIRS=$(Agent.BuildDirectory)/rocm/include - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
-DCMAKE_BUILD_TYPE=Release parameters:
-DGPU_TARGETS=${{ job.target }} extraBuildFlags: >-
-DROCM_PLATFORM_VERSION=$(NEXT_RELEASE_VERSION) -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++
-GNinja -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml -DROCM_PATH=$(Agent.BuildDirectory)/rocm
parameters: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
gpuTarget: ${{ job.target }} -DHALF_INCLUDE_DIRS=$(Agent.BuildDirectory)/rocm/include
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml -DCMAKE_BUILD_TYPE=Release
parameters: -DAMDGPU_TARGETS=$(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
# - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml parameters:
# parameters: gpuTarget: $(JOB_GPU_TARGET)
# aptPackages: ${{ parameters.aptPackages }}
# pipModules: ${{ parameters.pipModules }}
# gpuTarget: ${{ job.target }}
- ${{ each job in parameters.jobMatrix.testJobs }}: - job: rpp_testing
- job: rpp_test_${{ job.target }} dependsOn: rpp
dependsOn: rpp_build_${{ job.target }} condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
condition: variables:
and(succeeded(), - group: common
eq(variables['ENABLE_${{ upper(job.target) }}_TESTS'], 'true'), - template: /.azuredevops/variables-global.yml
not(containsValue(split(variables['DISABLED_${{ upper(job.target) }}_TESTS'], ','), variables['Build.DefinitionName'])), - name: LD_LIBRARY_PATH
eq(${{ parameters.aggregatePipeline }}, False) value: $(Agent.BuildDirectory)/rocm/lib;$(Agent.BuildDirectory)/rocm/llvm/lib
) pool: $(JOB_TEST_POOL)
variables: workspace:
- group: common clean: all
- template: /.azuredevops/variables-global.yml strategy:
- name: ROCM_PATH matrix:
value: $(Agent.BuildDirectory)/rocm gfx942:
pool: ${{ job.target }}_test_pool JOB_GPU_TARGET: gfx942
workspace: JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }}
clean: all steps:
steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters:
parameters: aptPackages: ${{ parameters.aptPackages }}
aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }}
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml parameters:
parameters: gpuTarget: $(JOB_GPU_TARGET)
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml parameters:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml ${{ if eq(parameters.checkoutRef, '') }}:
parameters: dependencySource: staging
checkoutRef: ${{ parameters.checkoutRef }} ${{ elseif ne(parameters.checkoutRef, '') }}:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencySource: tag-builds
gpuTarget: ${{ job.target }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
# Dependencies from: https://github.com/ROCm/rpp/blob/develop/utilities/test_suite/README.md parameters:
- task: Bash@3 dependencyList: ${{ parameters.rocmTestDependencies }}
displayName: Build and install Turbo JPEG gpuTarget: $(JOB_GPU_TARGET)
inputs: ${{ if eq(parameters.checkoutRef, '') }}:
targetType: 'inline' dependencySource: staging
script: | ${{ elseif ne(parameters.checkoutRef, '') }}:
sudo apt-get install nasm dependencySource: tag-builds
sudo apt-get install wget # Dependencies from: https://github.com/ROCm/rpp/blob/develop/utilities/test_suite/README.md
git clone -b 3.0.2 https://github.com/libjpeg-turbo/libjpeg-turbo.git - task: Bash@3
cd libjpeg-turbo displayName: Build and install Turbo JPEG
mkdir build inputs:
cd build targetType: 'inline'
cmake -DCMAKE_INSTALL_PREFIX=/usr \ script: |
-DCMAKE_BUILD_TYPE=RELEASE \ sudo apt-get install nasm
-DENABLE_STATIC=FALSE \ sudo apt-get install wget
-DCMAKE_INSTALL_DEFAULT_LIBDIR=lib \ git clone -b 3.0.2 https://github.com/libjpeg-turbo/libjpeg-turbo.git
-DWITH_JPEG8=TRUE \ cd libjpeg-turbo
.. mkdir build
make -j$nproc cd build
sudo make install cmake -DCMAKE_INSTALL_PREFIX=/usr \
- task: Bash@3 -DCMAKE_BUILD_TYPE=RELEASE \
displayName: Build and install Nifti -DENABLE_STATIC=FALSE \
inputs: -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib \
targetType: 'inline' -DWITH_JPEG8=TRUE \
script: | ..
git clone -b v3.0.1 https://github.com/NIFTI-Imaging/nifti_clib.git make -j$nproc
cd nifti_clib sudo make install
mkdir build - task: Bash@3
cd build displayName: Build and install Nifti
cmake .. inputs:
sudo make -j$nproc install targetType: 'inline'
- task: Bash@3 script: |
displayName: Build rpp tests git clone https://github.com/NIFTI-Imaging/nifti_clib.git
inputs: cd nifti_clib
targetType: 'inline' mkdir build
script: | cd build
mkdir rpp-tests cmake ..
cd rpp-tests sudo make -j$nproc install
cmake $(Agent.BuildDirectory)/rocm/share/rpp/test \ - task: Bash@3
-DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ \ displayName: Build rpp tests
-DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang inputs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml targetType: 'inline'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml script: |
parameters: sudo rm -rf /opt/rocm
componentName: rpp sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm
testExecutable: 'CMAKE_VERBOSE_MAKEFILE=ON VERBOSE=1 ctest' mkdir rpp-tests
testDir: 'rpp-tests' cd rpp-tests
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml cmake /opt/rocm/share/rpp/test \
parameters: -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ \
aptPackages: ${{ parameters.aptPackages }} -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang
pipModules: ${{ parameters.pipModules }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml
environment: test - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml
gpuTarget: ${{ job.target }} parameters:
componentName: rpp
testExecutable: 'export PATH=$(Agent.BuildDirectory)/rocm/llvm/bin:$PATH; CC=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang CMAKE_VERBOSE_MAKEFILE=ON VERBOSE=1 ctest'
testDir: 'rpp-tests'
- script: sudo rm /opt/rocm

View File

@@ -40,6 +40,7 @@ jobs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
dependencySource: staging
- task: Bash@3 - task: Bash@3
displayName: Add ROCm binaries to PATH displayName: Add ROCm binaries to PATH
inputs: inputs:

View File

@@ -1,63 +0,0 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: catch2Version
type: string
default: ''
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt}
- { os: almalinux8, packageManager: dnf}
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: catch2_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: 'ubuntu-22.04'
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- task: Bash@3
displayName: Clone catch2 ${{ parameters.catch2Version }}
inputs:
targetType: inline
script: git clone https://github.com/catchorg/Catch2.git -b ${{ parameters.catch2Version }}
workingDirectory: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
cmakeBuildDir: $(Agent.BuildDirectory)/Catch2/build
cmakeSourceDir: $(Agent.BuildDirectory)/Catch2
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}

View File

@@ -1,63 +0,0 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: cli11Version
type: string
default: ''
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt}
- { os: almalinux8, packageManager: dnf}
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: cli11_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: 'ubuntu-22.04'
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- task: Bash@3
displayName: Clone cli11 ${{ parameters.cli11Version }}
inputs:
targetType: inline
script: git clone https://github.com/CLIUtils/CLI11.git -b ${{ parameters.cli11Version }}
workingDirectory: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
cmakeBuildDir: $(Agent.BuildDirectory)/CLI11/build
cmakeSourceDir: $(Agent.BuildDirectory)/CLI11
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}

View File

@@ -1,67 +0,0 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: fmtlibVersion
type: string
default: ''
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- libfmt-dev
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt}
- { os: almalinux8, packageManager: dnf}
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: fmtlib_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: 'ubuntu-22.04'
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- task: Bash@3
displayName: Clone fmtlib ${{ parameters.fmtlibVersion }}
inputs:
targetType: inline
script: git clone https://github.com/fmtlib/fmt.git -b ${{ parameters.fmtlibVersion }}
workingDirectory: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
cmakeBuildDir: $(Agent.BuildDirectory)/fmt/build
cmakeSourceDir: $(Agent.BuildDirectory)/fmt
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-DFMT_SYSTEM_HEADERS=ON
-DFMT_INSTALL=ON
-DFMT_TEST=OFF
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}

View File

@@ -38,7 +38,6 @@ jobs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters: parameters:
cmakeBuildDir: $(Agent.BuildDirectory)/grpc/build cmakeBuildDir: $(Agent.BuildDirectory)/grpc/build
cmakeSourceDir: $(Agent.BuildDirectory)/grpc
extraBuildFlags: >- extraBuildFlags: >-
-DgRPC_INSTALL=ON -DgRPC_INSTALL=ON
-DgRPC_BUILD_TESTS=OFF -DgRPC_BUILD_TESTS=OFF

View File

@@ -11,54 +11,35 @@ parameters:
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- cmake
- git - git
- cmake
- ninja-build - ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt }
- { os: almalinux8, packageManager: dnf }
jobs: jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}: - job: gtest
- job: gtest_${{ job.os }} variables:
variables: - group: common
- group: common - template: /.azuredevops/variables-global.yml
- template: /.azuredevops/variables-global.yml pool:
pool: vmImage: ${{ variables.BASE_BUILD_POOL }}
vmImage: 'ubuntu-22.04' workspace:
${{ if eq(job.os, 'almalinux8') }}: clean: all
container: steps:
image: rocmexternalcicd.azurecr.io/manylinux228:latest - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
endpoint: ContainerService3 parameters:
workspace: aptPackages: ${{ parameters.aptPackages }}
clean: all - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
steps: - task: Bash@3
- checkout: none displayName: 'git clone gtest'
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml inputs:
parameters: targetType: inline
aptPackages: ${{ parameters.aptPackages }} script: git clone -b ${{ parameters.gtestVersion }} https://github.com/google/googletest --depth=1 --shallow-submodules --recurse-submodules
packageManager: ${{ job.packageManager }} workingDirectory: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
- task: Bash@3 parameters:
displayName: Clone GTest ${{ parameters.gtestVersion }} cmakeBuildDir: $(Agent.BuildDirectory)/googletest/build
inputs: extraBuildFlags: >-
targetType: inline -DGTEST_FORCE_SHARED_CRT=ON
script: git clone https://github.com/google/googletest -b ${{ parameters.gtestVersion }} --depth=1 --shallow-submodules --recurse-submodules -DCMAKE_DEBUG_POSTFIX=d
workingDirectory: $(Agent.BuildDirectory) -GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}
cmakeBuildDir: $(Agent.BuildDirectory)/googletest/build
cmakeSourceDir: $(Agent.BuildDirectory)/googletest
useAmdclang: false
extraBuildFlags: >-
-DGTEST_FORCE_SHARED_CRT=ON
-DCMAKE_DEBUG_POSTFIX=d
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}

View File

@@ -19,7 +19,7 @@ jobs:
pool: pool:
vmImage: ${{ variables.BASE_BUILD_POOL }} vmImage: ${{ variables.BASE_BUILD_POOL }}
container: container:
image: rocm/dev-ubuntu-22.04:${{ variables.LATEST_RELEASE_VERSION }} image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }}
workspace: workspace:
clean: all clean: all
steps: steps:

View File

@@ -1,64 +0,0 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: libdivideVersion
type: string
default: ''
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt}
- { os: almalinux8, packageManager: dnf}
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: libdivide_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: 'ubuntu-22.04'
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- task: Bash@3
displayName: Clone libdivide ${{ parameters.libdivideVersion }}
inputs:
targetType: inline
script: git clone https://github.com/ridiculousfish/libdivide.git -b ${{ parameters.libdivideVersion }}
workingDirectory: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
cmakeBuildDir: $(Agent.BuildDirectory)/libdivide/build
cmakeSourceDir: $(Agent.BuildDirectory)/libdivide
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-DLIBDIVIDE_BUILD_TESTS=OFF
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}

View File

@@ -1,71 +0,0 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: spdlogVersion
type: string
default: ''
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt}
- { os: almalinux8, packageManager: dnf}
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: spdlog_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: 'ubuntu-22.04'
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-vendor.yml
parameters:
dependencyList:
- fmtlib
- task: Bash@3
displayName: Clone spdlog ${{ parameters.spdlogVersion }}
inputs:
targetType: inline
script: git clone https://github.com/gabime/spdlog.git -b ${{ parameters.spdlogVersion }}
workingDirectory: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
cmakeBuildDir: $(Agent.BuildDirectory)/spdlog/build
cmakeSourceDir: $(Agent.BuildDirectory)/spdlog
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/vendor
-DCMAKE_BUILD_TYPE=Release
-DSPDLOG_USE_STD_FORMAT=OFF
-DSPDLOG_FMT_EXTERNAL_HO=ON
-DSPDLOG_INSTALL=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}

View File

@@ -1,66 +0,0 @@
parameters:
- name: checkoutRepo
type: string
default: 'self'
- name: checkoutRef
type: string
default: ''
- name: yamlcppVersion
type: string
default: ''
- name: aptPackages
type: object
default:
- cmake
- git
- ninja-build
- name: jobMatrix
type: object
default:
buildJobs:
- { os: ubuntu2204, packageManager: apt}
- { os: almalinux8, packageManager: dnf}
jobs:
- ${{ each job in parameters.jobMatrix.buildJobs }}:
- job: yamlcpp_${{ job.os }}
variables:
- group: common
- template: /.azuredevops/variables-global.yml
pool:
vmImage: 'ubuntu-22.04'
${{ if eq(job.os, 'almalinux8') }}:
container:
image: rocmexternalcicd.azurecr.io/manylinux228:latest
endpoint: ContainerService3
workspace:
clean: all
steps:
- checkout: none
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml
parameters:
aptPackages: ${{ parameters.aptPackages }}
packageManager: ${{ job.packageManager }}
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- task: Bash@3
displayName: Clone yaml-cpp ${{ parameters.yamlcppVersion }}
inputs:
targetType: inline
script: git clone https://github.com/jbeder/yaml-cpp.git -b ${{ parameters.yamlcppVersion }}
workingDirectory: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml
parameters:
os: ${{ job.os }}
cmakeBuildDir: $(Agent.BuildDirectory)/yaml-cpp/build
cmakeSourceDir: $(Agent.BuildDirectory)/yaml-cpp
useAmdclang: false
extraBuildFlags: >-
-DCMAKE_BUILD_TYPE=Release
-DYAML_CPP_BUILD_TOOLS=OFF
-DYAML_BUILD_SHARED_LIBS=OFF
-DYAML_CPP_INSTALL=ON
-GNinja
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml
parameters:
os: ${{ job.os }}

View File

@@ -4,80 +4,80 @@ parameters:
- name: aptPackages - name: aptPackages
type: object type: object
default: default:
- autoconf - build-essential
- git
- ninja-build
- openjdk-8-jdk
- ca-certificates
- bc - bc
- bridge-utils - bridge-utils
- build-essential
- ca-certificates
- ccache
- devscripts - devscripts
- dkms - dkms
- doxygen - doxygen
- fakeroot
- ffmpeg
- gfortran
- git
- gnutls-bin
- libamd2
- libavformat-dev
- libblas3
- libcamd2
- libccolamd2
- libcholmod3
- libcolamd2
- libdpkg-dev - libdpkg-dev
- libdpkg-perl - libdpkg-perl
- libdrm-amdgpu1
- libdrm-dev
- libelf-dev - libelf-dev
- libfreetype-dev
- libgfortran5
- libgomp1
- libjpeg-dev
- libjpeg-turbo-official
- liblapack-dev
- liblapack3
- libmetis5
- libncurses-dev
- libnuma-dev
- libopenblas-dev
- libpth-dev
- libquadmath0
- libssh-dev
- libstdc++-12-dev
- libsuitesparseconfig5
- libswscale-dev
- libtinfo-dev
- libunwind-dev
- libwebp-dev
- llvm-dev
- ncurses-base
- ninja-build
- numactl
- openjdk-8-jdk
- python-is-python3
- python3-dev - python3-dev
- python3-pip - python3-pip
- python3-venv - python3-venv
- wget
- ncurses-base
- libncurses-dev
- numactl
- libnuma-dev
- libssh-dev
- libunwind-dev
- llvm-dev
- libpth-dev
- qemu-kvm - qemu-kvm
- re2c - re2c
- subversion - subversion
- wget - fakeroot
- autoconf
- libgomp1
- libtinfo-dev
- libcholmod3
- libsuitesparseconfig5
- libstdc++-12-dev
- python-is-python3
- gfortran
- libgfortran5
- liblapack3
- libblas3
- libquadmath0
- libmetis5
- libamd2
- libcamd2
- libcolamd2
- libccolamd2
- libdrm-amdgpu1
- ccache
- zip - zip
- libjpeg-turbo-official
- libjpeg-dev
- libwebp-dev
- libfreetype-dev
- gnutls-bin
- ffmpeg
- libopenblas-dev
- liblapack-dev
- libswscale-dev
- libavformat-dev
- name: pipModules - name: pipModules
type: object type: object
default: default:
- cmake
- astunparse - astunparse
- "expecttest>=0.3.0" - expecttest>=0.2.1
- hypothesis - hypothesis
- numpy - numpy
- psutil - psutil
- pyyaml - pyyaml
- requests - requests
- setuptools==75.8.0 - setuptools
- types-dataclasses - types-dataclasses
- "typing-extensions>=4.10.0" - typing-extensions>=4.8.0
- "sympy>=1.13.3" - sympy>=1.13.0
- filelock - filelock
- networkx - networkx
- jinja2 - jinja2
@@ -85,8 +85,8 @@ parameters:
- lintrunner - lintrunner
- ninja - ninja
- packaging - packaging
- "optree>=0.13.0" - optree>=0.13.0
- "click>=8.0.3" - click>=8.0.3
# list for vision # list for vision
- auditwheel - auditwheel
- future - future
@@ -97,39 +97,36 @@ parameters:
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
- rocminfo
- MIOpen
- clr - clr
- hipBLAS - hipBLAS
- hipBLASLt
- hipFFT - hipFFT
- hipRAND - hipRAND
- hipSOLVER - hipSOLVER
- hipSPARSE - hipSPARSE
- hipSPARSELt - ROCR-Runtime
- llvm-project - llvm-project
- MIOpen
- rccl - rccl
- rocBLAS - rocBLAS
- rocFFT - rocFFT
- rocm-core
- rocminfo
- rocm_smi_lib - rocm_smi_lib
- rocPRIM
- rocprofiler-register
- rocRAND - rocRAND
- ROCR-Runtime
- rocSOLVER - rocSOLVER
- rocSPARSE - rocSPARSE
- roctracer - roctracer
- hipBLASLt
- rocprofiler-register
- rocm-core
- rocPRIM
# below are additional dependencies not called out by build script, but throw errors during cmake # below are additional dependencies not called out by build script, but throw errors during cmake
- composable_kernel
- hipBLAS-common
- hipCUB - hipCUB
- rocThrust - rocThrust
- hipBLAS-common
- composable_kernel
- name: rocmTestDependencies - name: rocmTestDependencies
type: object type: object
default: default:
# rocroller.so needed and is not included in the wheel
- hipBLASLt
- rocminfo - rocminfo
# Reference on what tests to run for torchvision found in private repo: # Reference on what tests to run for torchvision found in private repo:
# https://github.com/ROCm/rocAutomation/blob/jenkins-pipelines/pytorch/pytorch_ci/test_pytorch_test1.sh#L54 # https://github.com/ROCm/rocAutomation/blob/jenkins-pipelines/pytorch/pytorch_ci/test_pytorch_test1.sh#L54
@@ -145,10 +142,6 @@ parameters:
- binary_ufuncs - binary_ufuncs
- autograd - autograd
# - inductor/torchinductor takes too long # - inductor/torchinductor takes too long
# set to false to disable torchvision build and test
- name: includeVision
type: boolean
default: false
trigger: none trigger: none
pr: none pr: none
@@ -173,13 +166,15 @@ jobs:
- template: /.azuredevops/variables-global.yml - template: /.azuredevops/variables-global.yml
# various flags/parameters expected by bash scripts in pytorch repo's .ci directory # various flags/parameters expected by bash scripts in pytorch repo's .ci directory
- name: ROCM_VERSION - name: ROCM_VERSION
value: 6.5.0 value: 6.3.0
- name: ROCM_PATH - name: ROCM_PATH
value: /opt/rocm value: /opt/rocm
- name: DESIRED_CUDA - name: DESIRED_CUDA
value: 6.5.0 value: 6.3.0
- name: MAGMA_ROCM - name: MKLROOT
value: 6.3 value: /opt/intel
- name: AOTRITON_INSTALLED_PREFIX
value: /opt/rocm/aotriton
- name: DESIRED_PYTHON - name: DESIRED_PYTHON
value: 3.10 value: 3.10
- name: PYTORCH_ROOT - name: PYTORCH_ROOT
@@ -219,8 +214,8 @@ jobs:
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
dependencyList: ${{ parameters.rocmDependencies }} dependencyList: ${{ parameters.rocmDependencies }}
dependencySource: staging
gpuTarget: $(JOB_GPU_TARGET) gpuTarget: $(JOB_GPU_TARGET)
setupHIPLibrarySymlinks: true
- task: Bash@3 - task: Bash@3
displayName: ROCm symbolic link displayName: ROCm symbolic link
inputs: inputs:
@@ -249,6 +244,13 @@ jobs:
script: | script: |
sudo bash pytorch/.ci/docker/common/install_patchelf.sh sudo bash pytorch/.ci/docker/common/install_patchelf.sh
workingDirectory: $(Build.SourcesDirectory) workingDirectory: $(Build.SourcesDirectory)
- task: Bash@3
displayName: Install mkl dependency for magma
inputs:
targetType: inline
script: |
sudo bash pytorch/.ci/docker/common/install_mkl.sh
workingDirectory: $(Build.SourcesDirectory)
- task: Bash@3 - task: Bash@3
displayName: Install rocm drm displayName: Install rocm drm
inputs: inputs:
@@ -261,27 +263,29 @@ jobs:
inputs: inputs:
targetType: inline targetType: inline
script: | script: |
sudo bash pytorch/.ci/docker/common/install_rocm_magma.sh $(MAGMA_ROCM) sudo PYTORCH_ROCM_ARCH=$(JOB_GPU_TARGET) MKLROOT=$(MKLROOT) bash pytorch/.ci/docker/common/install_rocm_magma.sh
workingDirectory: $(Build.SourcesDirectory) workingDirectory: $(Build.SourcesDirectory)
- task: Bash@3 - task: Bash@3
displayName: Install targeted typing_extensions for build displayName: Install AOTriton Shared Library
inputs: inputs:
targetType: inline targetType: inline
script: pip install --target=$(Build.SourcesDirectory)/pytorch/torch/.. typing_extensions script: sudo bash ./common/install_aotriton.sh /opt/rocm
workingDirectory: $(Build.SourcesDirectory)/pytorch/.ci/docker
- task: Bash@3 - task: Bash@3
displayName: Run ROCm Build Script displayName: Run ROCm Build Script
inputs: inputs:
targetType: inline targetType: inline
script: >- script: >-
sudo sudo
PYTHONPATH=/home/AzDevOps/.local/lib/python3.10/site-packages:/usr/lib/python3/dist-packages
DESIRED_CUDA=$(DESIRED_CUDA) DESIRED_CUDA=$(DESIRED_CUDA)
PYTORCH_ROCM_ARCH=$(JOB_GPU_TARGET) PYTORCH_ROCM_ARCH=$(JOB_GPU_TARGET)
GPU_TARGET=$(JOB_GPU_TARGET) GPU_TARGET=$(JOB_GPU_TARGET)
DESIRED_PYTHON=$(DESIRED_PYTHON) DESIRED_PYTHON=$(DESIRED_PYTHON)
PYTORCH_ROOT=$(PYTORCH_ROOT) PYTORCH_ROOT=$(PYTORCH_ROOT)
CMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm CMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm
AOTRITON_INSTALLED_PREFIX=$(AOTRITON_INSTALLED_PREFIX)
DESIRED_DEVTOOLSET=$(DESIRED_DEVTOOLSET) DESIRED_DEVTOOLSET=$(DESIRED_DEVTOOLSET)
TORCH_PACKAGE_NAME=torch.$(ROCM_BRANCH).$(JOB_GPU_TARGET)
PYTORCH_BUILD_VERSION=$(cat $(Build.SourcesDirectory)/pytorch/version.txt | cut -da -f1) PYTORCH_BUILD_VERSION=$(cat $(Build.SourcesDirectory)/pytorch/version.txt | cut -da -f1)
PYTORCH_BUILD_NUMBER=$(date -u +%Y%m%d) PYTORCH_BUILD_NUMBER=$(date -u +%Y%m%d)
SKIP_ALL_TESTS=1 SKIP_ALL_TESTS=1
@@ -292,72 +296,59 @@ jobs:
sourceDir: /remote/wheelhouserocm$(ROCM_VERSION) sourceDir: /remote/wheelhouserocm$(ROCM_VERSION)
contentsString: '*.whl' contentsString: '*.whl'
# common helper source for pytorch vision and audio # common helper source for pytorch vision and audio
- ${{ if eq(parameters.includeVision, true) }}: - task: Bash@3
- task: Bash@3 displayName: git clone pytorch test-infra
displayName: git clone pytorch test-infra inputs:
inputs: targetType: inline
targetType: inline script: git clone https://github.com/pytorch/test-infra.git --depth=1 --recurse-submodules
script: git clone https://github.com/pytorch/test-infra.git --depth=1 --recurse-submodules workingDirectory: $(Build.SourcesDirectory)
workingDirectory: $(Build.SourcesDirectory) - task: Bash@3
- task: Bash@3 displayName: install package helper
displayName: install package helper inputs:
inputs: targetType: inline
targetType: inline script: python3 -m pip install test-infra/tools/pkg-helpers
script: python3 -m pip install test-infra/tools/pkg-helpers workingDirectory: $(Build.SourcesDirectory)
workingDirectory: $(Build.SourcesDirectory) - task: Bash@3
- task: Bash@3 displayName: pytorch pkg helpers
displayName: pytorch pkg helpers inputs:
inputs: targetType: inline
targetType: inline script: CU_VERSION=${CU_VERSION} CHANNEL=${CHANNEL} python -m pytorch_pkg_helpers
script: CU_VERSION=${CU_VERSION} CHANNEL=${CHANNEL} python -m pytorch_pkg_helpers # get torch vision source and build
# get torch vision source and build - task: Bash@3
- task: Bash@3 displayName: git clone pytorch vision
displayName: git clone pytorch vision inputs:
inputs: targetType: inline
targetType: inline script: git clone https://github.com/pytorch/vision.git --depth=1 --recurse-submodules
script: git clone https://github.com/pytorch/vision.git --depth=1 --recurse-submodules workingDirectory: $(Build.SourcesDirectory)
workingDirectory: $(Build.SourcesDirectory) - task: Bash@3
- task: Bash@3 displayName: Build vision
displayName: Build vision inputs:
inputs: targetType: inline
targetType: inline script: >-
script: >- TORCH_PACKAGE_NAME=torch.$(ROCM_BRANCH).$(JOB_GPU_TARGET)
PYTORCH_VERSION=$(cat $(Build.SourcesDirectory)/pytorch/version.txt | cut -da -f1)post$(date -u +%Y%m%d) TORCHVISION_PACKAGE_NAME=torchvision.$(ROCM_BRANCH).$(JOB_GPU_TARGET)
BUILD_VERSION=$(cat $(Build.SourcesDirectory)/vision/version.txt | cut -da -f1)post$(date -u +%Y%m%d) PYTORCH_VERSION=$(cat $(Build.SourcesDirectory)/pytorch/version.txt | cut -da -f1)post$(date -u +%Y%m%d)
python3 setup.py bdist_wheel BUILD_VERSION=$(cat $(Build.SourcesDirectory)/vision/version.txt | cut -da -f1)post$(date -u +%Y%m%d)
workingDirectory: $(Build.SourcesDirectory)/vision python3 setup.py bdist_wheel
- task: Bash@3 workingDirectory: $(Build.SourcesDirectory)/vision
displayName: Relocate vision - task: Bash@3
inputs: displayName: Relocate vision
targetType: inline inputs:
script: python3 packaging/wheel/relocate.py targetType: inline
workingDirectory: $(Build.SourcesDirectory)/vision script: python3 packaging/wheel/relocate.py
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml workingDirectory: $(Build.SourcesDirectory)/vision
parameters: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml
sourceDir: $(Build.SourcesDirectory)/vision/dist
contentsString: '*.whl'
clean: false
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml
parameters: parameters:
gpuTarget: $(JOB_GPU_TARGET) sourceDir: $(Build.SourcesDirectory)/vision/dist
contentsString: '*.whl'
clean: false
- task: PublishPipelineArtifact@1 - task: PublishPipelineArtifact@1
displayName: 'wheel file Publish' displayName: 'wheel file Publish'
retryCountOnTaskFailure: 3 retryCountOnTaskFailure: 3
inputs: inputs:
targetPath: $(Build.BinariesDirectory) targetPath: $(Build.BinariesDirectory)
- task: Bash@3
displayName: Save pipeline artifact file name
inputs:
workingDirectory: $(Pipeline.Workspace)
targetType: inline
script: |
whlFile=$(find "$(Build.BinariesDirectory)" -type f -name "*.whl" | head -n 1)
if [ -n "$whlFile" ]; then
echo $(basename "$whlFile") >> pipelineArtifacts.txt
fi
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- job: pytorch_testing - job: torchvision_testing
dependsOn: pytorch dependsOn: pytorch
condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName']))) condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName'])))
variables: variables:
@@ -388,24 +379,21 @@ jobs:
parameters: parameters:
aptPackages: ${{ parameters.aptPackages }} aptPackages: ${{ parameters.aptPackages }}
pipModules: ${{ parameters.pipModules }} pipModules: ${{ parameters.pipModules }}
# pytorch tests require an updated version of click, even if requirements is not called outright
- task: Bash@3
displayName: 'pip update click'
inputs:
targetType: inline
script: pip install --upgrade click
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml
- task: DownloadPipelineArtifact@2 - task: DownloadPipelineArtifact@2
displayName: 'Download Pipeline Wheel Files' displayName: 'Download Pipeline Wheel Files'
retryCountOnTaskFailure: 3
inputs: inputs:
itemPattern: '**/*.whl' itemPattern: '**/*$(JOB_GPU_TARGET)*.whl'
targetPath: $(Agent.BuildDirectory) targetPath: $(Agent.BuildDirectory)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml
parameters:
dependencySource: staging
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
parameters: parameters:
dependencyList: ${{ parameters.rocmTestDependencies }} dependencyList: ${{ parameters.rocmTestDependencies }}
gpuTarget: $(JOB_GPU_TARGET) gpuTarget: $(JOB_GPU_TARGET)
dependencySource: staging
skipLlvmSymlink: true
# get sources to run test scripts # get sources to run test scripts
- task: Bash@3 - task: Bash@3
displayName: git clone upstream pytorch displayName: git clone upstream pytorch
@@ -413,13 +401,12 @@ jobs:
targetType: inline targetType: inline
script: git clone https://github.com/pytorch/pytorch.git --depth=1 --recurse-submodules script: git clone https://github.com/pytorch/pytorch.git --depth=1 --recurse-submodules
workingDirectory: $(Build.SourcesDirectory) workingDirectory: $(Build.SourcesDirectory)
- ${{ if eq(parameters.includeVision, true) }}: - task: Bash@3
- task: Bash@3 displayName: git clone pytorch vision
displayName: git clone pytorch vision inputs:
inputs: targetType: inline
targetType: inline script: git clone https://github.com/pytorch/vision.git --depth=1 --recurse-submodules
script: git clone https://github.com/pytorch/vision.git --depth=1 --recurse-submodules workingDirectory: $(Build.SourcesDirectory)
workingDirectory: $(Build.SourcesDirectory)
- task: Bash@3 - task: Bash@3
displayName: Install Wheel Files displayName: Install Wheel Files
inputs: inputs:
@@ -464,7 +451,7 @@ jobs:
python3 -c 'import torch; x = torch.rand(5, 3); print(x)' python3 -c 'import torch; x = torch.rand(5, 3); print(x)'
# Test artifact build script has too many if statements for different environments # Test artifact build script has too many if statements for different environments
# Based off the snippet of interest for this environment, with some adjustments # Based off the snippet of interest for this environment, with some adjustments
# https://github.com/pytorch/pytorch/blob/main/.ci/pytorch/build.sh#L330-L371 # https://github.com/pytorch/pytorch/blob/main/.ci/pytorch/build.sh#L335-L375
# Removing in-line comments since it does not fit with the yaml markup # Removing in-line comments since it does not fit with the yaml markup
- task: Bash@3 - task: Bash@3
displayName: Build Pytorch Test Artifacts displayName: Build Pytorch Test Artifacts
@@ -523,14 +510,13 @@ jobs:
script: pytest test/test_${{ torchTest }}.py script: pytest test/test_${{ torchTest }}.py
# Reference on what tests to run for torchvision found in private repo: # Reference on what tests to run for torchvision found in private repo:
# https://github.com/ROCm/rocAutomation/blob/jenkins-pipelines/pytorch/pytorch_ci/test_torchvision.sh#L51 # https://github.com/ROCm/rocAutomation/blob/jenkins-pipelines/pytorch/pytorch_ci/test_torchvision.sh#L51
- ${{ if eq(parameters.includeVision, true) }}: - task: Bash@3
- task: Bash@3 displayName: Test vision/transforms
displayName: Test vision/transforms continueOnError: true
continueOnError: true inputs:
inputs: targetType: inline
targetType: inline script: pytest test/test_transforms.py
script: pytest test/test_transforms.py workingDirectory: $(Build.SourcesDirectory)/vision
workingDirectory: $(Build.SourcesDirectory)/vision
- task: Bash@3 - task: Bash@3
displayName: Uninstall Wheel Files displayName: Uninstall Wheel Files
inputs: inputs:

View File

@@ -1,23 +1,5 @@
parameters: parameters:
# using a parameter instead of a strategy matrix allows job variables to be eval'd at compile-time rather than runtime # currently excludes clr
- name: jobList
type: object
default:
- { os: ubuntu2204, packageManager: apt, target: gfx942 }
- { os: ubuntu2204, packageManager: apt, target: gfx90a }
- { os: ubuntu2204, packageManager: apt, target: gfx1201 }
- { os: ubuntu2204, packageManager: apt, target: gfx1100 }
- { os: ubuntu2204, packageManager: apt, target: gfx1030 }
- { os: ubuntu2404, packageManager: apt, target: gfx942 }
- { os: ubuntu2404, packageManager: apt, target: gfx90a }
- { os: ubuntu2404, packageManager: apt, target: gfx1201 }
- { os: ubuntu2404, packageManager: apt, target: gfx1100 }
- { os: ubuntu2404, packageManager: apt, target: gfx1030 }
- { os: almalinux8, packageManager: dnf, target: gfx942 }
- { os: almalinux8, packageManager: dnf, target: gfx90a }
- { os: almalinux8, packageManager: dnf, target: gfx1201 }
- { os: almalinux8, packageManager: dnf, target: gfx1100 }
- { os: almalinux8, packageManager: dnf, target: gfx1030 }
- name: rocmDependencies - name: rocmDependencies
type: object type: object
default: default:
@@ -25,9 +7,9 @@ parameters:
- amdsmi - amdsmi
- aomp-extras - aomp-extras
- aomp - aomp
- clr
- composable_kernel - composable_kernel
- half - half
- HIP
- hip-tests - hip-tests
- hipBLAS - hipBLAS
- hipBLAS-common - hipBLAS-common
@@ -44,6 +26,7 @@ parameters:
- llvm-project - llvm-project
- MIOpen - MIOpen
- MIVisionX - MIVisionX
- omniperf
- rccl - rccl
- rdc - rdc
- rocAL - rocAL
@@ -53,7 +36,6 @@ parameters:
- rocDecode - rocDecode
- rocFFT - rocFFT
- ROCgdb - ROCgdb
- rocJPEG
- rocm-cmake - rocm-cmake
- rocm-core - rocm-core
- rocm-examples - rocm-examples
@@ -63,7 +45,6 @@ parameters:
- rocm_bandwidth_test - rocm_bandwidth_test
- rocm_smi_lib - rocm_smi_lib
- rocPRIM - rocPRIM
- rocprofiler-compute
- rocprofiler-register - rocprofiler-register
- rocprofiler-sdk - rocprofiler-sdk
- rocprofiler-systems - rocprofiler-systems
@@ -78,7 +59,6 @@ parameters:
- roctracer - roctracer
- rocWMMA - rocWMMA
- rpp - rpp
- TransferBench
trigger: none trigger: none
pr: none pr: none
@@ -91,149 +71,54 @@ schedules:
always: true always: true
jobs: jobs:
- ${{ each job in parameters.jobList }}: - job: rocm_nightly
- job: nightly_${{ job.os }}_${{ job.target }} variables:
timeoutInMinutes: 120 - group: common
variables: - template: /.azuredevops/variables-global.yml
- group: common pool: ${{ variables.MEDIUM_BUILD_POOL }}
- template: /.azuredevops/variables-global.yml workspace:
pool: ${{ variables.MEDIUM_BUILD_POOL }} clean: all
workspace: strategy:
clean: all matrix:
steps: gfx942:
- task: DeleteFiles@1 JOB_GPU_TARGET: gfx942
displayName: 'Cleanup checkout space' steps:
inputs: - task: DeleteFiles@1
SourceFolder: '$(Agent.BuildDirectory)/s' displayName: 'Cleanup checkout space'
Contents: '**/*' inputs:
- task: DeleteFiles@1 SourceFolder: '$(Agent.BuildDirectory)/s'
displayName: 'Cleanup Staging Area' Contents: '**/*'
inputs: - task: DeleteFiles@1
SourceFolder: '$(Build.ArtifactStagingDirectory)' displayName: 'Cleanup Staging Area'
Contents: '/**/*' inputs:
RemoveDotFiles: true SourceFolder: '$(Build.ArtifactStagingDirectory)'
- script: df -h Contents: '/**/*'
displayName: System disk space before ROCm RemoveDotFiles: true
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - script: df -h
parameters: displayName: System disk space before ROCm
dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml
os: ${{ job.os }} parameters:
gpuTarget: ${{ job.target }} dependencyList: ${{ parameters.rocmDependencies }}
- script: df -h dependencySource: staging
displayName: System disk space after ROCm skipLibraryLinking: true
- script: du -sh $(Agent.BuildDirectory)/rocm skipLlvmSymlink: true
displayName: Uncompressed ROCm size gpuTarget: $(JOB_GPU_TARGET)
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - script: df -h
- task: ArchiveFiles@2 displayName: System disk space after ROCm
displayName: Compress rocm-nightly - script: du -sh $(Agent.BuildDirectory)/rocm
inputs: displayName: Uncompressed ROCm size
rootFolderOrFile: $(Agent.BuildDirectory)/rocm - task: ArchiveFiles@2
includeRootFolder: false displayName: Compress rocm-nightly
archiveType: tar inputs:
tarCompression: gz rootFolderOrFile: $(Agent.BuildDirectory)/rocm
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.DefinitionName)_$(Build.BuildNumber)_${{ job.os }}_${{ job.target }}.tar.gz includeRootFolder: false
- script: du -sh $(Build.ArtifactStagingDirectory) archiveType: tar
displayName: Compressed ROCm size tarCompression: gz
- task: PublishPipelineArtifact@1 archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.DefinitionName)_$(Build.BuildNumber)_ubuntu2204_$(JOB_GPU_TARGET).tar.gz
displayName: 'Publish ROCm Nightly Artifact' - script: du -sh $(Build.ArtifactStagingDirectory)
retryCountOnTaskFailure: 3 displayName: Compressed ROCm size
inputs: - task: PublishPipelineArtifact@1
targetPath: '$(Build.ArtifactStagingDirectory)' displayName: 'Publish ROCm Nightly Artifact'
- task: Bash@3 retryCountOnTaskFailure: 3
displayName: Save pipeline artifact file name inputs:
inputs: targetPath: '$(Build.ArtifactStagingDirectory)'
workingDirectory: $(Pipeline.Workspace)
targetType: inline
script: echo "$(Build.DefinitionName)_$(Build.BuildNumber)_${{ job.os }}_${{ job.target }}.tar.gz" >> pipelineArtifacts.txt
- template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml
- ${{ if eq(job.packageManager, 'apt') }}:
- task: Bash@3
displayName: Create Dockerfile
inputs:
workingDirectory: $(Agent.BuildDirectory)
targetType: inline
script: |
cat <<'EOF' > Dockerfile
${{ iif(eq(job.os, 'ubuntu2204'), 'FROM ubuntu:22.04', '') }}
${{ iif(eq(job.os, 'ubuntu2404'), 'FROM ubuntu:24.04', '') }}
WORKDIR /root
RUN mkdir rocm
RUN apt update \
&& apt upgrade -y \
&& apt install -y cmake curl git gcc g++ gpg lsb-release lsof ninja-build pkg-config python3 python3-pip wget zip libdrm-dev libelf-dev libgtest-dev libhsakmt-dev libhwloc-dev libnuma-dev libstdc++-12-dev libtbb-dev jq \
&& apt clean all
RUN PACKAGE_NAME=$(curl -s https://repo.radeon.com/rocm/apt/latest/pool/main/h/hsa-amd-aqlprofile/ | grep -oP "href=\"\K[^\"]*$(lsb_release -rs)[^\"]*\.deb") \
&& wget -nv --retry-connrefused https://repo.radeon.com/rocm/apt/latest/pool/main/h/hsa-amd-aqlprofile/$PACKAGE_NAME \
&& mkdir hsa-amd-aqlprofile \
&& dpkg-deb -R $PACKAGE_NAME hsa-amd-aqlprofile \
&& cp -R hsa-amd-aqlprofile/opt/rocm-*/* rocm
RUN ARTIFACT_URL="https://dev.azure.com/ROCm-CI/ROCm-CI/_apis/build/builds/$(Build.BuildId)/artifacts?artifactName=nightly${{ job.os }}${{ job.target }}&api-version=7.1" \
&& DOWNLOAD_URL=$(curl -s $ARTIFACT_URL | jq ".resource.downloadUrl" | tr -d '"') \
&& wget -nv --retry-connrefused $DOWNLOAD_URL -O nightly.zip \
&& unzip nightly.zip \
&& tar -xf nightly${{ job.os }}${{ job.target }}/rocm-nightly*${{ job.os }}*${{ job.target }}*.tar.gz -C rocm
RUN echo /root/rocm/lib | tee /etc/ld.so.conf.d/rocm-ci.conf
RUN echo /root/rocm/llvm/lib | tee -a /etc/ld.so.conf.d/rocm-ci.conf
RUN echo /root/rocm/lib64 | tee -a /etc/ld.so.conf.d/rocm-ci.conf
RUN echo /root/rocm/llvm/lib64 | tee -a /etc/ld.so.conf.d/rocm-ci.conf
RUN ldconfig -v
ENV PATH="$PATH:/root/rocm/bin"
ENTRYPOINT ["/bin/bash"]
EOF
cat Dockerfile
- ${{ elseif eq(job.packageManager, 'dnf') }}:
- task: Bash@3
displayName: Create Dockerfile
inputs:
workingDirectory: $(Agent.BuildDirectory)
targetType: inline
script: |
cat <<'EOF' > Dockerfile
${{ iif(eq(job.os, 'almalinux8'), 'FROM almalinux:8', '') }}
WORKDIR /root
RUN mkdir rocm
RUN dnf install -y cmake curl git gcc gcc-c++ gnupg2 redhat-lsb-core lsof pkgconf python3 python3-pip wget zip libdrm-devel elfutils-libelf-devel numactl-devel libstdc++-devel tbb-devel jq \
&& dnf clean all
RUN PACKAGE_NAME=$(curl -s https://repo.radeon.com/rocm/rhel8/$(REPO_RADEON_VERSION)/main/ | grep -oP "hsa-amd-aqlprofile-[^\"]+\.rpm" | head -n1) \
&& wget -nv --retry-connrefused https://repo.radeon.com/rocm/rhel8/$(REPO_RADEON_VERSION)/main/$PACKAGE_NAME \
&& mkdir hsa-amd-aqlprofile \
&& dnf -y install rpm-build cpio \
&& rpm2cpio $PACKAGE_NAME | (cd hsa-amd-aqlprofile && cpio -idmv) \
&& cp -R hsa-amd-aqlprofile/opt/rocm-*/* rocm
RUN ARTIFACT_URL="https://dev.azure.com/ROCm-CI/ROCm-CI/_apis/build/builds/$(Build.BuildId)/artifacts?artifactName=nightly${{ job.os }}${{ job.target }}&api-version=7.1" \
&& DOWNLOAD_URL=$(curl -s $ARTIFACT_URL | jq ".resource.downloadUrl" | tr -d '"') \
&& wget -nv --retry-connrefused $DOWNLOAD_URL -O nightly.zip \
&& UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE unzip nightly.zip \
&& tar -xf nightly${{ job.os }}${{ job.target }}/rocm-nightly*${{ job.os }}*${{ job.target }}*.tar.gz -C rocm
RUN echo /root/rocm/lib | tee /etc/ld.so.conf.d/rocm-ci.conf
RUN echo /root/rocm/llvm/lib | tee -a /etc/ld.so.conf.d/rocm-ci.conf
RUN echo /root/rocm/lib64 | tee -a /etc/ld.so.conf.d/rocm-ci.conf
RUN echo /root/rocm/llvm/lib64 | tee -a /etc/ld.so.conf.d/rocm-ci.conf
RUN ldconfig -v
ENV PATH="$PATH:/root/rocm/bin"
ENTRYPOINT ["/bin/bash"]
EOF
cat Dockerfile
- task: Docker@2
displayName: Build and upload Docker image
retryCountOnTaskFailure: 3
inputs:
containerRegistry: ContainerService3
repository: 'nightly-${{ job.os }}-${{ job.target }}'
Dockerfile: '$(Agent.BuildDirectory)/Dockerfile'
buildContext: '$(Agent.BuildDirectory)'
- task: Bash@3
displayName: '!! Docker Run Command !!'
inputs:
targetType: inline
script: echo "docker run -it --network=host --device=/dev/kfd --device=/dev/dri --security-opt seccomp=unconfined rocmexternalcicd.azurecr.io/nightly-${{ job.os }}-${{ job.target }}:$(Build.BuildId)" | tr '[:upper:]' '[:lower:]'

View File

@@ -1,68 +0,0 @@
#!/usr/bin/env python3
import json
import requests
import argparse
from pathlib import Path
def get_builds(entries, gpu_target, output):
already_downloaded = {}
for entry in entries:
already_downloaded = _get_builds(entry, gpu_target, already_downloaded, output)
def _get_builds(entry, gpu_target, already_downloaded, output):
print()
print(f"{entry['buildNumber']} - {entry['buildId']} - {entry['repoName']}")
if already_downloaded.get(entry['buildId']):
print('Skipping, already downloaded from build ' + entry['buildId'])
return already_downloaded
artifacts_url = f"https://dev.azure.com/ROCm-CI/ROCm-CI/_apis/build/builds/{entry['buildId']}/artifacts?api-version=7.1"
artifacts = requests.get(artifacts_url).json()
for artifact in artifacts['value']:
if 'gfx' in artifact['name'] and gpu_target not in artifact['name']:
continue
print('Artifact name: ' + artifact['name'])
print('File size: ~' +
str(round(int(artifact['resource']['properties']['artifactsize'])/1000000, 2)) + ' MB')
download_url = f"{artifact['resource']['downloadUrl']}"
download = requests.get(download_url)
zip_file = Path(output) / f"{artifact['name']}.zip"
with open(zip_file, 'wb') as f:
f.write(download.content)
already_downloaded[entry['buildId']] = True
return already_downloaded
def main():
parser = argparse.ArgumentParser(description="Command line tool for downloading external ci artifacts")
parser.add_argument('--target', type=str, dest="target", choices=["gfx90a", "gfx942"], help="Target gfx")
parser.add_argument('--manifest', type=str, dest="manifest", help='JSON manifest url or path to local manifest')
parser.add_argument('--output_dir', type=str, dest="output", help='Path to download directory')
args = parser.parse_args()
manifest = args.manifest
gpu_target = args.target
if not gpu_target:
print("Enter the GPU target (gfx942, gfx90a)")
gpu_target = input()
if not manifest:
print("Enter the manifest file (URL or local path)")
manifest = input()
if 'http' in manifest:
data = requests.get(manifest).json()
else:
with open(manifest, 'r') as f:
data = json.load(f)
entries = [e for e in data['current']]
entries.extend([e for e in data['dependencies']])
get_builds(entries, gpu_target, args.output)
if __name__ == "__main__":
main()

View File

@@ -1,29 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: checkoutRef
type: string
default: refs/tags/$(LATEST_RELEASE_TAG)
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
- repository: release_repo
type: github
endpoint: ROCm
name: ROCm/TransferBench
ref: ${{ parameters.checkoutRef }}
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_COMPONENT_PATH }}/TransferBench.yml
parameters:
checkoutRepo: release_repo
checkoutRef: ${{ parameters.checkoutRef }}

View File

@@ -3,16 +3,7 @@ variables:
- template: /.azuredevops/variables-global.yml - template: /.azuredevops/variables-global.yml
parameters: parameters:
- name: aompRef - name: checkoutRef
type: string
default: refs/tags/$(LATEST_RELEASE_TAG)
- name: extrasRef
type: string
default: refs/tags/$(LATEST_RELEASE_TAG)
- name: flangRef
type: string
default: refs/tags/$(LATEST_RELEASE_TAG)
- name: llvmRef
type: string type: string
default: refs/tags/$(LATEST_RELEASE_TAG) default: refs/tags/$(LATEST_RELEASE_TAG)
@@ -22,22 +13,22 @@ resources:
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/aomp name: ROCm/aomp
ref: ${{ parameters.aompRef }} ref: ${{ parameters.checkoutRef }}
- repository: aomp-extras_repo - repository: aomp-extras_repo
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/aomp-extras name: ROCm/aomp-extras
ref: ${{ parameters.extrasRef }} ref: ${{ parameters.checkoutRef }}
- repository: flang_repo - repository: flang_repo
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/flang name: ROCm/flang
ref: ${{ parameters.flangRef }} ref: ${{ parameters.checkoutRef }}
- repository: llvm-project_repo - repository: llvm-project_repo
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/llvm-project name: ROCm/llvm-project
ref: ${{ parameters.llvmRef }} ref: amd-staging
trigger: none trigger: none
pr: none pr: none
@@ -46,4 +37,4 @@ jobs:
- template: ${{ variables.CI_COMPONENT_PATH }}/aomp.yml - template: ${{ variables.CI_COMPONENT_PATH }}/aomp.yml
parameters: parameters:
checkoutRepo: aomp_repo checkoutRepo: aomp_repo
checkoutRef: ${{ parameters.aompRef }} checkoutRef: ${{ parameters.checkoutRef }}

View File

@@ -1,23 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: catch2Version
type: string
default: "v3.7.0"
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/catch2.yml
parameters:
catch2Version: ${{ parameters.catch2Version }}

View File

@@ -1,23 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: cli11Version
type: string
default: "main"
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/cli11.yml
parameters:
cli11Version: ${{ parameters.cli11Version }}

View File

@@ -28,22 +28,12 @@ resources:
endpoint: ROCm endpoint: ROCm
name: ROCm/hipother name: ROCm/hipother
ref: ${{ parameters.checkoutRef }} ref: ${{ parameters.checkoutRef }}
pipelines:
- pipeline: hip_pipeline
source: \experimental\HIP
trigger: true
- pipeline: hipother_pipeline
source: \experimental\hipother
trigger: true
trigger: none trigger: none
pr: none pr: none
jobs: jobs:
- ${{ if eq(variables['Build.Reason'], 'ResourceTrigger') }}: - template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml
- template: ${{ variables.CI_COMPONENT_PATH }}/copyHIP.yml@pipelines_repo parameters:
- ${{ if ne(variables['Build.Reason'], 'ResourceTrigger') }}: checkoutRepo: release_repo
- template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml@pipelines_repo checkoutRef: ${{ parameters.checkoutRef }}
parameters:
checkoutRepo: release_repo
checkoutRef: ${{ parameters.checkoutRef }}

View File

@@ -1,23 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: fmtlibVersion
type: string
default: "11.1.3"
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/fmtlib.yml
parameters:
fmtlibVersion: ${{ parameters.fmtlibVersion }}

View File

@@ -1,23 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: libdivideVersion
type: string
default: master
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/libdivide.yml
parameters:
libdivideVersion: ${{ parameters.libdivideVersion }}

View File

@@ -16,14 +16,14 @@ resources:
- repository: release_repo - repository: release_repo
type: github type: github
endpoint: ROCm endpoint: ROCm
name: ROCm/rocJPEG name: ROCm/omniperf
ref: ${{ parameters.checkoutRef }} ref: ${{ parameters.checkoutRef }}
trigger: none trigger: none
pr: none pr: none
jobs: jobs:
- template: ${{ variables.CI_COMPONENT_PATH }}/rocJPEG.yml - template: ${{ variables.CI_COMPONENT_PATH }}/omniperf.yml
parameters: parameters:
checkoutRepo: release_repo checkoutRepo: release_repo
checkoutRef: ${{ parameters.checkoutRef }} checkoutRef: ${{ parameters.checkoutRef }}

View File

@@ -1,29 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: checkoutRef
type: string
default: refs/tags/$(LATEST_RELEASE_TAG)
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
- repository: release_repo
type: github
endpoint: ROCm
name: ROCm/rocprofiler-compute
ref: ${{ parameters.checkoutRef }}
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler-compute.yml
parameters:
checkoutRepo: release_repo
checkoutRef: ${{ parameters.checkoutRef }}

View File

@@ -1,23 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: spdlogVersion
type: string
default: "v1.15.1"
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/spdlog.yml
parameters:
spdlogVersion: ${{ parameters.spdlogVersion }}

View File

@@ -1,24 +0,0 @@
variables:
- group: common
- template: /.azuredevops/variables-global.yml
parameters:
- name: yamlcppVersion
type: string
default: "0.8.0"
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm
trigger: none
pr: none
jobs:
- template: ${{ variables.CI_DEPENDENCIES_PATH }}/yamlcpp.yml
parameters:
yamlcppVersion: ${{ parameters.yamlcppVersion }}

View File

@@ -6,55 +6,197 @@ parameters:
- name: pipelineId - name: pipelineId
type: string type: string
default: '' default: ''
- name: branchName - name: useDefaultBranch
type: string type: boolean
default: '$(Build.SourceBranchName)' # for tagged builds default: true
# useMainlineBranch only processed if useDefaultBranch is false
- name: useMainlineBranch
type: boolean
default: false
- name: latestFromBranch
type: boolean
default: true
- name: extractToMnt
type: boolean
default: false
- name: fileFilter - name: fileFilter
type: string type: string
default: '' default: ''
- name: extractAndDeleteFiles - name: defaultBranchList
type: boolean type: object
default: true default:
# set to true if doing full build of ROCm stack AMDMIGraphX: develop
# and dependencies are pulled from same pipeline amdsmi: amd-staging
- name: aggregatePipeline aomp-extras: aomp-dev
type: boolean aomp: aomp-dev
default: false clr: amd-staging
composable_kernel: develop
half: rocm
HIP: amd-staging
hip-tests: amd-staging
hipBLAS: develop
hipBLASLt: develop
hipBLAS-common: develop
hipCUB: develop
hipFFT: develop
hipfort: develop
HIPIFY: amd-staging
hipRAND: develop
hipSOLVER: develop
hipSPARSE: develop
hipSPARSELt: develop
hipTensor: develop
llvm-project: amd-staging
MIOpen: develop
MIVisionX: develop
omniperf: amd-staging
omnitrace: amd-staging
rccl: develop
rdc: amd-staging
rocAL: develop
rocALUTION: develop
rocBLAS: develop
ROCdbgapi : amd-staging
rocDecode: develop
rocFFT: develop
ROCgdb: amd-staging
rocm-cmake: develop
rocm-core: amd-staging
rocm-examples: develop
rocminfo: amd-staging
rocMLIR: develop
ROCmValidationSuite: master
rocm_bandwidth_test: master
rocm_smi_lib: amd-staging
rocPRIM: develop
rocprofiler: amd-staging
rocprofiler-register: amd-staging
rocprofiler-sdk: amd-staging
rocprofiler-systems: amd-staging
rocPyDecode: develop
ROCR-Runtime: amd-staging
rocRAND: develop
rocr_debug_agent: amd-staging
rocSOLVER: develop
rocSPARSE: develop
rocThrust: develop
roctracer: amd-staging
rocWMMA: develop
rpp: develop
- name: mainlineBranchList
type: object
default:
AMDMIGraphX: mainline
amdsmi: amd-mainline
aomp-extras: amd-mainline-open
aomp: amd-mainline-open
clr: amd-mainline
composable_kernel: mainline
half: rocm
HIP: amd-mainline
hip-tests: amd-mainline
hipBLAS: mainline
hipBLASLt: mainline
hipBLAS-common: mainline
hipCUB: mainline
hipFFT: mainline
hipfort: mainline
HIPIFY: amd-mainline
hipRAND: mainline
hipSOLVER: mainline
hipSPARSE: mainline
hipSPARSELt: mainline
hipTensor: mainline
llvm-project: amd-mainline-open
MIOpen: mainline
MIVisionX: mainline
omniperf: amd-mainline
omnitrace: amd-mainline
rccl: mainline
rdc: amd-mainline
rocAL: master # needs the yaml file
rocALUTION: mainline
rocBLAS: mainline
ROCdbgapi : amd-mainline
rocDecode: mainline
rocFFT: mainline
ROCgdb: amd-mainline-rocgdb-15 #
rocm-cmake: mainline
rocm-core: amd-master
rocm-examples: develop # no mainline
rocminfo: amd-master
rocMLIR: mainline # needs the yaml file
ROCmValidationSuite: mainline
rocm_bandwidth_test: master
rocm_smi_lib: amd-mainline
rocPRIM: mainline
rocprofiler: amd-master
rocprofiler-register: amd-mainline
rocprofiler-sdk: amd-mainline
rocprofiler-systems: amd-mainline
rocPyDecode: mainline
ROCR-Runtime: amd-master
rocRAND: mainline
rocr_debug_agent: amd-mainline
rocSOLVER: mainline
rocSPARSE: mainline
rocThrust: mainline
roctracer: amd-master
rocWMMA: mainline
rpp: mainline
- name: allowPartiallySucceededBuilds
type: object
default:
- amdsmi
- aomp
- HIPIFY
- MIVisionX
- omniperf
- rccl
- rdc
- rocm-cmake
- rocm_smi_lib
- rocFFT
- rpp
# BELOW REQUIRED IF useDefaultBranch false
- name: branchName
type: string
default: '$(Build.SourceBranchName)' # for tagged builds
steps: steps:
- task: DownloadPipelineArtifact@2 - task: DownloadPipelineArtifact@2
displayName: Download ${{ parameters.componentName }} displayName: Download ${{ parameters.componentName }}
retryCountOnTaskFailure: 3
inputs: inputs:
${{ if eq(parameters.componentName, 'clr') }}: buildType: 'specific'
itemPattern: '**/*${{ parameters.componentName }}*${{ parameters.fileFilter }}*amd*' # filter out nvidia clr artifacts project: ROCm-CI
definition: ${{ parameters.pipelineId }}
specificBuildWithTriggering: true
itemPattern: '**/*${{ parameters.fileFilter }}*'
${{ if eq(parameters.latestFromBranch, true) }}:
${{ if notIn(parameters.componentName, 'aomp') }}: # remove this once these pipelines are functional + up-to-date
buildVersionToDownload: latestFromBranch # default is 'latest'
${{ if eq(parameters.useDefaultBranch, true) }}:
branchName: refs/heads/${{ parameters.defaultBranchList[parameters.componentName] }}
${{ elseif eq(parameters.useMainlineBranch, true) }}:
branchName: refs/heads/${{ parameters.mainlineBranchList[parameters.componentName] }}
${{ else }}: ${{ else }}:
itemPattern: '**/*${{ parameters.componentName }}*${{ parameters.fileFilter }}*' branchName: ${{ parameters.branchName }}
${{ if containsValue(parameters.allowPartiallySucceededBuilds, parameters.componentName) }}:
allowPartiallySucceededBuilds: true
targetPath: '$(Pipeline.Workspace)/d' targetPath: '$(Pipeline.Workspace)/d'
allowPartiallySucceededBuilds: true - task: ExtractFiles@1
${{ if parameters.aggregatePipeline }}: displayName: Extract ${{ parameters.componentName }}
buildType: 'current' inputs:
archiveFilePatterns: '$(Pipeline.Workspace)/d/**/*.tar.gz'
${{ if parameters.extractToMnt }}:
destinationFolder: '/mnt/rocm'
${{ else }}: ${{ else }}:
buildType: 'specific'
project: ROCm-CI
specificBuildWithTriggering: true
definition: ${{ parameters.pipelineId }}
branchName: refs/heads/${{ parameters.branchName }}
${{ if eq(parameters.componentName, 'aomp') }}:
buildVersionToDownload: latest # aomp trigger lives in ROCm/ROCm, so cannot use ROCm/aomp branch names
${{ else }}:
buildVersionToDownload: latestFromBranch
- ${{ if eq(parameters.extractAndDeleteFiles, true) }}:
- task: ExtractFiles@1
displayName: Extract ${{ parameters.componentName }}
inputs:
archiveFilePatterns: '$(Pipeline.Workspace)/d/**/*.tar.gz'
destinationFolder: '$(Agent.BuildDirectory)/rocm' destinationFolder: '$(Agent.BuildDirectory)/rocm'
cleanDestinationFolder: false cleanDestinationFolder: false
overwriteExistingFiles: true overwriteExistingFiles: true
- task: DeleteFiles@1 - task: DeleteFiles@1
displayName: Clean up Compressed ${{ parameters.componentName }} displayName: Cleanup Compressed ${{ parameters.componentName }}
inputs: inputs:
SourceFolder: '$(Pipeline.Workspace)/d' SourceFolder: '$(Pipeline.Workspace)/d'
Contents: '**/*.tar.gz' Contents: '**/*.tar.gz'
RemoveDotFiles: true RemoveDotFiles: true

View File

@@ -1,32 +0,0 @@
# Every publish artifact call should be coupled with a script that
# prints out the artifact name to a common text file
# This template parses that text file line by line and prints out the download URL
# for each artifact, so that they are easily accessible to the public
# replace trailing '=' with their count in the encoded string
steps:
- task: Bash@3
displayName: "!! Download Links !!"
condition: always()
continueOnError: true
inputs:
workingDirectory: $(Pipeline.Workspace)
targetType: inline
script: |
URL_BEGIN="https://artprodcus3.artifacts.visualstudio.com/"
URL_MIDDLE="/_apis/artifact/"
URL_END="/content?format=file&subPath=%2F"
ARTIFACT_NAME="$(Agent.JobName)_$(System.JobAttempt)"
ARTIFACT_STRING="pipelineartifact://ROCm-CI/projectId/$(DOWNLOAD_PROJECT_ID)/buildId/$(Build.BuildId)/artifactName/${ARTIFACT_NAME}"
ENCODED_STRING=$(echo -n "${ARTIFACT_STRING}" | base64 -w 0)
PADDING_COUNT=$(echo -n "${ENCODED_STRING}" | awk -F= '{print NF-1}')
if [ "$PADDING_COUNT" -gt 0 ]; then
FINAL_ENCODED_STRING=$(echo -n "${ENCODED_STRING}" | sed "s/=*$/${PADDING_COUNT}/")
else
FINAL_ENCODED_STRING="${ENCODED_STRING}0"
fi
while IFS= read -r fileName; do
echo "File Name:"
echo "$fileName"
printf "Download Link:\n%s%s/%s%s%s%s%s\n\n" "${URL_BEGIN}" "${DOWNLOAD_ORGANIZATION_ID}" "${DOWNLOAD_PROJECT_ID}" "${URL_MIDDLE}" "${FINAL_ENCODED_STRING}" "${URL_END}" "${fileName}"
done < pipelineArtifacts.txt
rm pipelineArtifacts.txt

View File

@@ -3,21 +3,15 @@
# publish can be toggled off for jobs that produce multiple tarballs # publish can be toggled off for jobs that produce multiple tarballs
# for those cases, only publish the last call which puts all the tarballs in one container folder # for those cases, only publish the last call which puts all the tarballs in one container folder
parameters: parameters:
- name: componentName
type: string
default: $(Build.DefinitionName)
- name: gpuTarget
type: string
default: ''
- name: artifactName - name: artifactName
type: string type: string
default: drop default: 'drop'
- name: publish - name: publish
type: boolean type: boolean
default: true default: true
- name: os - name: gpuTarget
type: string type: string
default: 'ubuntu2204' default: ''
steps: steps:
- task: ArchiveFiles@2 - task: ArchiveFiles@2
@@ -26,26 +20,17 @@ steps:
includeRootFolder: false includeRootFolder: false
archiveType: 'tar' archiveType: 'tar'
tarCompression: 'gz' tarCompression: 'gz'
archiveFile: '$(Build.ArtifactStagingDirectory)/${{ parameters.componentName }}_$(Build.BuildId)_$(Build.BuildNumber)_${{ parameters.os }}_${{ parameters.gpuTarget }}_${{ parameters.artifactName }}_$(System.JobAttempt).tar.gz' archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}_${{ parameters.gpuTarget }}.tar.gz'
- task: DeleteFiles@1 - task: DeleteFiles@1
displayName: 'Cleanup Staging Area' displayName: 'Cleanup Staging Area'
inputs: inputs:
SourceFolder: '$(Build.BinariesDirectory)' SourceFolder: '$(Build.BinariesDirectory)'
Contents: '/**/*' Contents: '/**/*'
RemoveDotFiles: true RemoveDotFiles: true
- task: Bash@3
displayName: Save pipeline artifact file name
inputs:
workingDirectory: $(Pipeline.Workspace)
targetType: inline
script: echo "${{ parameters.componentName }}_$(Build.BuildId)_$(Build.BuildNumber)_${{ parameters.os }}_${{ parameters.gpuTarget }}_${{ parameters.artifactName }}_$(System.JobAttempt).tar.gz" >> pipelineArtifacts.txt
# then publish it # then publish it
- ${{ if parameters.publish }}: - ${{ if parameters.publish }}:
- task: PublishPipelineArtifact@1 - task: PublishPipelineArtifact@1
condition: always()
displayName: '${{ parameters.artifactName }} Publish' displayName: '${{ parameters.artifactName }} Publish'
retryCountOnTaskFailure: 3 retryCountOnTaskFailure: 3
inputs: inputs:
# if this artifact name is changed, please also update $ARTIFACT_URL inside miopen-get-ck-build.yml
artifactName: $(Agent.JobName)_$(System.JobAttempt)
targetPath: '$(Build.ArtifactStagingDirectory)' targetPath: '$(Build.ArtifactStagingDirectory)'

View File

@@ -1,7 +1,4 @@
parameters: parameters:
- name: os
type: string
default: 'ubuntu2204'
- name: componentName - name: componentName
type: string type: string
default: '' default: ''
@@ -23,23 +20,17 @@ steps:
displayName: '${{ parameters.componentName }} configure flags' displayName: '${{ parameters.componentName }} configure flags'
inputs: inputs:
targetType: inline targetType: inline
script: ./configure --prefix=${{ parameters.installDir }} ${{ parameters.configureFlags }}
workingDirectory: ${{ parameters.buildDir }} workingDirectory: ${{ parameters.buildDir }}
script: |
${{ iif(eq(parameters.os, 'almalinux8'), 'source /opt/rh/gcc-toolset-14/enable', '') }}
./configure --prefix=${{ parameters.installDir }} ${{ parameters.configureFlags }}
- task: Bash@3 - task: Bash@3
displayName: '${{ parameters.componentName }} make' displayName: '${{ parameters.componentName }} make'
inputs: inputs:
targetType: inline targetType: inline
script: ${{ parameters.makeCallPrefix }} make -j$(nproc)
workingDirectory: ${{ parameters.buildDir }} workingDirectory: ${{ parameters.buildDir }}
script: |
${{ iif(eq(parameters.os, 'almalinux8'), 'source /opt/rh/gcc-toolset-14/enable', '') }}
${{ parameters.makeCallPrefix }} make -j$(nproc)
- task: Bash@3 - task: Bash@3
displayName: '${{ parameters.componentName }} make install' displayName: '${{ parameters.componentName }} make install'
inputs: inputs:
targetType: inline targetType: inline
script: make install
workingDirectory: ${{ parameters.buildDir }} workingDirectory: ${{ parameters.buildDir }}
script: |
${{ iif(eq(parameters.os, 'almalinux8'), 'source /opt/rh/gcc-toolset-14/enable', '') }}
make install

Some files were not shown because too many files have changed in this diff Show More