parameters: - name: componentName type: string default: rocFFT - 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 - ninja-build - libboost-program-options-dev - libdrm-dev - libgtest-dev - libfftw3-dev - python3-pip # rocm dependencies should match dependencies-rocm.yml - name: rocmDependencies type: object default: - aomp - clr - hipRAND - llvm-project - rocm-cmake - rocminfo - rocprofiler-register - ROCR-Runtime - rocRAND - name: rocmTestDependencies type: object default: - aomp - clr - hipRAND - llvm-project - rocm-cmake - rocminfo - rocprofiler-register - ROCR-Runtime - 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: - ${{ each job in parameters.jobMatrix.buildJobs }}: - job: ${{ parameters.componentName }}_build_${{ job.target }} ${{ if parameters.buildDependsOn }}: dependsOn: - ${{ each build in parameters.buildDependsOn }}: - ${{ build }}_ubuntu2204_${{ job.target }} # todo: un-hardcode OS variables: - group: common - template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm 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-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: >- -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang++ -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/llvm/bin/amdclang -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DAMDGPU_TARGETS=${{ job.target }} -DUSE_HIP_CLANG=ON -DHIP_COMPILER=clang -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 }} 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: ${{ 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'], ','), variables['Build.DefinitionName'])), 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 }} - 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 }} - 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 }} - 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/bin' testExecutable: './rocfft-test' testParameters: '--test_prob 0.004 --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 }}