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: - build-essential - cmake - git - libdrm-amdgpu-dev - libdrm-dev - libdw-dev - libelf-dev - libsqlite3-dev - libva-dev - ninja-build - pkg-config - python3-pip - name: pipModules type: object default: - black - clang-format - clang-tidy - cmake - cmake-format - dataclasses - numpy - otf2 - pandas - perfetto - pycobertura - "pytest>=6.2.5" - pyyaml - name: rocmDependencies type: object default: - clr - llvm-project - ROCR-Runtime - name: rocmTestDependencies type: object default: - clr - llvm-project - rocminfo - ROCR-Runtime - rocprofiler-register - 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: ${{ parameters.componentName }}_build_${{ job.target }} ${{ if parameters.buildDependsOn }}: dependsOn: - ${{ each build in parameters.buildDependsOn }}: - ${{ build }}_${{ job.target }} 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 }} 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 }} 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 -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) }}: - ${{ each job in parameters.jobMatrix.testJobs }}: - job: ${{ parameters.componentName }}_test_${{ job.target }} dependsOn: ${{ parameters.componentName }}_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 pool: ${{ job.target }}_test_pool workspace: clean: all steps: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} sparseCheckoutDir: ${{ parameters.sparseCheckoutDir }} - 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)/s/aqlprofile/test/ testParameters: '' testExecutable: ./run.sh - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml parameters: aptPackages: ${{ parameters.aptPackages }} environment: test gpuTarget: ${{ job.target }}