diff --git a/.azuredevops/README.md b/.azuredevops/README.md new file mode 100644 index 000000000..83808a55d --- /dev/null +++ b/.azuredevops/README.md @@ -0,0 +1,30 @@ +# ROCm-CI Azure DevOps Pipelines + +ROCm-CI Azure DevOps Pipelines contains markup language files that orchestrate build and test pipelines for ROCm components using [Azure DevOps](https://dev.azure.com/ROCm-CI/ROCm-CI/_build). + +## Project Organization + +- `/.azuredevops/variables-global.yml` - set of global variables accessible across any and all pipelines + - protected keywords such as tokens and passwords are kept as secrets within the Azure DevOps project +- `/.azuredevops/components` - the sequence of templated steps for the job that checks out source, builds, packages, and runs tests for a ROCm repo +- `/.azuredevops/scheduled` - the sequence of templated steps for jobs that are schedule-based and not tied to a specific ROCm repo +- `/.azuredevops/tag-builds` - yml files to orchestrate manual builds based on specific tags (e.g., releases) without needing the corresponding yaml file in the component's repo +- `/.azuredevops/templates` - reusable yml files representing the templated steps that form the sequences in the above directories + +### Per ROCm Repo + +- `/.azuredevops/rocm-ci.yml` - contains the CI and PR trigger definitions associated with that repo, pointing to the corresponding yml file in the components folder in this central repository + +## Key Azure Reference Links + +- [Pipeline Basics](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/key-pipelines-concepts?view=azure-devops) +- [Templates](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes) +- [Use Predefined Variables](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml) +- [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) + +## 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. + +© 2024 Advanced Micro Devices, Inc. All Rights Reserved. diff --git a/.azuredevops/components/HIP.yml b/.azuredevops/components/HIP.yml new file mode 100644 index 000000000..5d78f0144 --- /dev/null +++ b/.azuredevops/components/HIP.yml @@ -0,0 +1,165 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libnuma-dev + - mesa-common-dev +- name: pipModules + type: object + default: + - CppHeaderParser + +# hip and clr are tightly-coupled +# run this same template for both repos +# any changes for clr should just trigger HIP pipeline +# similarly for hipother repo, for Nvidia backend + +# HIP with AMD backend +jobs: +- job: hip_clr_combined_amd + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} +# 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 +# download tasks has built in 4x retry download count +# these will download last passing build for that branch +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + branchName: master + pipelineId: $(roct-thunk-interface-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + branchName: master + pipelineId: $(rocr-runtime-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocprofiler-register + branchName: amd-mainline + pipelineId: $(rocprofiler-register-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + pipelineId: $(roct-thunk-interface-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + pipelineId: $(rocr-runtime-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocprofiler-register + pipelineId: $(rocprofiler-register-tagged-pipeline-id) + - 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=amd + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + -DROCM_PATH="$(Agent.BuildDirectory)/rocm" + -DHIPCC_BIN_DIR="$(Agent.BuildDirectory)/rocm/bin" + -DCLR_BUILD_HIP=ON + -DCLR_BUILD_OCL=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + artifactName: amd + +# HIP with Nvidia backend +- job: hip_clr_combined_nvidia + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} +# 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 +# download tasks has built in 4x retry download count +# these will download last passing build for that branch +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - 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 diff --git a/.azuredevops/components/HIPIFY.yml b/.azuredevops/components/HIPIFY.yml new file mode 100644 index 000000000..16ae0ff41 --- /dev/null +++ b/.azuredevops/components/HIPIFY.yml @@ -0,0 +1,52 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libnuma-dev + +jobs: +- job: HIPIFY + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: \tag-builds\llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm" + -DROCM_PATH="$(Agent.BuildDirectory)/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml new file mode 100644 index 000000000..cbcd92562 --- /dev/null +++ b/.azuredevops/components/MIVisionX.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: MIVisionX + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} + - task: Bash@3 + displayName: 'Dependency Setup' + inputs: + targetType: inline + script: 'python3 MIVisionX-setup.py' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCR-Runtime.yml b/.azuredevops/components/ROCR-Runtime.yml new file mode 100644 index 000000000..4e388407f --- /dev/null +++ b/.azuredevops/components/ROCR-Runtime.yml @@ -0,0 +1,62 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libelf-dev + - g++ + - libdrm-dev + - libnuma-dev + +jobs: +- job: ROCR_Runtime + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + branchName: master + pipelineId: $(roct-thunk-interface-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCT-Thunk-Interface + pipelineId: $(roct-thunk-interface-tagged-pipeline-id) + - script: 'ls -1R $(Agent.BuildDirectory)/rocm' + displayName: 'Artifact listing' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + cmakeBuildDir: 'src/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCT-Thunk-Interface.yml b/.azuredevops/components/ROCT-Thunk-Interface.yml new file mode 100644 index 000000000..c3d51f2e7 --- /dev/null +++ b/.azuredevops/components/ROCT-Thunk-Interface.yml @@ -0,0 +1,32 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libnuma-dev + - libdrm-dev + +jobs: +- job: ROCT_Thunk_Interface + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCdbgapi.yml b/.azuredevops/components/ROCdbgapi.yml new file mode 100644 index 000000000..dd930c7c3 --- /dev/null +++ b/.azuredevops/components/ROCdbgapi.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: ROCdbgapi + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/ROCmValidationSuite.yml b/.azuredevops/components/ROCmValidationSuite.yml new file mode 100644 index 000000000..3c7f26ab9 --- /dev/null +++ b/.azuredevops/components/ROCmValidationSuite.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - libyaml-cpp-dev + - libpci-dev + - libpci3 + - googletest + - git + +jobs: +- job: ROCmValidationSuite + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DROCM_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCPACK_PACKAGING_INSTALL_PREFIX='$(Build.BinariesDirectory)' + -DAMDGPU_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/amdsmi.yml b/.azuredevops/components/amdsmi.yml new file mode 100644 index 000000000..c8b7ee794 --- /dev/null +++ b/.azuredevops/components/amdsmi.yml @@ -0,0 +1,34 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libdrm-dev + +jobs: +- job: amdsmi + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_TESTS=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/copyHIP.yml b/.azuredevops/components/copyHIP.yml new file mode 100644 index 000000000..a5c0ab8ba --- /dev/null +++ b/.azuredevops/components/copyHIP.yml @@ -0,0 +1,32 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +# hip and clr are tightly-coupled +# run this same template for both repos +# any changes for clr should just trigger HIP pipeline +jobs: +- job: hip_clr_combined + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: +# checkout nothing, just copy artifacts from triggering HIP job +# and then publish for this clr job or for this hipother job to maintain latest + - checkout: none + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: HIP + branchName: develop + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-prepare-package.yml + parameters: + sourceDir: $(Agent.BuildDirectory)/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/half.yml b/.azuredevops/components/half.yml new file mode 100644 index 000000000..1496d21ce --- /dev/null +++ b/.azuredevops/components/half.yml @@ -0,0 +1,41 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + +jobs: +- job: half + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLAS.yml b/.azuredevops/components/hipBLAS.yml new file mode 100644 index 000000000..12e349ef8 --- /dev/null +++ b/.azuredevops/components/hipBLAS.yml @@ -0,0 +1,55 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - rocsparse + - rocsolver + - gfortran + - libopenblas-dev + - git + +jobs: +- job: hipBLAS + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} +# build external gtest and lapack + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: external + cmakeBuildDir: 'deps/build' + installDir: '$(Pipeline.Workspace)/deps-install' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DHIP_PLATFORM=amd + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml new file mode 100644 index 000000000..b03da47bf --- /dev/null +++ b/.azuredevops/components/hipBLASLt.yml @@ -0,0 +1,54 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - libmsgpack-dev + - hipblas-dev + - git +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: hipBLASLt + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx90a + -DTensile_LOGIC= + -DTensile_CPU_THREADS= + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LIBRARY_FORMAT=msgpack + -DCMAKE_PREFIX_PATH="/opt/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipCUB.yml b/.azuredevops/components/hipCUB.yml new file mode 100644 index 000000000..921db9fe3 --- /dev/null +++ b/.azuredevops/components/hipCUB.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - rocprim + - googletest + - git + +jobs: +- job: hipCUB + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DBUILD_TEST=ON + -DAMDGPU_TARGETS=gfx1100 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipFFT.yml b/.azuredevops/components/hipFFT.yml new file mode 100644 index 000000000..f20dfc304 --- /dev/null +++ b/.azuredevops/components/hipFFT.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocrand + - hiprand + - rocfft + - libboost-program-options-dev + - googletest + - libfftw3-dev + +jobs: +- job: hipFFT + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipRAND.yml b/.azuredevops/components/hipRAND.yml new file mode 100644 index 000000000..ef61cb5e8 --- /dev/null +++ b/.azuredevops/components/hipRAND.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - googletest + - git + - rocrand + +jobs: +- job: hipRAND + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DBUILD_TEST=ON + -DCMAKE_MODULE_PATH="/opt/rocm/lib/cmake/hip" + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1100 + -DHIP_COMPILER=clang + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSOLVER.yml b/.azuredevops/components/hipSOLVER.yml new file mode 100644 index 000000000..b1913188d --- /dev/null +++ b/.azuredevops/components/hipSOLVER.yml @@ -0,0 +1,58 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocblas + - rocsparse + - hipsparse + - rocsolver + - libsuitesparse-dev + - gfortran + - git + +jobs: +- job: hipSOLVER + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} +# build external gtest and lapack + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: external + cmakeBuildDir: 'deps/build' + installDir: '$(Pipeline.Workspace)/deps-install' + extraBuildFlags: -DBUILD_BOOST=OFF + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="/opt/rocm;$(Pipeline.Workspace)/deps-install" + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DBUILD_CLIENTS_TESTS=ON + -DUSE_CUDA=OFF + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/hipSPARSE.yml b/.azuredevops/components/hipSPARSE.yml new file mode 100644 index 000000000..8f8d24bb6 --- /dev/null +++ b/.azuredevops/components/hipSPARSE.yml @@ -0,0 +1,40 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - googletest + - libfftw3-dev + - rocsparse + - git + +jobs: +- job: hipSPARSE + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-script.yml + parameters: + scriptExecutable: sudo ./install.sh + scriptParameters: -c -i -d diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml new file mode 100644 index 000000000..cfdc736c6 --- /dev/null +++ b/.azuredevops/components/hipSPARSELt.yml @@ -0,0 +1,55 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - libmsgpack-dev + - hipsparse-dev + - git +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: hipSPARSELt + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=all + -DTensile_LOGIC= + -DTensile_CPU_THREADS= + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LIBRARY_FORMAT=msgpack + -DCMAKE_PREFIX_PATH="/opt/rocm" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml new file mode 100644 index 000000000..c9cf8d294 --- /dev/null +++ b/.azuredevops/components/llvm-project.yml @@ -0,0 +1,112 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - python3-pip + - libnuma-dev + - ninja-build + - ccache + +jobs: +- job: llvm_project + variables: + - group: common + - template: /.azuredevops/variables-global.yml + - name: HIP_DEVICE_LIB_PATH + value: '$(Build.BinariesDirectory)/amdgcn/bitcode' + pool: ${{ variables.CLOUD_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocm-cmake + branchName: develop + pipelineId: $(rocm-cmake-pipeline-id) + testFailuresOkay: true +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: rocm-cmake + pipelineId: $(rocm-cmake-tagged-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: rocm-llvm + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.BinariesDirectory)/llvm;$(Build.BinariesDirectory)" + -DCMAKE_BUILD_TYPE=Release + -DLLVM_ENABLE_PROJECTS="llvm;clang;lld;clang-tools-extra" + -DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind" + -DCLANG_ENABLE_AMDCLANG="ON" + -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" + -GNinja + cmakeBuildDir: 'llvm/build' + installDir: '$(Build.BinariesDirectory)/llvm' +# use llvm-lit to run unit tests for llvm, clang, and lld + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-llvm + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=llvm_test_output.xml ./test' + testOutputFile: llvm_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-clang + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=clang_test_output.xml ./tools/clang/test' + testOutputFile: clang_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: check-lld + testDir: 'llvm/build' + testExecutable: './bin/llvm-lit' + testParameters: '-q --xunit-xml-output=lld_test_output.xml ./tools/lld/test' + testOutputFile: lld_test_output.xml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: device-libs + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build" + -DCMAKE_BUILD_TYPE=Release + cmakeBuildDir: 'amd/device-libs/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: comgr + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Build.SourcesDirectory)/llvm/build;$(Build.SourcesDirectory)/amd/device-libs/build" + -DCMAKE_BUILD_TYPE=Release + cmakeBuildDir: 'amd/comgr/build' + - 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 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + componentName: hipcc + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DHIPCC_BACKWARD_COMPATIBILITY=OFF + cmakeBuildDir: 'amd/hipcc/build' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml new file mode 100644 index 000000000..9d30ea5bc --- /dev/null +++ b/.azuredevops/components/rccl.yml @@ -0,0 +1,38 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - googletest + - libfftw3-dev + - git + +jobs: +- job: rccl + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-script.yml + parameters: + scriptExecutable: ./install.sh + scriptParameters: -d -t diff --git a/.azuredevops/components/rocALUTION.yml b/.azuredevops/components/rocALUTION.yml new file mode 100644 index 000000000..aff32eae4 --- /dev/null +++ b/.azuredevops/components/rocALUTION.yml @@ -0,0 +1,40 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libboost-program-options-dev + - libgtest-dev + - libfftw3-dev + - git + - mpich + +jobs: +- job: rocALUTION + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-script.yml + parameters: + scriptExecutable: ./install.sh + scriptParameters: -i -c -d diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml new file mode 100644 index 000000000..7caf96ab0 --- /dev/null +++ b/.azuredevops/components/rocBLAS.yml @@ -0,0 +1,56 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - python3-venv + - git + - libmsgpack-dev +- name: pipModules + type: object + default: + - joblib + +jobs: +- job: rocBLAS + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DTensile_CODE_OBJECT_VERSION=default + -DTensile_LOGIC=asm_full + -DTensile_SEPARATE_ARCHITECTURES=ON + -DTensile_LAZY_LIBRARY_LOADING=ON + -DTensile_LIBRARY_FORMAT=msgpack + -DTENSILE_VENV_UPGRADE_PIP=ON + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocDecode.yml b/.azuredevops/components/rocDecode.yml new file mode 100644 index 000000000..10ff7a881 --- /dev/null +++ b/.azuredevops/components/rocDecode.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - pkg-config + - ffmpeg + - libavcodec-dev + - libavformat-dev + - libavutil-dev + - libstdc++-12-dev + - mesa-amdgpu-multimedia-devel + +jobs: +- job: rocDecode + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DBUILD_CLIENTS=ON + -L + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocFFT.yml b/.azuredevops/components/rocFFT.yml new file mode 100644 index 000000000..b32ae8791 --- /dev/null +++ b/.azuredevops/components/rocFFT.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - rocrand + - hiprand + - libboost-program-options-dev + - libgtest-dev + - libfftw3-dev + +jobs: +- job: rocFFT + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.CLOUD_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=hipcc + -DCMAKE_C_COMPILER=hipcc + -DCMAKE_PREFIX_PATH=/opt/rocm + -DCMAKE_BUILD_TYPE=Release + -DAMDGPU_TARGETS=gfx1100 + -DUSE_HIP_CLANG=ON + -DHIP_COMPILER=clang + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml new file mode 100644 index 000000000..2ea019ae3 --- /dev/null +++ b/.azuredevops/components/rocPRIM.yml @@ -0,0 +1,45 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libgtest-dev + - git + +jobs: +- job: rocPRIM + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} +# ${{ }} are resolved during compile-time +# so this next step is skipped completely until +# we define explicit aptPackages needed to install + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_BENCHMARK=ON + -DCMAKE_CXX_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocRAND.yml b/.azuredevops/components/rocRAND.yml new file mode 100644 index 000000000..10abb2780 --- /dev/null +++ b/.azuredevops/components/rocRAND.yml @@ -0,0 +1,44 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - googletest + - git + +jobs: +- job: rocRAND + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DBUILD_TEST=ON + -DCMAKE_CXX_COMPILER=hipcc + -DAMDGPU_TARGETS=gfx1100 + -DAMDGPU_TEST_TARGETS=gfx1100 + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocThrust.yml b/.azuredevops/components/rocThrust.yml new file mode 100644 index 000000000..cdfa229d4 --- /dev/null +++ b/.azuredevops/components/rocThrust.yml @@ -0,0 +1,47 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - hiprand + - rocprim-dev + - libboost-program-options-dev + - googletest + - libfftw3-dev + - git + +jobs: +- job: rocThrust + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -GNinja + -DCMAKE_CXX_COMPILER=hipcc + -DROCM_PATH=/opt/rocm + -DCMAKE_PREFIX_PATH=/opt/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + diff --git a/.azuredevops/components/rocgdb.yml b/.azuredevops/components/rocgdb.yml new file mode 100644 index 000000000..185190d06 --- /dev/null +++ b/.azuredevops/components/rocgdb.yml @@ -0,0 +1,35 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - libgmp-dev + - libmpfr-dev + - texinfo + - bison + - flex + +jobs: +- job: rocgdb + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-autotools.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-cmake.yml b/.azuredevops/components/rocm-cmake.yml new file mode 100644 index 000000000..94d6e85dd --- /dev/null +++ b/.azuredevops/components/rocm-cmake.yml @@ -0,0 +1,48 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - doxygen + - doxygen-doc + - ninja-build + - python3-sphinx +- name: pipModules + type: object + default: + - cget + - ninja + +jobs: +- job: rocm_cmake + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml +# extra steps for ctest suite + - 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" + displayName: "ctest setup" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-core.yml b/.azuredevops/components/rocm-core.yml new file mode 100644 index 000000000..d78f26ce2 --- /dev/null +++ b/.azuredevops/components/rocm-core.yml @@ -0,0 +1,33 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_core + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - 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/build-cmake.yml + parameters: + 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="$(last-release)" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm-examples.yml b/.azuredevops/components/rocm-examples.yml new file mode 100644 index 000000000..37cfafe56 --- /dev/null +++ b/.azuredevops/components/rocm-examples.yml @@ -0,0 +1,24 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_examples + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - 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/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm_bandwidth_test.yml b/.azuredevops/components/rocm_bandwidth_test.yml new file mode 100644 index 000000000..79f27dfa9 --- /dev/null +++ b/.azuredevops/components/rocm_bandwidth_test.yml @@ -0,0 +1,46 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build +- name: pipModules + type: object + default: + - CppHeaderParser + - argparse + +jobs: +- job: rocm_bandwidth_test + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=release + -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules" + -DCMAKE_PREFIX_PATH=/opt/rocm + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocm_smi_lib.yml b/.azuredevops/components/rocm_smi_lib.yml new file mode 100644 index 000000000..d5b1b1cd1 --- /dev/null +++ b/.azuredevops/components/rocm_smi_lib.yml @@ -0,0 +1,27 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocm_smi_lib + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - 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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DBUILD_TESTS=ON + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocminfo.yml b/.azuredevops/components/rocminfo.yml new file mode 100644 index 000000000..b9ec4c1ec --- /dev/null +++ b/.azuredevops/components/rocminfo.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocminfo + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + branchName: master + pipelineId: $(rocr-runtime-pipeline-id) + testFailuresOkay: true +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: ROCR-Runtime + pipelineId: $(rocr-runtime-tagged-pipeline-id) + testFailuresOkay: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler-register.yml b/.azuredevops/components/rocprofiler-register.yml new file mode 100644 index 000000000..3f5e5c15e --- /dev/null +++ b/.azuredevops/components/rocprofiler-register.yml @@ -0,0 +1,24 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' + +jobs: +- job: rocprofiler_register + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + workspace: + clean: all + steps: + - 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/build-cmake.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml new file mode 100644 index 000000000..81060fc66 --- /dev/null +++ b/.azuredevops/components/rocprofiler.yml @@ -0,0 +1,58 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libgtest-dev + - libdw-dev + - libsystemd-dev + - libelf-dev + - libnuma-dev + - libpciaccess-dev + - rocm-llvm-dev +- name: pipModules + type: object + default: + - pyyaml==5.3.1 + - Cppheaderparser + - websockets + - matplotlib + - lxml + - barectf + - pandas + +jobs: +- job: rocprofiler + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_MODULE_PATH="$(Build.SourcesDirectory)/cmake_modules;/opt/rocm/lib/cmake" + -DCMAKE_PREFIX_PATH="/opt/rocm" + -DENABLE_LDCONFIG=OFF + -DUSE_PROF_API=1 + -DGPU_TARGETS="gfx1100" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/rocr_debug_agent.yml b/.azuredevops/components/rocr_debug_agent.yml new file mode 100644 index 000000000..0c7056866 --- /dev/null +++ b/.azuredevops/components/rocr_debug_agent.yml @@ -0,0 +1,42 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build + - libelf-dev + - libdw-dev + +jobs: +- job: rocr_debug_agent + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=Release + -DROCM_PATH=/opt/rocm + -DCMAKE_MODULE_PATH=/opt/rocm/lib/cmake + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/components/roctracer.yml b/.azuredevops/components/roctracer.yml new file mode 100644 index 000000000..a7380f509 --- /dev/null +++ b/.azuredevops/components/roctracer.yml @@ -0,0 +1,61 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - ninja-build +- name: pipModules + type: object + default: + - CppHeaderParser + - argparse + +jobs: +- job: roctracer + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + vmImage: ${{ variables.LOW_END_BUILD_POOL }} + container: + image: ${{ variables.DOCKER_IMAGE_NAME }}:${{ variables.LATEST_DOCKER_VERSION }} + workspace: + clean: all + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies.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 }} +# CI case: download latest default branch build + - ${{ if eq(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + branchName: amd-staging + pipelineId: $(llvm-project-pipeline-id) +# manual build case: triggered by ROCm/ROCm repo + - ${{ if ne(parameters.checkoutRef, '') }}: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-download.yml + parameters: + componentName: llvm-project + pipelineId: $(llvm-project-tagged-pipeline-id) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_BUILD_TYPE=release + -DCMAKE_MODULE_PATH="$(Agent.BuildDirectory)/rocm/lib/cmake" + -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm" + -DENABLE_LDCONFIG=OFF + -DGPU_TARGETS="gfx1100" + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml diff --git a/.azuredevops/tag-builds/HIP.yml b/.azuredevops/tag-builds/HIP.yml new file mode 100644 index 000000000..0592d4b88 --- /dev/null +++ b/.azuredevops/tag-builds/HIP.yml @@ -0,0 +1,39 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/HIP + ref: ${{ parameters.checkoutRef }} + - repository: matching_repo + type: github + endpoint: ROCm + name: ROCm/clr + ref: ${{ parameters.checkoutRef }} + - repository: hipother_repo + type: github + endpoint: ROCm + name: ROCm/hipother + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/HIP.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/HIPIFY.yml b/.azuredevops/tag-builds/HIPIFY.yml new file mode 100644 index 000000000..93973bd7a --- /dev/null +++ b/.azuredevops/tag-builds/HIPIFY.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/HIPIFY + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/HIPIFY.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/MIVisionX.yml b/.azuredevops/tag-builds/MIVisionX.yml new file mode 100644 index 000000000..3b43fa232 --- /dev/null +++ b/.azuredevops/tag-builds/MIVisionX.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/MIVisionX + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/MIVisionX.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCR-Runtime.yml b/.azuredevops/tag-builds/ROCR-Runtime.yml new file mode 100644 index 000000000..e9b2fe8fd --- /dev/null +++ b/.azuredevops/tag-builds/ROCR-Runtime.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/ROCR-Runtime + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCR-Runtime.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml new file mode 100644 index 000000000..b06da04c3 --- /dev/null +++ b/.azuredevops/tag-builds/ROCT-Thunk-Interface.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/ROCT-Thunk-Interface + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCT-Thunk-Interface.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCdbgapi.yml b/.azuredevops/tag-builds/ROCdbgapi.yml new file mode 100644 index 000000000..bf1e0715d --- /dev/null +++ b/.azuredevops/tag-builds/ROCdbgapi.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/ROCdbgapi + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCdbgapi.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/ROCmValidationSuite.yml b/.azuredevops/tag-builds/ROCmValidationSuite.yml new file mode 100644 index 000000000..a3eb0f974 --- /dev/null +++ b/.azuredevops/tag-builds/ROCmValidationSuite.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/ROCmValidationSuite + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/ROCmValidationSuite.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/amdsmi.yml b/.azuredevops/tag-builds/amdsmi.yml new file mode 100644 index 000000000..9eae30bb2 --- /dev/null +++ b/.azuredevops/tag-builds/amdsmi.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/amdsmi + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/amdsmi.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/half.yml b/.azuredevops/tag-builds/half.yml new file mode 100644 index 000000000..f1dcde928 --- /dev/null +++ b/.azuredevops/tag-builds/half.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/half + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/half.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLAS.yml b/.azuredevops/tag-builds/hipBLAS.yml new file mode 100644 index 000000000..e98b6584f --- /dev/null +++ b/.azuredevops/tag-builds/hipBLAS.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipBLAS + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLAS.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipBLASLt.yml b/.azuredevops/tag-builds/hipBLASLt.yml new file mode 100644 index 000000000..cf2414301 --- /dev/null +++ b/.azuredevops/tag-builds/hipBLASLt.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipBLASLt + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipBLASLt.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipCUB.yml b/.azuredevops/tag-builds/hipCUB.yml new file mode 100644 index 000000000..ddf467006 --- /dev/null +++ b/.azuredevops/tag-builds/hipCUB.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipCUB + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipCUB.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipFFT.yml b/.azuredevops/tag-builds/hipFFT.yml new file mode 100644 index 000000000..6245c1384 --- /dev/null +++ b/.azuredevops/tag-builds/hipFFT.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipFFT + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipFFT.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipRAND.yml b/.azuredevops/tag-builds/hipRAND.yml new file mode 100644 index 000000000..5515494ad --- /dev/null +++ b/.azuredevops/tag-builds/hipRAND.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipRAND + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipRAND.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSOLVER.yml b/.azuredevops/tag-builds/hipSOLVER.yml new file mode 100644 index 000000000..5f1d85d18 --- /dev/null +++ b/.azuredevops/tag-builds/hipSOLVER.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipSOLVER + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSOLVER.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSE.yml b/.azuredevops/tag-builds/hipSPARSE.yml new file mode 100644 index 000000000..00eb03439 --- /dev/null +++ b/.azuredevops/tag-builds/hipSPARSE.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipSPARSE + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSE.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/hipSPARSELt.yml b/.azuredevops/tag-builds/hipSPARSELt.yml new file mode 100644 index 000000000..70dfd285d --- /dev/null +++ b/.azuredevops/tag-builds/hipSPARSELt.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/hipSPARSELt + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/hipSPARSELt.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/llvm-project.yml b/.azuredevops/tag-builds/llvm-project.yml new file mode 100644 index 000000000..9ebeaf78f --- /dev/null +++ b/.azuredevops/tag-builds/llvm-project.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/llvm-project + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/llvm-project.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rccl.yml b/.azuredevops/tag-builds/rccl.yml new file mode 100644 index 000000000..e5a8a8c76 --- /dev/null +++ b/.azuredevops/tag-builds/rccl.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rccl + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rccl.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocALUTION.yml b/.azuredevops/tag-builds/rocALUTION.yml new file mode 100644 index 000000000..1bef693a3 --- /dev/null +++ b/.azuredevops/tag-builds/rocALUTION.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocALUTION + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocALUTION.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocBLAS.yml b/.azuredevops/tag-builds/rocBLAS.yml new file mode 100644 index 000000000..4f65183d8 --- /dev/null +++ b/.azuredevops/tag-builds/rocBLAS.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocBLAS + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocBLAS.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocDecode.yml b/.azuredevops/tag-builds/rocDecode.yml new file mode 100644 index 000000000..01bcca5d6 --- /dev/null +++ b/.azuredevops/tag-builds/rocDecode.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocDecode + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocDecode.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocFFT.yml b/.azuredevops/tag-builds/rocFFT.yml new file mode 100644 index 000000000..d572418a1 --- /dev/null +++ b/.azuredevops/tag-builds/rocFFT.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocFFT + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocFFT.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocPRIM.yml b/.azuredevops/tag-builds/rocPRIM.yml new file mode 100644 index 000000000..2498b4052 --- /dev/null +++ b/.azuredevops/tag-builds/rocPRIM.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocPRIM + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocPRIM.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocRAND.yml b/.azuredevops/tag-builds/rocRAND.yml new file mode 100644 index 000000000..9980d2827 --- /dev/null +++ b/.azuredevops/tag-builds/rocRAND.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocRAND + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocRAND.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocThrust.yml b/.azuredevops/tag-builds/rocThrust.yml new file mode 100644 index 000000000..0ffea0d14 --- /dev/null +++ b/.azuredevops/tag-builds/rocThrust.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocThrust + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocThrust.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocgdb.yml b/.azuredevops/tag-builds/rocgdb.yml new file mode 100644 index 000000000..0b420e7f8 --- /dev/null +++ b/.azuredevops/tag-builds/rocgdb.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocgdb + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocgdb.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-cmake.yml b/.azuredevops/tag-builds/rocm-cmake.yml new file mode 100644 index 000000000..1ef560b1b --- /dev/null +++ b/.azuredevops/tag-builds/rocm-cmake.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocm-cmake + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-cmake.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm-core.yml b/.azuredevops/tag-builds/rocm-core.yml new file mode 100644 index 000000000..f6631f6e4 --- /dev/null +++ b/.azuredevops/tag-builds/rocm-core.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocm-core + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm-core.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_bandwidth_test.yml b/.azuredevops/tag-builds/rocm_bandwidth_test.yml new file mode 100644 index 000000000..bf15ad830 --- /dev/null +++ b/.azuredevops/tag-builds/rocm_bandwidth_test.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocm_bandwidth_test + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_bandwidth_test.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocm_smi_lib.yml b/.azuredevops/tag-builds/rocm_smi_lib.yml new file mode 100644 index 000000000..110141f06 --- /dev/null +++ b/.azuredevops/tag-builds/rocm_smi_lib.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocm_smi_lib + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocm_smi_lib.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocminfo.yml b/.azuredevops/tag-builds/rocminfo.yml new file mode 100644 index 000000000..ea19e8576 --- /dev/null +++ b/.azuredevops/tag-builds/rocminfo.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocminfo + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocminfo.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler-register.yml b/.azuredevops/tag-builds/rocprofiler-register.yml new file mode 100644 index 000000000..3d6d4f827 --- /dev/null +++ b/.azuredevops/tag-builds/rocprofiler-register.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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-register + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler-register.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocprofiler.yml b/.azuredevops/tag-builds/rocprofiler.yml new file mode 100644 index 000000000..708f362af --- /dev/null +++ b/.azuredevops/tag-builds/rocprofiler.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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 + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocprofiler.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/rocr_debug_agent.yml b/.azuredevops/tag-builds/rocr_debug_agent.yml new file mode 100644 index 000000000..b92fb012e --- /dev/null +++ b/.azuredevops/tag-builds/rocr_debug_agent.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/rocr_debug_agent + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/rocr_debug_agent.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/tag-builds/roctracer.yml b/.azuredevops/tag-builds/roctracer.yml new file mode 100644 index 000000000..782e5eafc --- /dev/null +++ b/.azuredevops/tag-builds/roctracer.yml @@ -0,0 +1,29 @@ +variables: +- group: common +- template: /.azuredevops/variables-global.yml@pipelines_repo + +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/roctracer + ref: ${{ parameters.checkoutRef }} + +trigger: none +pr: none + +jobs: + - template: ${{ variables.CI_COMPONENT_PATH }}/roctracer.yml@pipelines_repo + parameters: + checkoutRepo: release_repo + checkoutRef: ${{ parameters.checkoutRef }} diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml new file mode 100644 index 000000000..f5f36ed32 --- /dev/null +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -0,0 +1,39 @@ +parameters: +# assumption componentName and pipeline name the same +- name: componentName + type: string + default: '' +- name: pipelineId + type: string + default: '' +- name: branchName + type: string + default: '$(Build.SourceBranchName)' # for tagged builds +- name: testFailuresOkay + type: boolean + default: false + +steps: +- task: DownloadPipelineArtifact@2 + displayName: Download ${{ parameters.componentName }} + inputs: + buildType: 'specific' + project: ROCm-CI + pipeline: ${{ parameters.pipelineId }} + specificBuildWithTriggering: true + allowPartiallySucceededBuilds: ${{ parameters.testFailuresOkay }} + branchName: ${{ parameters.branchName }} + targetPath: '$(System.ArtifactsDirectory)' +- task: ExtractFiles@1 + displayName: Extract ${{ parameters.componentName }} + inputs: + archiveFilePatterns: '$(System.ArtifactsDirectory)/**/*.tar.gz' + destinationFolder: '$(Agent.BuildDirectory)/rocm' + cleanDestinationFolder: false + overwriteExistingFiles: true +- task: DeleteFiles@1 + displayName: Cleanup Compressed ${{ parameters.componentName }} + inputs: + SourceFolder: '$(System.ArtifactsDirectory)' + Contents: '/**/*.tar.gz' + RemoveDotFiles: true diff --git a/.azuredevops/templates/steps/artifact-prepare-package.yml b/.azuredevops/templates/steps/artifact-prepare-package.yml new file mode 100644 index 000000000..4dccc38bb --- /dev/null +++ b/.azuredevops/templates/steps/artifact-prepare-package.yml @@ -0,0 +1,25 @@ +# optional step if not using cmake --install +# prepare the next package to upload +parameters: +- name: sourceDir # REQUIRED PARAMETER + type: string + default: '' +- name: contentsString + type: string + default: '**' +- name: targetDir + type: string + default: '$(Build.BinariesDirectory)' +- name: clean + type: boolean + default: true + +steps: +- task: CopyFiles@2 + displayName: 'Prepare for packaging' + inputs: + CleanTargetFolder: ${{ parameters.clean }} + SourceFolder: '${{ parameters.sourceDir }}' + Contents: '${{ parameters.contentsString }}' + TargetFolder: '${{ parameters.targetDir }}' + retryCount: 3 diff --git a/.azuredevops/templates/steps/artifact-upload.yml b/.azuredevops/templates/steps/artifact-upload.yml new file mode 100644 index 000000000..43adf2f4b --- /dev/null +++ b/.azuredevops/templates/steps/artifact-upload.yml @@ -0,0 +1,33 @@ +# compress build products into tarball +# delete build products after compression +# 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 +parameters: +- name: artifactName + type: string + default: 'drop' +- name: publish + type: boolean + default: true + +steps: +- task: ArchiveFiles@2 + displayName: '${{ parameters.artifactName }} Compress' + inputs: + includeRootFolder: false + archiveType: 'tar' + tarCompression: 'gz' + archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}.tar.gz' +- task: DeleteFiles@1 + displayName: 'Cleanup Staging Area' + inputs: + SourceFolder: '$(Build.BinariesDirectory)' + Contents: '/**/*' + RemoveDotFiles: true +# then publish it +- ${{ if parameters.publish }}: + - task: PublishPipelineArtifact@1 + displayName: '${{ parameters.artifactName }} Publish' + retryCountOnTaskFailure: 3 + inputs: + targetPath: '$(Build.ArtifactStagingDirectory)' diff --git a/.azuredevops/templates/steps/build-autotools.yml b/.azuredevops/templates/steps/build-autotools.yml new file mode 100644 index 000000000..b207b3d43 --- /dev/null +++ b/.azuredevops/templates/steps/build-autotools.yml @@ -0,0 +1,36 @@ +parameters: +- name: componentName + type: string + default: '' +- name: configureFlags + type: string + default: '' +- name: buildDir + type: string + default: '$(Build.SourcesDirectory)' +- name: installDir + type: string + default: '$(Build.BinariesDirectory)' + +steps: +- task: Bash@3 + displayName: '${{ parameters.componentName }} configure flags' + continueOnError: true + inputs: + targetType: inline + script: ./configure --prefix=${{ parameters.installDir }} ${{ parameters.configureFlags }} + workingDirectory: ${{ parameters.buildDir }} +- task: Bash@3 + displayName: '${{ parameters.componentName }} make' + continueOnError: true + inputs: + targetType: inline + script: make -j$(nproc) + workingDirectory: ${{ parameters.buildDir }} +- task: Bash@3 + displayName: '${{ parameters.componentName }} make install' + continueOnError: true + inputs: + targetType: inline + script: make install + workingDirectory: ${{ parameters.buildDir }} diff --git a/.azuredevops/templates/steps/build-cmake.yml b/.azuredevops/templates/steps/build-cmake.yml new file mode 100644 index 000000000..ffaa77c0e --- /dev/null +++ b/.azuredevops/templates/steps/build-cmake.yml @@ -0,0 +1,43 @@ +parameters: +- name: componentName + type: string + default: '' +- name: extraBuildFlags + type: string + default: '' +- name: cmakeBuildDir + type: string + default: 'build' +- name: cmakeTarget + type: string + default: 'install' +- name: cmakeTargetDir + type: string + default: '.' +- name: installDir + type: string + default: '$(Build.BinariesDirectory)' + +steps: +# create workingDirectory if it does not exist and change into it +# call cmake from within that directory using $cmakeArgs as its parameters +- task: CMake@1 + displayName: '${{parameters.componentName }} CMake Flags' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: -DCMAKE_INSTALL_PREFIX=${{ parameters.installDir }} ${{ parameters.extraBuildFlags }} .. +# equivalent to running make $cmakeTargetDir from $cmakeBuildDir +# i.e., cd $cmakeBuildDir; make $cmakeTargetDir +- task: CMake@1 + displayName: '${{parameters.componentName }} Build' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }}' + retryCountOnTaskFailure: 10 +# equivalent to running make $cmakeTarget from $cmakeBuildDir +# e.g., make install +- task: CMake@1 + displayName: '${{parameters.componentName }} Install' + inputs: + workingDirectory: ${{ parameters.cmakeBuildDir }} + cmakeArgs: '--build ${{ parameters.cmakeTargetDir }} --target ${{ parameters.cmakeTarget }}' diff --git a/.azuredevops/templates/steps/build-script.yml b/.azuredevops/templates/steps/build-script.yml new file mode 100644 index 000000000..61782acf6 --- /dev/null +++ b/.azuredevops/templates/steps/build-script.yml @@ -0,0 +1,22 @@ +parameters: +- name: componentName + type: string + default: '' +- name: scriptDir + type: string + default: '.' +- name: scriptExecutable + type: string + default: './install.sh' +- name: scriptParameters + type: string + default: '' + +steps: +- task: Bash@3 + displayName: '${{ parameters.componentName }} Building via script' + continueOnError: true + inputs: + targetType: inline + script: ${{ parameters.scriptExecutable }} ${{ parameters.scriptParameters }} + workingDirectory: ${{ parameters.scriptDir }} diff --git a/.azuredevops/templates/steps/ccache.yml b/.azuredevops/templates/steps/ccache.yml new file mode 100644 index 000000000..324054e3d --- /dev/null +++ b/.azuredevops/templates/steps/ccache.yml @@ -0,0 +1,11 @@ +# to use ccache, run this template step before build-cmake.yml +# and add this cmake flag to extraBuildFlags +# -DCMAKE_CXX_COMPILER_LAUNCHER=ccache +steps: +- task: Cache@2 + displayName: Ccache caching + inputs: + key: 'ccache | "$(Agent.OS)" | $(Build.SourceVersion)' + path: $(CCACHE_DIR) + restoreKeys: | + ccache | "$(Agent.OS)" diff --git a/.azuredevops/templates/steps/checkout.yml b/.azuredevops/templates/steps/checkout.yml new file mode 100644 index 000000000..b73d83ffa --- /dev/null +++ b/.azuredevops/templates/steps/checkout.yml @@ -0,0 +1,17 @@ +parameters: +# name of the repo to checkout +# for most cases, leave as default 'self' +- name: checkoutRepo + type: string + default: 'self' +# submodule download behaviour +# change to 'recursive' for repos with submodules +- name: submoduleBehaviour + type: string + default: 'true' + +steps: + - checkout: ${{ parameters.checkoutRepo }} + clean: true + submodules: ${{ parameters.submoduleBehaviour }} + retryCountOnTaskFailure: 3 diff --git a/.azuredevops/templates/steps/dependencies.yml b/.azuredevops/templates/steps/dependencies.yml new file mode 100644 index 000000000..73f226d64 --- /dev/null +++ b/.azuredevops/templates/steps/dependencies.yml @@ -0,0 +1,38 @@ +parameters: +# space-delimited list of packages to install via apt-get install command +# TODO convert to string array and split with spaces +- name: aptPackages + type: object + default: [] +- name: pipModules + type: object + default: [] + +steps: +- task: Bash@3 + displayName: 'sudo apt-get update' + inputs: + targetType: inline + script: sudo apt-get update +- task: Bash@3 + displayName: 'sudo apt-get upgrade' + inputs: + targetType: inline + script: sudo apt-get update +- task: Bash@3 + displayName: 'sudo apt-get fix' + inputs: + targetType: inline + script: sudo apt --yes --fix-broken install +- ${{ if gt(length(parameters.aptPackages), 0) }}: + - task: Bash@3 + displayName: 'sudo apt-get install ...' + inputs: + targetType: inline + script: sudo apt-get --yes install ${{ join(' ', parameters.aptPackages) }} +- ${{ if gt(length(parameters.pipModules), 0) }}: + - task: Bash@3 + displayName: 'pip install ...' + inputs: + targetType: inline + script: pip install ${{ join(' ', parameters.pipModules) }} diff --git a/.azuredevops/templates/steps/preamble.yml b/.azuredevops/templates/steps/preamble.yml new file mode 100644 index 000000000..9f76ff19b --- /dev/null +++ b/.azuredevops/templates/steps/preamble.yml @@ -0,0 +1,27 @@ +# build artifacts not automatically cleaned up +# force cleanup, always +# also display installed components and packages +steps: +- task: Bash@3 + displayName: 'apt installed list' + inputs: + targetType: inline + script: apt list --installed +- task: Bash@3 + displayName: 'python version' + inputs: + targetType: inline + script: python3 --version +- script: pip list + displayName: 'list python packages' +- task: DeleteFiles@1 + displayName: 'Cleanup checkout space' + inputs: + SourceFolder: '$(Agent.BuildDirectory)/s' + Contents: '**/*' +- task: DeleteFiles@1 + displayName: 'Cleanup Staging Area' + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)' + Contents: '/**/*' + RemoveDotFiles: true diff --git a/.azuredevops/templates/steps/test.yml b/.azuredevops/templates/steps/test.yml new file mode 100644 index 000000000..14142b569 --- /dev/null +++ b/.azuredevops/templates/steps/test.yml @@ -0,0 +1,36 @@ +parameters: +- name: componentName + type: string + default: '' +- name: testDir + type: string + default: 'build' +- name: testExecutable + type: string + default: 'ctest' +- name: testParameters + type: string + default: '--output-on-failure --force-new-ctest-process --output-junit test_output.xml' +- name: testOutputFile + type: string + default: test_output.xml +- name: testOutputFormat + type: string + default: 'junit' + +steps: +# run test, continue on failure to publish results +# and to publish build artifacts +- task: Bash@3 + displayName: '${{ parameters.componentName }} Test' + continueOnError: true + inputs: + targetType: inline + script: ${{ parameters.testExecutable }} ${{ parameters.testParameters }} + workingDirectory: ${{ parameters.testDir }} +- task: PublishTestResults@2 + displayName: '${{ parameters.componentName }} Publish Results' + inputs: + testResultsFormat: ${{ parameters.testOutputFormat }} + testResultsFiles: '**/${{ parameters.testOutputFile }}' + condition: succeededOrFailed() diff --git a/.azuredevops/variables-global.yml b/.azuredevops/variables-global.yml new file mode 100644 index 000000000..508b9f0a0 --- /dev/null +++ b/.azuredevops/variables-global.yml @@ -0,0 +1,21 @@ +# specify non-secret global variables reused across pipelines here + +variables: +- name: CI_ROOT_PATH + value: /.azuredevops +- name: CI_COMPONENT_PATH + value: ${{ variables.CI_ROOT_PATH }}/components +- name: CI_TEMPLATE_PATH + value: ${{ variables.CI_ROOT_PATH }}/templates +- name: LOW_END_BUILD_POOL + value: ubuntu-22.04 +- name: HIGH_END_BUILD_POOL + value: rocm-ci_build_pool +- name: CLOUD_BUILD_POOL + value: rocm-ci_cloud_build_pool +- name: LATEST_RELEASE_TAG + value: rocm-6.1.0 +- name: DOCKER_IMAGE_NAME + value: rocm/dev-ubuntu-22.04 +- name: LATEST_DOCKER_VERSION + value: 6.1 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5d678c763..1954c6d0f 100755 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,5 @@ * @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation # Documentation files -docs/* @ROCm/rocm-documentation -*.md @ROCm/rocm-documentation -*.rst @ROCm/rocm-documentation +docs/* @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation +*.md @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation +*.rst @amd-aakash @jlgreathouse @samjwu @ROCm/rocm-documentation diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d51867d6..5f7995dea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,149 @@ This page contains the changelog for AMD ROCm Software. ------------------- +## ROCm 6.1.1 + +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. + +### OS support + +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). + +### AMD SMI + +AMD SMI for ROCm 6.1.1 + +#### Additions + +* Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. + +#### Changes + +* Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +* Updated the output of `amd-smi metric --clock` to reflect each engine. +* Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +#### Fixes + +* Fixed `amd-smi metric --clock`'s clock lock status and deep sleep status. +* Fixed an issue that would cause an error when attempting to reset non-AMD GPUs. +* Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +* Fixed the output results of `amd-smi process` when getting processes running on a device. + +##### Removals + +* Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +##### Known issues + +* `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using certain PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + +#### HIPCC + +HIPCC for ROCm 6.1.1 + +##### Changes + +* **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +* **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +* **Upcoming:** a subsequent release will remove `hipcc.pl` and `hipconfig.pl`. + +### HIPIFY + +HIPIFY for ROCm 6.1.1 + +#### Additions + +* Added support for LLVM 18.1.2. +* Added support for cuDNN 9.0.0. +* Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). + +### ROCm SMI + +ROCm SMI for ROCm 6.1.1 + +##### Known issues + +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. + +### Library changes in ROCm 6.1.1 + +| Library | Version | +|---------|---------| +| AMDMIGraphX | [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.1) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.1.1) | +| hipBLAS | [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.1) | +| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.1) | +| hipCUB | [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.1) | +| hipFFT | [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.1) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.1) | +| hipSOLVER | 2.1.0 ⇒ [2.1.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.1) | +| hipSPARSE | [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.1) | +| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.1) | +| hipTensor | [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.1) | +| MIOpen | [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.1) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.1) | +| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.1) | +| rocALUTION | [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.1) | +| rocBLAS | [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.1) | +| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.1) | +| rocFFT | 1.0.26 ⇒ [1.0.27](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.1) | +| rocm-cmake | [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.1) | +| rocPRIM | [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.1) | +| rocRAND | [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.1) | +| rocSOLVER | [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.1) | +| rocSPARSE | [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.1) | +| rocThrust | [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.1) | +| rocWMMA | [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.1) | +| rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | +| Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | + +#### hipBLASLt 0.7.0 + +hipBLASLt 0.7.0 for ROCm 6.1.1 + +##### Additions + +- Added `hipblasltExtSoftmax` extension API. +- Added `hipblasltExtLayerNorm` extension API. +- Added `hipblasltExtAMax` extension API. +- Added `GemmTuning` extension parameter to set split-k by user. +- Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. + +##### Deprecations + +- **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. + +#### hipSOLVER 2.1.1 + +hipSOLVER 2.1.1 for ROCm 6.1.1 + +##### Changes + +- `BUILD_WITH_SPARSE` now defaults to OFF on Windows. + +##### Fixes + +- Fixed benchmark client build when `BUILD_WITH_SPARSE` is OFF. + +#### rocFFT 1.0.27 + +rocFFT 1.0.27 for ROCm 6.1.1 + +##### Additions + +* Enable multi-GPU testing on systems without direct GPU-interconnects. + +##### Fixes + +* Fixed kernel launch failure on execute of very large odd-length real-complex transforms. + +------------------- + ## ROCm 6.1.0 The ROCm™ 6.1 release consists of new features and fixes to improve the stability and @@ -27,7 +170,7 @@ performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: YUV frames in video memory. With decoded frames in video memory, you can run video post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. - To learn more, refer to the rocDecode + To learn more, refer to the rocDecode [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). ### OS and GPU support changes @@ -60,11 +203,11 @@ environments where legacy `DT_RPATH` is the preferred form of linking (instead o do **not** recommend trying to install both sets of packages. ``` -#### AMD SMI +### AMD SMI AMD SMI for ROCm 6.1.0 -##### Additions +#### Additions * **Added Monitor command**. This provides users the ability to customize GPU metrics to capture, collect, and observe. Output is provided in a table view. This aligns closer to ROCm SMI `rocm-smi` @@ -98,14 +241,14 @@ AMD SMI for ROCm 6.1.0 * **Added units of measure to JSON output.**. We added unit of measure to JSON/CSV `amd-smi metric`, `amd-smi static`, and `amd-smi monitor` commands. -##### Changes +#### Changes * **Topology is now left-aligned with BDF for each device listed individual table's row/columns**. We provided each device's BDF for every table's row/columns, then left-aligned data. We want AMD SMI Tool output to be easy to understand and digest. Having to scroll up to find this information made it difficult to follow, especially for devices that have many devices associated with one ASIC. -##### Fixes +#### Fixes * **Fix for RDNA3/RDNA2/MI100 'amdsmi_get_gpu_pci_bandwidth()' in 'frequencies_read' tests**. For devices that do not report (e.g., RDNA3/RDNA2/MI100), we have added checks to confirm that @@ -125,18 +268,18 @@ AMD SMI for ROCm 6.1.0 same mutex handler for devices as ROCm SMI. This helps avoid crashes when DRM/device data are inaccessible to the logged-in user. -##### Known issues +#### Known issues * There is an `AttributeError` while running `amd-smi process --csv` * GPU reset results in an "*Unable to reset non-amd GPU*" error * bad pages results with "ValueError: NULL pointer access" * Some RDNA3 cards may enumerate to `Slot type = UNKNOWN` -#### HIP +### HIP HIP 6.1 for ROCm 6.1 -##### Additions +#### Additions * New environment variable, `HIP_LAUNCH_BLOCKING`, which is used for serialization on kernel execution. @@ -147,12 +290,12 @@ HIP 6.1 for ROCm 6.1 `math_functions`, `hip_math_constants`, `channel_descriptor`, `device_functions`, `hip_complex`, `surface_types`, `texture_types` -##### Changes +#### Changes * HIPRTC now assumes WGP mode for gfx10+. You can enable CU mode by passing `-mcumode` to the compile options from `hiprtcCompileProgram`. -##### Fixes +#### Fixes * HIP complex vector type multiplication and division operations. On an AMD platform, some duplicated complex operators are removed to avoid compilation failures. @@ -168,11 +311,30 @@ HIP 6.1 for ROCm 6.1 Note that these complex operations are equivalent to corresponding types/functions on an NVIDIA platform. -#### ROCm Compiler +### HIPIFY + +HIPIFY for ROCm 6.1.0 + +#### Additions + +* CUDA 12.3.2 support +* cuDNN 8.9.7 support +* LLVM 17.0.6 support +* Full `hipSOLVER` support +* Full `rocSPARSE` support +* New option: `--amap`, which will hipify as much as possible, ignoring `--default-preprocessor` + behavior + +#### Fixes + +* Code blocks skipped by the preprocessor are no longer hipified under the `--default-preprocessor` + option + +### ROCm Compiler ROCm Compiler for ROCm 6.1.0 -##### Additions +#### Additions * Compiler now generates `.uniform_work_group_size` and records it in the metadata. It indicates if the kernel requires that each dimension of global size is a multiple of the corresponding dimension of @@ -184,16 +346,11 @@ ROCm Compiler for ROCm 6.1.0 * Added support for C++ Parallel Algorithm Offload via HIP (HIPSTDPAR), which allows parallel algorithms to run on the GPU. -##### Changes +#### Changes * `rocm-clang-ocl` is now an optional package and will require manual installation. -##### Deprecations - -* hipCC adds `-mllvm`, `-amdgpu-early-inline-all=true`, and `-mllvm` `-amdgpu-function-calls=false` by - default to compiler invocations. These flags will be removed from hipCC in a future ROCm release. - -##### Fixes +#### Fixes AddressSanitizer (ASan): * Added `sanitized_padded_global` LLVM ir attribute to identify sanitizer instrumented globals. @@ -202,38 +359,43 @@ AddressSanitizer (ASan): [On GitHub](https://github.com/ROCm/ROCm/issues/2551) -##### Known issues +#### Deprecations + +* hipCC adds `-mllvm`, `-amdgpu-early-inline-all=true`, and `-mllvm` `-amdgpu-function-calls=false` by + default to compiler invocations. These flags will be removed from hipCC in a future ROCm release. + +#### Known issues * Due to an issue within the `amd-llvm` compiler shipping with ROCm 6.1, HIPSTDPAR's interposition mode, which is enabled by `--hipstdpar-interpose-alloc` is currently broken. The temporary workaround is to use the upstream LLVM 18 (or newer) compiler. This issue will be addressed in a future ROCm release ." -#### ROCm Data Center (RDC) +### ROCm Data Center (RDC) RDC for ROCm 6.1.0 -##### Changes +#### Changes * Added `--address` flag to rdcd * Upgraded from C++11 to C++17 * Upgraded gRPC -#### ROCDebugger (ROCgdb) +### ROCDebugger (ROCgdb) ROCgdb for ROCm 6.1.0 -##### Fixes +#### Fixes Previously, ROCDebugger encountered hangs and crashes when stepping over the `s_endpgm` instruction at the end of a HIP kernel entry function, which caused the stepped wave to exit. This issue is fixed in the ROCm 6.1 release. You can now step over the last instruction of any HIP kernel without debugger hangs or crashes. -#### ROCm SMI +### ROCm SMI ROCm SMI for ROCm 6.1.0 -##### Additions +#### Additions * **Added support to set max/min clock level for sclk ('RSMI_CLK_TYPE_SYS') or mclk ('RSMI_CLK_TYPE_MEM')**. You can now set a maximum or minimum `sclk` or `mclk` value through the @@ -244,7 +406,7 @@ ROCm SMI for ROCm 6.1.0 (`rsmi_dev_target_graphics_version_get()`) to retreive the target graphics version for a GPU device. Currently, this output is not supplied through our ROCm SMI CLI. -##### Changes +#### Changes * **Removed non-unified API headers: Individual GPU metric APIs are no longer supported**. The individual metric APIs (`rsmi_dev_metrics_*`) were removed in order to keep updates easier for @@ -258,7 +420,7 @@ ROCm SMI for ROCm 6.1.0 outlined in the change for 6.0.0 (*Added a generic power API: rsmi_dev_power_get*), is now deprecated. You must update your ROCm SMI API calls accordingly. -##### Fixes +#### Fixes * Fixed `--showpids` reporting `[PID] [PROCESS NAME] 1 UNKNOWN UNKNOWN UNKNOWN`. Output was failing because `cu_occupancy debugfs` method is not provided on some graphics cards @@ -281,41 +443,39 @@ ROCm SMI for ROCm 6.1.0 * Fixed `rocm-smi --showclkvolt` and `rocm-smi --showvc`, which were displaying 0 for overdrive and that the voltage curve is not supported. -#### ROCProfiler +### ROCProfiler ROCProfiler for ROCm 6.1.0 -##### Fixes +#### Fixes * Fixed ROCprofiler to match versioning changes in HIP Runtime * Fixed plugins race condition * Updated metrics to MI300 -#### ROCm Validation Suite +### ROCm Validation Suite -##### Known issue +#### Known issue * In a future release, the ROCm Validation Suite P2P Benchmark and Qualification Tool (PBQT) tests will be optimized to meet the target bandwidth requirements for MI300X. [On GitHub](https://github.com/ROCm/ROCm/issues/3027) -#### MI200 SR-IOV +### MI200 SR-IOV -##### Known issue +#### Known issue -* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. +* Multimedia applications may encounter compilation errors in the MI200 Single Root Input/Output Virtualization (SR-IOV) environment. This is because MI200 SR-IOV does not currently support multimedia applications. [On GitHub](https://github.com/ROCm/ROCm/issues/3028) ### AMD MI300A RAS -#### Fixed defect +#### Fixes -##### GFX correctable and uncorrectable error inject failures +* GFX correctable and uncorrectable error inject failures. Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. -* Previously, the AMD CPU Reliability, Availability, and Serviceability (RAS) installation encountered correctable and uncorrectable failures while injecting an error. - - This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. +This issue is resolved in the ROCm 6.1 release, and users will no longer encounter the GFX correctable error (CE) and uncorrectable error (UE) failures. ### Library changes in ROCm 6.1.0 @@ -396,6 +556,12 @@ MIGraphX 2.9 for ROCm 6.1.0 * Added support for uneven Split operations * Improved unit testing to run in python virtual environments +##### Changes + +* Cleanup LSTM and RNN activation functions +* Placed gemm_pointwise at a higher priority than layernorm_pointwise +* Updated README to mention the need to include GPU_TARGETS when building MIGraphX + ##### Fixes * Fixed outstanding issues in autogenerated documentation @@ -409,12 +575,6 @@ MIGraphX 2.9 for ROCm 6.1.0 * Fixed wrong size check when axes not present for slice * Set the .SO version correctly -##### Changes - -* Cleanup LSTM and RNN activation functions -* Placed gemm_pointwise at a higher priority than layernorm_pointwise -* Updated README to mention the need to include GPU_TARGETS when building MIGraphX - ##### Removals * Removed unused device kernels from Gather and Pad operators @@ -431,10 +591,6 @@ hipBLAS 2.1.0 for ROCm 6.1.0 suffix) with int64_t function arguments * New functions hipblasGetMathMode and hipblasSetMathMode -##### Deprecations - -* USE_CUDA build option; use HIP_PLATFORM=amd or HIP_PLATFORM=nvidia to override hipconfig - ##### Changes * Some Level 2 function argument names have changed from `m` to `n` to match legacy BLAS; there @@ -443,6 +599,10 @@ hipBLAS 2.1.0 for ROCm 6.1.0 * Renamed `.doxygen` and `.sphinx` folders to `doxygen` and `sphinx`, respectively * Added CMake support for documentation +##### Deprecations + +* USE_CUDA build option; use HIP_PLATFORM=amd or HIP_PLATFORM=nvidia to override hipconfig + #### hipBLASLt 0.7.0 hipBLASLt 0.7.0 for ROCm 6.1.0 @@ -459,20 +619,20 @@ hipBLASLt 0.7.0 for ROCm 6.1.0 hipCUB 3.1.0 for ROCm 6.1.0 -##### Changed +##### Additions + +- Added interface `DeviceMemcpy::Batched` for batched memcpy from rocPRIM and CUB. + +##### Changes - CUB backend references CUB and Thrust version 2.1.0. - Updated `HIPCUB_HOST_WARP_THREADS` macro definition to match `host_warp_size` changes from rocPRIM 3.0. - Implemented `__int128_t` and `__uint128_t` support for radix_sort. -##### Fixed +##### Fixes - Fixed build issues with `rmake.py` on Windows when using VS 2017 15.8 or later due to a breaking fix with extended aligned storage. -##### Added - -- Added interface `DeviceMemcpy::Batched` for batched memcpy from rocPRIM and CUB. - #### hipFFT 1.0.14 hipFFT 1.0.14 for ROCm 6.1.0 @@ -489,7 +649,7 @@ hipFFT 1.0.14 for ROCm 6.1.0 hipSOLVER 2.1.0 for ROCm 6.1.0 -##### Added +##### Additions - Added compatibility API with hipsolverSp prefix - Added compatibility-only functions @@ -500,11 +660,11 @@ hipSOLVER 2.1.0 for ROCm 6.1.0 functionality for the hipsolverSp API (on by default). - Added hipSPARSE as an optional dependency to hipsolver-test. Use the `BUILD_WITH_SPARSE` CMake option to enable tests of the hipsolverSp API (on by default). -##### Changed +##### Changes - Relax array length requirements for GESVDA. -##### Fixed +##### Fixes - Fixed incorrect singular vectors returned from GESVDA. @@ -520,7 +680,7 @@ hipSPARSE 3.0.1 for ROCm 6.1.0 hipSPARSELt 0.2.0 for ROCm 6.1.0 -##### Added +##### Additions - Support Matrix B is a Structured Sparsity Matrix. @@ -543,7 +703,7 @@ hipTensor 1.2.0 for ROCm 6.1.0 MIOpen 3.1.0 for ROCm 6.1.0 -##### Added +##### Additions - CK-based 2d/3d convolution solvers to support nchw/ncdhw layout - Fused solver for Fwd Convolution with Residual, Bias and activation @@ -553,18 +713,18 @@ MIOpen 3.1.0 for ROCm 6.1.0 - Integrate CK's layer norm - Combine gtests into single binary -##### Fixed +##### Changes + +- Standardize workspace abstraction +- Use split CK libraries + +##### Fixes - fix for backward passes bwd/wrw for CK group conv 3d - Fixed out-of-bounds memory access : ConvOclDirectFwdGen - fixed build failure due to hipRTC -##### Changed - -- Standardize workspace abstraction -- Use split CK libraries - -##### Removed +##### Removals - clamping to MAX from CastTensor used in Bwd and WrW convolution @@ -572,7 +732,7 @@ MIOpen 3.1.0 for ROCm 6.1.0 RCCL 2.18.6 for ROCm 6.1.0 -##### Changed +##### Changes - Compatibility with NCCL 2.18.6 @@ -634,7 +794,7 @@ rocDecode 0.5.0 for ROCm 6.1.0 * Minor bug fix and updates -##### Tested Configurations +###### Tested Configurations * Linux distribution * Ubuntu - `20.04` / `22.04` @@ -659,7 +819,7 @@ rocFFT 1.0.26 for ROCm 6.1.0 rocm-cmake 0.12.0 for ROCm 6.1.0 -##### Changed +##### Changes - ROCMSphinxDoc: Allow separate source and config directories. - ROCMCreatePackage: Allow additional `PROVIDES` on header-only packages. @@ -667,7 +827,7 @@ rocm-cmake 0.12.0 for ROCm 6.1.0 - ROCMTest: Add RPATH for installed tests. - Finalize rename to ROCmCMakeBuildTools -##### Fixed +##### Fixes - ROCMClangTidy: Fixed invalid list index. - Test failures when ROCM_CMAKE_GENERATOR is empty. @@ -696,16 +856,16 @@ rocPRIM 3.1.0 for ROCm 6.1.0 * Added support for `__int128_t` in `device_radix_sort` and `block_radix_sort` * Improved the performance of `match_any`, and `block_histogram` which uses it -##### Deprecations - -* Removed `reduce_by_key_config`, `MatchAny`, `scan_config`, `scan_by_key_config`, and - `radix_sort_config` - ##### Fixes * Build issues with `rmake.py` on Windows when using VS 2017 15.8 or later (due to a breaking fix with extended aligned storage) +##### Deprecations + +* Removed `reduce_by_key_config`, `MatchAny`, `scan_config`, `scan_by_key_config`, and + `radix_sort_config` + #### rocRAND 3.0.1 rocRAND 3.0.1 for ROCm 6.1.0 @@ -731,15 +891,15 @@ rocSOLVER 3.25.0 for ROCm 6.1.0 - Relaxed array length requirements for GESVDX with `rocblas_srange_index`. -##### Removed - -- Removed gfx803 and gfx900 from default build targets. - ##### Fixed - Corrected singular vector normalization in BDSVDX and GESVDX - Fixed potential memory access fault in STEIN, SYEVX/HEEVX, SYGVX/HEGVX, BDSVDX and GESVDX +##### Removals + +- Removed gfx803 and gfx900 from default build targets. + #### rocSPARSE 3.1.2 rocSPARSE 3.1.2 for ROCm 6.1.0 @@ -792,7 +952,7 @@ rpp for ROCm 6.1.0 * Prerequisites -##### Tested Configurations +###### Tested Configurations * Linux distribution * Ubuntu - `20.04` / `22.04` @@ -851,7 +1011,8 @@ Tensile 4.40.0 for ROCm 6.1.0 ------------------- ## ROCm 6.0.2 -The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. + +The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. #### hipFFT 1.0.13 @@ -895,23 +1056,18 @@ hipFFT 1.0.13 for ROCm 6.0.2 rocRAND 3.0.0 for ROCm 6.0.2 -##### Changed +##### Optimizations + +- Improved MT19937 initialization and generation performance. + +##### Changes - Generator classes from `rocrand.hpp` are no longer copyable, in previous versions these copies would copy internal references to the generators and would lead to double free or memory leak errors. These types should be moved instead of copied, and move constructors and operators are now defined for them. -##### Optimized - -- Improved MT19937 initialization and generation performance. - -##### Removed - -- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package. -- Removed references to and workarounds for deprecated hcc - -##### Fixed +##### Fixes - `mt19937_engine` from `rocrand.hpp` is now move-constructible and move-assignable. Previously the move constructor and move assignment operator was deleted for this class. @@ -922,6 +1078,11 @@ move constructor and move assignment operator was deleted for this class. - fixed the default ordering parameter for `lfsr113` - Build error when using clang++ directly due to unsupported references to amdgpu-target +##### Removals + +- Removed hipRAND submodule from rocRAND. hipRAND is now only available as a separate package. +- Removed references to and workarounds for deprecated hcc + ------------------- ## ROCm 6.0.0 @@ -1019,6 +1180,7 @@ final release for gfx906 GPUs in a fully supported state. | Library | Version | |---------|---------| | AMDMIGraphX | ⇒ [2.8](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.0.0) | +| composable_kernel | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.0.0) | | HIP | [6.0.0](https://github.com/ROCm/HIP/releases/tag/rocm-6.0.0) | | hipBLAS | ⇒ [2.0.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.0.0) | | hipCUB | ⇒ [3.0.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.0.0) | @@ -1247,6 +1409,11 @@ hipCUB 3.0.0 for ROCm 6.0.0 hipFFT 1.0.13 for ROCm 6.0.0 +##### Additions + +* `hipfftXtSetGPUs`, `hipfftXtMalloc, hipfftXtMemcpy`, `hipfftXtFree`, and `hipfftXtExecDescriptor` APIs + have been implemented to allow FFT computing on multiple devices in a single process + ##### Changes * `hipfft-rider` has been renamed to `hipfft-bench`; it is controlled by the `BUILD_CLIENTS_BENCH` @@ -1255,11 +1422,6 @@ hipFFT 1.0.13 for ROCm 6.0.0 * Binaries in debug builds no longer have a `-d` suffix * The minimum rocFFT required version has been updated to 1.0.21 -##### Additions - -* `hipfftXtSetGPUs`, `hipfftXtMalloc, hipfftXtMemcpy`, `hipfftXtFree`, and `hipfftXtExecDescriptor` APIs - have been implemented to allow FFT computing on multiple devices in a single process - #### hipSOLVER 2.0.0 hipSOLVER 2.0.0 for ROCm 6.0.0 @@ -1388,11 +1550,6 @@ MIOpen 2.19.0 for ROCm 6.0.0 RCCL 2.15.5 for ROCm 6.0.0 -##### Changes - -* Compatibility with NCCL 2.15.5 -* Renamed the unit test executable to `rccl-UnitTests` - ##### Additions * HW-topology-aware binary tree implementation @@ -1400,6 +1557,11 @@ RCCL 2.15.5 for ROCm 6.0.0 * New unit tests for hipGraph support * NPKit integration +##### Changes + +* Compatibility with NCCL 2.15.5 +* Renamed the unit test executable to `rccl-UnitTests` + ##### Fixes * rocm-smi ID conversion @@ -1433,6 +1595,12 @@ rocALUTION 3.0.3 for ROCm 6.0.0 * Matrix dimensions and number of non-zeros are now stored using 64-bit integers * Improved the ILUT preconditioner +##### Fixes + +* Unit tests no longer ignore BCSR block dimension +* Fixed documentation typos +* Bug in multi-coloring for non-symmetric matrix patterns + ##### Removals * `LocalVector::GetIndexValues(ValueType*)` @@ -1443,12 +1611,6 @@ rocALUTION 3.0.3 for ROCm 6.0.0 * `LocalMatrix::AMGSmoothedAggregation(ValueType, const LocalVector&, const LocalVector&, LocalMatrix*, LocalMatrix*, int)` * `LocalMatrix::AMGAggregation(const LocalVector&, LocalMatrix*, LocalMatrix*)` -##### Fixes - -* Unit tests no longer ignore BCSR block dimension -* Fixed documentation typos -* Bug in multi-coloring for non-symmetric matrix patterns - #### rocBLAS 4.0.0 rocBLAS 4.0.0 for ROCm 6.0.0 @@ -1467,6 +1629,20 @@ rocBLAS 4.0.0 for ROCm 6.0.0 * TRSM performance for small sizes (m < 32 && n < 32) +##### Fixes + +* Made offset calculations for 64-bit rocBLAS functions safe + * Fixes for very large leading dimension or increment potentially causing overflow: + * Level2: `gbmv`, `gemv`, `hbmv`, `sbmv`, `spmv`, `tbmv`, `tpmv`, `tbsv`, and `tpsv` +* Lazy loading supports heterogeneous architecture setup and load-appropriate tensile library files, + based on device architecture +* Guards against no-op kernel launches that result in a potential `hipGetLastError` + +##### Changes + +* Reduced the default verbosity of `rocblas-test` (you can see all tests by setting the + `GTEST_LISTENER=PASS_LINE_IN_LOG` environment variable) + ##### Deprecations * Atomic operations will be disabled by default in a future release of rocBLAS (you can enable atomic @@ -1483,20 +1659,6 @@ rocBLAS 4.0.0 for ROCm 6.0.0 before including `float.h`, `math.h`, and `rocblas.h`) * The default build removes device code for gfx803 architecture from the fat binary -##### Fixes - -* Made offset calculations for 64-bit rocBLAS functions safe - * Fixes for very large leading dimension or increment potentially causing overflow: - * Level2: `gbmv`, `gemv`, `hbmv`, `sbmv`, `spmv`, `tbmv`, `tpmv`, `tbsv`, and `tpsv` -* Lazy loading supports heterogeneous architecture setup and load-appropriate tensile library files, - based on device architecture -* Guards against no-op kernel launches that result in a potential `hipGetLastError` - -##### Changes - -* Reduced the default verbosity of `rocblas-test` (you can see all tests by setting the - `GTEST_LISTENER=PASS_LINE_IN_LOG` environment variable) - #### rocFFT 1.0.25 rocFFT 1.0.25 for ROCm 6.0.0 @@ -1635,7 +1797,11 @@ Roc Profiler 2.0.0 for ROCm 6.0.0 rocRAND 2.10.17 for ROCm 6.0.0 -### Changes +##### Optimizations + +* Improved MT19937 initialization and generation performance + +##### Changes * Generator classes from `rocrand.hpp` are no longer copyable (in previous versions these copies would copy internal references to the generators and would lead to double free or memory leak @@ -1643,17 +1809,7 @@ rocRAND 2.10.17 for ROCm 6.0.0 * These types should be moved instead of copied; move constructors and operators are now defined -### Optimizations - -* Improved MT19937 initialization and generation performance - -### Removals - -* Removed the hipRAND submodule from rocRAND; hipRAND is now only available as a separate - package -* Removed references to, and workarounds for, the deprecated hcc - -### Fixes +##### Fixes * `mt19937_engine` from `rocrand.hpp` is now move-constructible and move-assignable (the move constructor and move assignment operator was deleted for this class) @@ -1664,6 +1820,12 @@ rocRAND 2.10.17 for ROCm 6.0.0 * Fixed the default ordering parameter for `lfsr113` * Build error when using Clang++ directly resulting from unsupported `amdgpu-target` references +##### Removals + +* Removed the hipRAND submodule from rocRAND; hipRAND is now only available as a separate + package +* Removed references to, and workarounds for, the deprecated hcc + #### rocSOLVER 3.24.0 rocSOLVER 3.24.0 for ROCm 6.0.0 @@ -1681,6 +1843,12 @@ rocSOLVER 3.24.0 for ROCm 6.0.0 rocSPARSE 3.0.2 for ROCm 6.0.0 +##### Additions + +* `rocsparse_inverse_permutation` +* Mixed-precisions for SpVV +* Uniform int8 precision for gather and scatter + ##### Changes * Function arguments for `rocsparse_spmv` @@ -1690,23 +1858,17 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 * Improved documentation * Improved verbose output during argument checking on API function calls -##### Removals - -* Auto stages from `spmv`, `spmm`, `spgemm`, `spsv`, `spsm`, and `spitsv` -* Formerly deprecated `rocsparse_spmm_ex` routine - -### Fixes +##### Fixes * Bug in `rocsparse-bench` where the SpMV algorithm was not taken into account in CSR format * BSR and GEBSR routines (`bsrmv`, `bsrsv`, `bsrmm`, `bsrgeam`, `gebsrmv`, `gebsrmm`) didn't always show `block_dim==0` as an invalid size * Passing `nnz = 0` to `doti` or `dotci` wasn't always returning a dot product of 0 -### Additions +##### Removals -* `rocsparse_inverse_permutation` -* Mixed-precisions for SpVV -* Uniform int8 precision for gather and scatter +* Auto stages from `spmv`, `spmm`, `spgemm`, `spsv`, `spsm`, and `spitsv` +* Formerly deprecated `rocsparse_spmm_ex` routine #### rocThrust 3.0.0 @@ -1902,18 +2064,18 @@ MIGraphX 2.8 for ROCm 6.0.0 hipBLAS 2.0.0 for ROCm 6.0.0 -##### Added +##### Additions - added option to define HIPBLAS_USE_HIP_BFLOAT16 to switch API to use hip_bfloat16 type - added hipblasGemmExWithFlags API -##### Deprecated +##### Deprecatations - hipblasDatatype_t is deprecated and will be removed in a future release and replaced with hipDataType - hipblasComplex and hipblasDoubleComplex are deprecated and will be removed in a future release and replaced with hipComplex and hipDoubleComplex - use of hipblasDatatype_t for hipblasGemmEx for compute-type is deprecated and will be replaced with hipblasComputeType_t in a future release -##### Removed +##### Removals - hipblasXtrmm that calculates B <- alpha * op(A) * B is removed and replaced with hipblasXtrmm that calculates C <- alpha * op(A) * B @@ -1921,7 +2083,7 @@ hipBLAS 2.0.0 for ROCm 6.0.0 hipCUB 3.0.0 for ROCm 6.0.0 -##### Changed +##### Changes - Removed `DOWNLOAD_ROCPRIM`, forcing rocPRIM to download can be done with `DEPENDENCIES_FORCE_DOWNLOAD`. @@ -1929,23 +2091,23 @@ hipCUB 3.0.0 for ROCm 6.0.0 hipFFT 1.0.13 for ROCm 6.0.0 -##### Changed +##### Additions -- hipfft-rider has been renamed to hipfft-bench, controlled by the BUILD_CLIENTS_BENCH CMake option. A link for the - old file name is installed, and the old BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both +- Implemented hipfftXtSetGPUs, hipfftXtMalloc, hipfftXtMemcpy, hipfftXtFree, hipfftXtExecDescriptor APIs to allow computing FFTs on multiple devices in a single process. + +##### Changes + +- hipfft-rider has been renamed to hipfft-bench, controlled by the BUILD_CLIENTS_BENCH CMake option. A link for the + old file name is installed, and the old BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both will be removed in a future release. - Binaries in debug builds no longer have a "-d" suffix. - The minimum rocFFT required version has been updated to 1.0.21. -##### Added - -- Implemented hipfftXtSetGPUs, hipfftXtMalloc, hipfftXtMemcpy, hipfftXtFree, hipfftXtExecDescriptor APIs to allow computing FFTs on multiple devices in a single process. - #### hipRAND 2.10.17 hipRAND 2.10.17 for ROCm 6.0.0 -##### Fixed +##### Fixes - Fixed benchmark and unit test builds on Windows. @@ -1953,15 +2115,15 @@ hipRAND 2.10.17 for ROCm 6.0.0 hipSOLVER 2.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Added hipBLAS as an optional dependency to hipsolver-test. Use the `BUILD_HIPBLAS_TESTS` CMake option to test compatibility between hipSOLVER and hipBLAS. -##### Changed +##### Changes - Types hipsolverOperation_t, hipsolverFillMode_t, and hipsolverSideMode_t are now aliases of hipblasOperation_t, hipblasFillMode_t, and hipblasSideMode_t. -##### Fixed +##### Fixes - Fixed tests for hipsolver info updates in ORGBR/UNGBR, ORGQR/UNGQR, ORGTR/UNGTR, ORMQR/UNMQR, and ORMTR/UNMTR. @@ -1970,11 +2132,11 @@ hipSOLVER 2.0.0 for ROCm 6.0.0 hipSPARSE 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Added hipsparseGetErrorName and hipsparseGetErrorString -##### Changed +##### Changes - Changed hipsparseSpSV_solve() API function to match cusparse API - Changed generic API functions to use const descriptors @@ -2005,7 +2167,7 @@ hipTensor 1.1.0 for ROCm 6.0.0 rocALUTION 3.0.3 for ROCm 6.0.0 -##### Added +##### Additions - Added support for 64bit integer vectors - Added inclusive and exclusive sum functionality for Vector classes @@ -2014,16 +2176,22 @@ rocALUTION 3.0.3 for ROCm 6.0.0 - Added Sort() function for LocalVector class - Added multiple stream support to the HIP backend -##### Optimized +##### Optimizations - GlobalMatrix::Apply() now uses multiple streams to better hide communication -##### Changed +##### Changes - Matrix dimensions and number of non-zeros are now stored using 64bit integers - Improved ILUT preconditioner -##### Removed +##### Fixes + +- Unit tests do not ignore BCSR block dimension anymore +- Fixed typos in the documentation +- Fixed a bug in multicoloring for non-symmetric matrix patterns + +##### Removals - Removed LocalVector::GetIndexValues(ValueType\*) - Removed LocalVector::SetIndexValues(const ValueType\*) @@ -2033,32 +2201,37 @@ rocALUTION 3.0.3 for ROCm 6.0.0 - Removed LocalMatrix::AMGSmoothedAggregation(ValueType, const LocalVector&, const LocalVector&, LocalMatrix\*, LocalMatrix\*, int) - Removed LocalMatrix::AMGAggregation(const LocalVector&, LocalMatrix\*, LocalMatrix\*) -##### Fixed - -- Unit tests do not ignore BCSR block dimension anymore -- Fixed typos in the documentation -- Fixed a bug in multicoloring for non-symmetric matrix patterns - #### rocBLAS 4.0.0 rocBLAS 4.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Addition of beta API rocblas_gemm_batched_ex3 and rocblas_gemm_strided_batched_ex3 - Added input/output type f16_r/bf16_r and execution type f32_r support for Level 2 gemv_batched and gemv_strided_batched - Added rocblas_status_excluded_from_build to be used when calling functions which require Tensile when using rocBLAS built without Tensile - Added system for async kernel launches setting a failure rocblas_status based on hipPeekAtLastError discrepancy -##### Optimized +##### Optimizations - Trsm performance for small sizes m < 32 && n < 32 -##### Deprecated +##### Fixes + +- Make offset calculations for rocBLAS functions 64 bit safe. Fixes for very large leading dimension or increment potentially causing overflow: + - Level2: gbmv, gemv, hbmv, sbmv, spmv, tbmv, tpmv, tbsv, tpsv +- Lazy loading to support heterogeneous architecture setup and load appropriate tensile library files based on the device's architecture +- Guard against no-op kernel launches resulting in potential hipGetLastError + +##### Changes + +- Default verbosity of rocblas-test reduced. To see all tests set environment variable GTEST_LISTENER=PASS_LINE_IN_LOG + +##### Deprecatations - In a future release atomic operations will be disabled by default so results will be repeatable. Atomic operations can always be enabled or disabled using the function rocblas_set_atomics_mode. Enabling atomic operations can improve performance. -##### Removed +##### Removals - rocblas_gemm_ext2 API function is removed - in-place trmm API from Legacy BLAS is removed. It is replaced by an API that supports both in-place and out-of-place trmm @@ -2066,22 +2239,11 @@ rocBLAS 4.0.0 for ROCm 6.0.0 - The #define STDC_WANT_IEC_60559_TYPES_EXT has been removed from rocblas-types.h. Users who want ISO/IEC TS 18661-3:2015 functionality must define STDC_WANT_IEC_60559_TYPES_EXT before including float.h, math.h, and rocblas.h - The default build removes device code for gfx803 architecture from the fat binary -##### Fixed - -- Make offset calculations for rocBLAS functions 64 bit safe. Fixes for very large leading dimension or increment potentially causing overflow: - - Level2: gbmv, gemv, hbmv, sbmv, spmv, tbmv, tpmv, tbsv, tpsv -- Lazy loading to support heterogeneous architecture setup and load appropriate tensile library files based on the device's architecture -- Guard against no-op kernel launches resulting in potential hipGetLastError - -##### Changed - -- Default verbosity of rocblas-test reduced. To see all tests set environment variable GTEST_LISTENER=PASS_LINE_IN_LOG - #### rocFFT 1.0.25 rocFFT 1.0.25 for ROCm 6.0.0 -##### Added +##### Additions - Implemented experimental APIs to allow computing FFTs on data distributed across multiple devices in a single process. @@ -2104,7 +2266,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 by offline tuning. - Removed an extra kernel launch from even-length real-complex FFTs that use callbacks. -##### Changed +##### Changes - Built kernels in solution-map to library kernel cache. - Real forward transforms (real-to-complex) no longer overwrite input. rocFFT still may overwrite real inverse (complex-to-real) input, as this allows for faster performance. @@ -2114,7 +2276,7 @@ rocFFT 1.0.25 for ROCm 6.0.0 BUILD_CLIENTS_RIDER CMake option is accepted for compatibility but both will be removed in a future release. - Binaries in debug builds no longer have a "-d" suffix. -##### Fixed +##### Fixes - rocFFT now correctly handles load callbacks that convert data from a smaller data type (e.g. 16-bit integers -> 32-bit float). @@ -2122,11 +2284,11 @@ rocFFT 1.0.25 for ROCm 6.0.0 rocm-cmake 0.11.0 for ROCm 6.0.0 -##### Changed +##### Changes - ROCMSphinxDoc: Improved validation, documentation and rocm-docs-core integration. -##### Fixed +##### Fixes - ROCMClangTidy: Fixed extra make flags passed for clang tidy. - ROCMTest: Fixed issues when using module in a subdirectory. @@ -2135,7 +2297,7 @@ rocm-cmake 0.11.0 for ROCm 6.0.0 rocPRIM 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - `block_sort::sort()` overload for keys and values with a dynamic size, for all block sort algorithms. Additionally, all `block_sort::sort()` overloads with a dynamic size are now supported for `block_sort_algorithm::merge_sort` and `block_sort_algorithm::bitonic_sort`. - New two-way partition primitive `partition_two_way` which can write to two separate iterators. @@ -2144,7 +2306,7 @@ rocPRIM 3.0.0 for ROCm 6.0.0 - Improved the performance of `partition`. -##### Fixed +##### Fixes - Fixed `rocprim::MatchAny` for devices with 64-bit warp size. The function `rocprim::MatchAny` is deprecated and `rocprim::match_any` is preferred instead. @@ -2152,13 +2314,13 @@ rocPRIM 3.0.0 for ROCm 6.0.0 rocSOLVER 3.24.0 for ROCm 6.0.0 -##### Added +##### Additions - Cholesky refactorization for sparse matrices - CSRRF_REFACTCHOL - Added `rocsolver_rfinfo_mode` and the ability to specify the desired refactorization routine (see `rocsolver_set_rfinfo_mode`). -##### Changed +##### Changes - CSRRF_ANALYSIS and CSRRF_SOLVE now support sparse Cholesky factorization @@ -2166,18 +2328,18 @@ rocSOLVER 3.24.0 for ROCm 6.0.0 rocSPARSE 3.0.2 for ROCm 6.0.0 -##### Added +##### Additions - Added rocsparse_inverse_permutation - Added mixed precisions for SpVV - Added uniform int8 precision for Gather and Scatter -##### Optimized +##### Optimizations - Optimization to doti routine - Optimization to spin-looping algorithms -##### Changed +##### Changes - Changed rocsparse_spmv function arguments - Changed rocsparse_xbsrmv routines function arguments @@ -2185,47 +2347,47 @@ rocSPARSE 3.0.2 for ROCm 6.0.0 - Improved documentation - Improved verbose output during argument checking on API function calls -##### Deprecated - -- Deprecated rocsparse_spmv_ex -- Deprecated rocsparse_xbsrmv_ex routines - -##### Removed - -- Removed auto stages from spmv, spmm, spgemm, spsv, spsm, and spitsv. -- Removed rocsparse_spmm_ex routine - -##### Fixed +##### Fixes - Fixed a bug in rocsparse-bench, where SpMV algorithm was not taken into account in CSR format - Fixed the BSR/GEBSR routines bsrmv, bsrsv, bsrmm, bsrgeam, gebsrmv, gebsrmm so that block_dim==0 is considered an invalid size - Fixed bug where passing nnz = 0 to doti or dotci did not always return a dot product of 0 +##### Deprecatations + +- Deprecated rocsparse_spmv_ex +- Deprecated rocsparse_xbsrmv_ex routines + +##### Removals + +- Removed auto stages from spmv, spmm, spgemm, spsv, spsm, and spitsv. +- Removed rocsparse_spmm_ex routine + #### rocThrust 3.0.0 rocThrust 3.0.0 for ROCm 6.0.0 -##### Added +##### Additions - Updated to match upstream Thrust 2.0.1 - NV_IF_TARGET macro from libcu++ for NVIDIA backend and HIP implementation for HIP backend. -##### Changed +##### Changes - The cmake build system now additionally accepts `GPU_TARGETS` in addition to `AMDGPU_TARGETS` for setting the targeted gpu architectures. `GPU_TARGETS=all` will compile for all supported architectures. `AMDGPU_TARGETS` is only provided for backwards compatibility, `GPU_TARGETS` should be preferred. -##### Removed +##### Fixes + +- Fixed a segmentation fault when binary search / upper bound / lower bound / equal range was invoked with `hip_rocprim::execute_on_stream_base` policy. + +##### Removals - Removed cub symlink from the root of the repository. - Removed support for deprecated macros (THRUST_DEVICE_BACKEND and THRUST_HOST_BACKEND). -##### Fixed - -- Fixed a segmentation fault when binary search / upper bound / lower bound / equal range was invoked with `hip_rocprim::execute_on_stream_base` policy. - -##### Known Issues +##### Known issues - For NVIDIA backend, `NV_IF_TARGET` and `THRUST_RDC_ENABLED` intend to substitute the `THRUST_HAS_CUDART` macro, which is now no longer used in Thrust (provided for legacy support only). However, there is no `THRUST_RDC_ENABLED` macro available for the HIP backend, so some branches in Thrust's code may be unreachable in the HIP backend. @@ -2233,19 +2395,19 @@ rocThrust 3.0.0 for ROCm 6.0.0 rocWMMA 1.3.0 for ROCm 6.0.0 -##### Added +##### Additions - Added support for gfx940, gfx941 and gfx942 targets - Added support for f8, bf8 and xfloat32 datatypes - Added support for HIP_NO_HALF, __ HIP_NO_HALF_CONVERSIONS__ and __ HIP_NO_HALF_OPERATORS__ (e.g. pytorch environment) -##### Changed +##### Changes - rocWMMA with hipRTC now supports bfloat16_t datatype - gfx11 wmma now uses lane swap instead of broadcast for layout adjustment - Updated samples GEMM parameter validation on host arch -##### Fixed +##### Fixes - Disabled gtest static library deployment - Extended tests now build in large code model @@ -2254,7 +2416,7 @@ rocWMMA 1.3.0 for ROCm 6.0.0 rpp for ROCm 6.0.0 -##### Added +##### Additions * New Tests @@ -2262,15 +2424,15 @@ rpp for ROCm 6.0.0 * Readme Updates -##### Changed +##### Changes * **Backend** - Default Backend set to `HIP` -##### Fixed +##### Fixes * Minor bugs and warnings -##### Tested Configurations +###### Tested Configurations * Linux distribution + Ubuntu - `18.04` / `20.04` @@ -2281,55 +2443,11 @@ rpp for ROCm 6.0.0 * Boost - Version `1.72` * IEEE 754-based half-precision floating-point library - Version `1.12.0` -##### Rpp 1.3.0 - - - -##### Rpp 1.2.0 - - - -##### Known Issues - -* `CPU` only backend not enabled - -##### Rpp 1.1.0 - - - -##### Rpp 1.0.0 - - - -##### Rpp 0.99 - - - -##### Rpp 0.98 - - - -##### Rpp 0.97 - - - -##### Rpp 0.96 - - - -##### Rpp 0.95 - - - -##### Rpp 0.93 - - - #### Tensile 4.39.0 Tensile 4.39.0 for ROCm 6.0.0 -##### Added +##### Additions - Added aquavanjaram support: gfx940/gfx941/gfx942, fp8/bf8 datatype, xf32 datatype, and stochastic rounding for various datatypes - Added/updated tuning scripts @@ -2350,7 +2468,7 @@ Tensile 4.39.0 for ROCm 6.0.0 - Supported DGEMM TLUB + RLVW=2 for odd N (edge shift change) - Enabled miLatency optimization for (gfx940/gfx941 + MFMA) for specific data types, and fixed instruction scheduling -##### Changed +##### Changes - Removed old code for DTL + (bpe * GlobalReadVectorWidth > 4) - Changed/updated failed CI tests for gfx11xx, InitAccVgprOpt, and DTLds @@ -2368,7 +2486,7 @@ Tensile 4.39.0 for ROCm 6.0.0 - Enabled ROCm SMI for gfx940/941. - Modified non-lazy load build to skip experimental logic -##### Fixed +##### Fixes - Fixed predicate ordering for fp16alt impl round near zero mode to unbreak distance modes - Fixed boundary check for mirror dims and re-enable disabled mirror dims test cases @@ -2726,7 +2844,7 @@ MIGraphX 2.7 for ROCm 5.7.0 - Improved compile times by only building for the GPU on the system - Improve performance of pointwise/reduction kernels when using NHWC layouts - Load specific version of the migraphx_py library -- Annotate functions with the block size so the compiler can do a better job of optimizing +- Annotate functions with the block size so the compiler can do a better job of optimizing - Enable reshape on nonstandard shapes - Use half HIP APIs to compute max and min - Added support for broadcasted scalars to unsqueeze operator @@ -3638,7 +3756,7 @@ rocSPARSE 2.5.2 for ROCm 5.6.0 rocThrust 2.18.0 for ROCm 5.6.0 -##### Fixed +##### Fixed - `lower_bound`, `upper_bound`, and `binary_search` failed to compile for certain types. @@ -5259,7 +5377,7 @@ function or by parameters. ##### Changed -- Improved build parallelism of the test suite by splitting up large compilation units for `DeviceRadixSort`, +- Improved build parallelism of the test suite by splitting up large compilation units for `DeviceRadixSort`, `DeviceSegmentedRadixSort` and `DeviceSegmentedSort`. - CUB backend references CUB and thrust version 1.17.1. @@ -5379,8 +5497,8 @@ rocFFT 1.0.19 for ROCm 5.4.0 ##### Changed -- Moved runtime compilation cache to in-memory by default. A default on-disk cache can encounter contention problems -on multi-node clusters with a shared filesystem. rocFFT can still be told to use an on-disk cache by setting the +- Moved runtime compilation cache to in-memory by default. A default on-disk cache can encounter contention problems +on multi-node clusters with a shared filesystem. rocFFT can still be told to use an on-disk cache by setting the ROCFFT_RTC_CACHE_PATH environment variable. #### rocPRIM 2.12.0 @@ -5389,7 +5507,7 @@ rocPRIM 2.12.0 for ROCm 5.4.0 ##### Changed -- `device_partition`, `device_unique`, and `device_reduce_by_key` now support problem +- `device_partition`, `device_unique`, and `device_reduce_by_key` now support problem sizes larger than 2^32 items. ##### Removed @@ -7113,7 +7231,7 @@ rocSPARSE 2.2.0 for ROCm 5.2.0 ##### Added -- batched SpMM for CSR, COO and Blocked ELL formats. +- batched SpMM for CSR, COO and Blocked ELL formats. - Packages for test and benchmark executables on all supported OSes using CPack. - Clients file importers and exporters. @@ -7850,7 +7968,7 @@ rocSPARSE 2.1.0 for ROCm 5.1.0 ##### Added -- gtsv_interleaved_batch +- gtsv_interleaved_batch - gpsv_interleaved_batch - SpGEMM_reuse - Allow copying of mat info struct diff --git a/RELEASE.md b/RELEASE.md index dd2fb3284..b4ac827e7 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,4 +1,5 @@ -# ROCm 6.1 release highlights +# ROCm 6.1.1 release notes + @@ -8,245 +9,140 @@ -The ROCm™ 6.1 release consists of new features and fixes to improve the stability and -performance of AMD Instinct™ MI300 GPU applications. Notably, we've added: +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. -* Full support for Ubuntu 22.04.4. +## OS support -* **rocDecode**, a new ROCm component that provides high-performance video decode support for - AMD GPUs. With rocDecode, you can decode compressed video streams while keeping the resulting - YUV frames in video memory. With decoded frames in video memory, you can run video - post-processing using ROCm HIP, avoiding unnecessary data copies via the PCIe bus. +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). - To learn more, refer to the rocDecode - [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). +## AMD SMI -## OS and GPU support changes +AMD SMI for ROCm 6.1.1 -ROCm 6.1 adds the following operating system support: +### Additions -* MI300A: Ubuntu 22.04.4 and RHEL 9.3 -* MI300X: Ubuntu 22.04.4 +- Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. -Future releases will add additional operating systems to match the general offering. For older -generations of supported AMD Instinct products, we’ve added Ubuntu 22.04.4 support. +### Changes -```{tip} -To view the complete list of supported GPUs and operating systems, refer to the system requirements -page for -[Linux](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html) -and -[Windows](https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html). +- Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +- Updated the output of `amd-smi metric --clock` to reflect each engine. +- Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +### Fixes + +- Fixed `amd-smi metric --clock`'s clock lock and deep sleep status. +- Fixed an issue that would cause an error when resetting non-AMD GPUs. +- Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +- Fixed the output results of `amd-smi process` when getting processes running on a device. + +### Removals + +- Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +### Known issues + +- `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using some PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. ``` -## Installation packages +## HIPCC -This release includes a new set of packages for every module (all libraries and binaries default to -`DT_RPATH`). Package names have the suffix `rpath`; for example, the `rpath` variant of `rocminfo` is -`rocminfo-rpath`. +HIPCC for ROCm 6.1.1 -```{warning} -The new `rpath` packages will conflict with the default packages; they are meant to be used only in -environments where legacy `DT_RPATH` is the preferred form of linking (instead of `DT_RUNPATH`). We -do **not** recommend installing both sets of packages. -``` +### Changes -## ROCm components +- **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users. You can continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +- **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +- **Upcoming:** a subsequent release will remove `hipcc.pl` and `hipconfig.pl`. -The following sections highlight select component-specific changes. For additional details, refer to the -[Changelog](https://rocm.docs.amd.com/en/develop/about/CHANGELOG.html). +## HIPIFY -### AMD System Management Interface (SMI) Tool +HIPIFY for ROCm 6.1.1 -* **New monitor command for GPU metrics**. - Use the monitor command to customize, capture, collect, and observe GPU metrics on - target devices. +### Additions -* **Integration with E-SMI**. - The EPYC™ System Management Interface In-band Library is a Linux C-library that provides in-band - user space software APIs to monitor and control your CPU’s power, energy, performance, and other - system management functionality. This integration enables access to CPU metrics and telemetry - through the AMD SMI API and CLI tools. +- Added support for LLVM 18.1.2. +- Added support for cuDNN 9.0.0. +- Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). -### Composable Kernel (CK) +## ROCm SMI -* **New architecture support**. - CK now supports to the following architectures to enable efficient image denoising on the following - AMD GPUs: gfx1030, gfx1100, gfx1031, gfx1101, gfx1032, gfx1102, gfx1034, gfx1103, gfx1035, - gfx1036 +ROCm SMI for ROCm 6.1.1 -* **FP8 rounding logic is replaced with stochastic rounding**. - Stochastic rounding mimics a more realistic data behavior and improves model convergence. +### Known issues -### HIP +- ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. -* **New environment variable to enable kernel run serialization**. - The default `HIP_LAUNCH_BLOCKING` value is `0` (disable); which causes kernels to run as defined in - the queue. When set to `1` (enable), the HIP runtime serializes the kernel queue, which behaves the - same as `AMD_SERIALIZE_KERNEL`. +## Library changes in ROCm 6.1.1 -### hipBLASLt +| Library | Version | +| ----------- | -------------------------------------------------------------------------- | +| AMDMIGraphX | [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.1) | +| hipBLAS | [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.1) | +| hipBLASLt | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.1) | +| hipCUB | [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.1) | +| hipFFT | [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.1) | +| hipRAND | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.1) | +| hipSOLVER | 2.1.0 ⇒ [2.1.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.1) | +| hipSPARSE | [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.1) | +| hipSPARSELt | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.1) | +| hipTensor | [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.1) | +| MIOpen | [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.1) | +| MIVisionX | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.1) | +| rccl | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.1) | +| rocALUTION | [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.1) | +| rocBLAS | [4.1.0](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.1) | +| rocDecode | [0.5.0](https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.1) | +| rocFFT | 1.0.26 ⇒ [1.0.27](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.1) | +| rocm-cmake | [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.1) | +| rocPRIM | [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.1) | +| rocRAND | [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.1) | +| rocSOLVER | [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.1) | +| rocSPARSE | [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.1) | +| rocThrust | [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.1) | +| rocWMMA | [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.1) | +| rpp | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.1) | +| Tensile | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.1) | -* **New GemmTuning extension parameter** GemmTuning allows you to set a split-k value for each solution, which is more feasible for - performance tuning. +#### hipBLASLt 0.7.0 -### hipFFT +hipBLASLt 0.7.0 for ROCm 6.1.1 -* **New multi-GPU support for single-process transforms** Multiple GPUs can be used to perform a transform in a single process. Note that this initial - implementation is a functional preview. +##### Additions -### HIPIFY +- Added `hipblasltExtSoftmax` extension API. +- Added `hipblasltExtLayerNorm` extension API. +- Added `hipblasltExtAMax` extension API. +- Added `GemmTuning` extension parameter to set split-k by user. +- Added support for mixed precision datatype: fp16/fp8 in with fp16 outk. -* **Skipped code blocks**: Code blocks that are skipped by the preprocessor are no longer hipified under the - `--default-preprocessor` option. To hipify everything, despite conditional preprocessor directives - (`#if`, `#ifdef`, `#ifndef`, `#elif`, or `#else`), don't use the `--default-preprocessor` or `--amap` options. +##### Deprecations -### hipSPARSELt +- **Upcoming**: `algoGetHeuristic()` ext API for GroupGemm will be deprecated in a future release of hipBLASLt. -* **Structured sparsity matrix support extensions** - Structured sparsity matrices help speed up deep-learning workloads. We now support `B` as the - sparse matrix and `A` as the dense matrix in Sparse Matrix-Matrix Multiplication (SPMM). Prior to this - release, we only supported sparse (matrix A) x dense (matrix B) matrix multiplication. Structured - sparsity matrices help speed up deep learning workloads. +### hipSOLVER 2.1.1 -### hipTensor +hipSOLVER 2.1.1 for ROCm 6.1.1 -* **4D tensor permutation and contraction support**. - You can now perform tensor permutation on 4D tensors and 4D contractions for F16, BF16, and - Complex F32/F64 datatypes. +#### Changes -### MIGraphX +- By default, `BUILD_WITH_SPARSE` is now set to OFF on Microsoft Windows. -* **Improved performance for transformer-based models**. - We added support for FlashAttention, which benefits models like BERT, GPT, and Stable Diffusion. +#### Fixes -* **New Torch-MIGraphX driver**. - This driver calls MIGraphX directly from PyTorch. It provides an `mgx_module` object that you can - invoke like any other Torch module, but which utilizes the MIGraphX inference engine internally. - Torch-MIGraphX supports FP32, FP16, and INT8 datatypes. +- Fixed benchmark client build when `BUILD_WITH_SPARSE` is OFF. - * **FP8 support**. We now offer functional support for inference in the FP8E4M3FNUZ datatype. You - can load an ONNX model in FP8E4M3FNUZ using C++ or Python APIs, or `migraphx-driver`. - You can quantize a floating point model to FP8 format by using the `--fp8` flag with `migraphx-driver`. - To accelerate inference, MIGraphX uses hardware acceleration on MI300 for FP8 by leveraging FP8 - support in various backend kernel libraries. +### rocFFT 1.0.27 -### MIOpen +rocFFT 1.0.27 for ROCm 6.1.1 -* **Improved performance for inference and convolutions**. - Inference support now provided for Find 2.0 fusion plans. Additionally, we've enhanced the Number of - samples, Height, Width, and Channels (NHWC) convolution kernels for heuristics. NHWC stores data - in a format where the height and width dimensions come first, followed by channels. +#### Additions -### OpenMP +- Enable multi-GPU testing on systems without direct GPU-interconnects. -* **Implicit Zero-copy is triggered automatically in XNACK-enabled MI300A systems**. - Implicit Zero-copy behavior in `non unified_shared_memory` programs is triggered automatically in - XNACK-enabled MI300A systems (for example, when using the `HSA_XNACK=1` environment - variable). OpenMP supports the 'requires `unified_shared_memory`' directive to support programs - that don’t want to copy data explicitly between the CPU and GPU. However, this requires that you add - these directives to every translation unit of the program. +#### Fixes -* **New MI300 FP atomics**. Application performance can now improve by leveraging fast floating-point atomics on MI300 (gfx942). - - -### RCCL - -* **NCCL 2.18.6 compatibility**. - RCCL is now compatible with NCCL 2.18.6, which includes increasing the maximum IB network interfaces to 32 and fixing network device ordering when creating communicators with only one GPU - per node. - -* **Doubled simultaneous communication channels**. - We improved MI300X performance by increasing the maximum number of simultaneous - communication channels from 32 to 64. - -### rocALUTION - -* **New multiple node and GPU support**. - Unsmoothed and smoothed aggregations and Ruge-Stueben AMG now work with multiple nodes - and GPUs. For more information, refer to the - [API documentation](https://rocm.docs.amd.com/projects/rocALUTION/en/latest/usermanual/solvers.html#unsmoothed-aggregation-amg). - -### rocDecode - -* **New ROCm component**. - rocDecode ROCm's newest component, providing high-performance video decode support for AMD - GPUs. To learn more, refer to the - [documentation](https://rocm.docs.amd.com/projects/rocDecode/en/latest/). - -### ROCm Compiler - -* **Combined projects**. ROCm Device-Libs, ROCm Compiler Support, and hipCC are now located in - the `llvm-project/amd` subdirectory of AMD's fork of the LLVM project. Previously, these projects - were maintained in separate repositories. Note that the projects themselves will continue to be - packaged separately. - -* **Split the 'rocm-llvm' package**. This package has been split into a required and an optional package: - - * **rocm-llvm(required)**: A package containing the essential binaries needed for compilation. - - * **rocm-llvm-dev(optional)**: A package containing binaries for compiler and application developers. - - -### ROCm Data Center Tool (RDC) - -* **C++ upgrades**. - RDC was upgraded from C++11 to C++17 to enable a more modern C++ standard when writing RDC plugins. - -### ROCm Performance Primitives (RPP) - -* **New backend support**. - Audio processing support added for the `HOST` backend and 3D Voxel kernels support - for the `HOST` and `HIP` backends. - -### ROCm Validation Suite - -* **New datatype support**. -Added BF16 and FP8 datatypes based on General Matrix Multiply(GEMM) operations in the GPU Stress Test (GST) module. This provides additional performance benchmarking and stress testing based on the newly supported datatypes. - -### rocSOLVER - -* **New EigenSolver routine**. -Based on the Jacobi algorithm, a new EigenSolver routine was added to the library. This routine computes the eigenvalues and eigenvectors of a matrix with improved performance. - -### ROCTracer - -* **New versioning and callback enhancements**. -Improved to match versioning changes in HIP Runtime and supports runtime API callbacks and activity record logging. The APIs of different runtimes at different levels are considered different API domains with assigned domain IDs. - -## Upcoming changes - -* ROCm SMI will be deprecated in a future release. We advise **migrating to AMD SMI** now to - prevent future workflow disruptions. - -* hipCC supports, by default, the following compiler invocation flags: - - * `-mllvm -amdgpu-early-inline-all=true` - * `-mllvm -amdgpu-function-calls=false` - - In a future ROCm release, hipCC will no longer support these flags. It will, instead, use the Clang - defaults: - - * `-mllvm -amdgpu-early-inline-all=false` - * `-mllvm -amdgpu-function-calls=true` - - To evaluate the impact of this change, include `--hipcc-func-supp` in your hipCC invocation. - - For information on these flags, and the differences between hipCC and Clang, refer to - [ROCm Compiler Interfaces](https://rocm.docs.amd.com/en/latest/reference/rocmcc.html#rocm-compiler-interfaces). - -* Future ROCm releases will not provide `clang-ocl`. For more information, refer to the - [`clang-ocl` README](https://github.com/ROCm/clang-ocl). - -* The following operating systems will be supported in a future ROCm release. They are currently - only available in beta. - - * RHEL 9.4 - * RHEL 8.10 - * SLES 15 SP6 - -* As of ROCm 6.2, we’ve planned for **end-of-support** for: - - * Ubuntu 20.04.5 - * SLES 15 SP4 - * RHEL/CentOS 7.9 +- Fixed kernel launch failure on execute of very large odd-length real-complex transforms. diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst new file mode 100644 index 000000000..6c629a3cd --- /dev/null +++ b/docs/compatibility/compatibility-matrix.rst @@ -0,0 +1,126 @@ +.. meta:: + :description: ROCm compatibility matrix + :keywords: AMD, GPU, architecture, hardware, compatibility, requirements + +************************************************************************************** +Compatibility matrix +************************************************************************************** + +Use this matrix to view the ROCm compatibility across successive major and minor releases. + + +.. container:: format-big-table + + .. csv-table:: + :header: "ROCm Version", "6.1.0", "6.0.0" + :stub-columns: 1 + + :doc:`Operating Systems `, "Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3" + ,"Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5" + ,"RHEL 9.3, 9.2","RHEL 9.3, 9.2" + ,"RHEL 8.9, 8.8","RHEL 8.9, 8.8" + ,"SLES 15 SP5, SP4","SLES 15 SP5, SP4" + ,CentOS 7.9,CentOS 7.9 + ,, + :doc:`GFX Architecture `,CDNA3,CDNA3 + ,CDNA2,CDNA2 + ,CDNA,CDNA + ,RDNA3,RDNA3 + ,RDNA2,RDNA2 + ,, + :doc:`GFX Card `,gfx1100,gfx1100 + ,gfx1030,gfx1030 + ,gfx942 [#]_, gfx942 [#]_ + ,gfx90a,gfx90a + ,gfx908,gfx908 + ,, + ECOSYSTEM SUPPORT:,, + :doc:`PyTorch `,"2.1, 2.0, 1.13","2.1, 2.0, 1.13" + :doc:`Tensorflow `,"2.15, 2.14, 2.13","2.14, 2.13, 2.12" + :doc:`JAX `,0.4.26,0.4.26 + `ONNX-RT `_,1.17.3,1.14.1 + ,, + 3RD PARTY COMMUNICATION LIBS:,, + `UCC `_,>=1.2.0,>=1.2.0 + `UCX `_,>=1.14.1,>=1.14.1 + ,, + 3RD PARTY ALGORITHM LIBS:,, + Thrust,2.1.0,2.0.1 + CUB,2.1.0,2.0.1 + ,, + ML & COMPUTER VISION LIBS:,, + :doc:`Composable Kernel `,1.1.0,1.1.0 + :doc:`MIGraphX `,2.9.0,2.8.0 + :doc:`MIOpen `,3.1.0,3.0.0 + :doc:`MIVisionX `,2.5.0,2.5.0 + :doc:`rocDecode `,0.5.0,N/A + :doc:`RPP `,1.5.0,1.4.0 + ,, + COMMUNICATION:,, + :doc:`rccl `,2.18.6,2.18.3 + ,, + MATH LIBS:,, + `half `_ ,1.12.0,1.12.0 + :doc:`hipBLAS `,2.1.0,2.0.0 + :doc:`hipBLASLt `,0.7.0,0.6.0 + :doc:`hipFFT `,1.0.14,1.0.13 + :doc:`hipFORT `,0.4.0,0.4.0 + :doc:`hipRAND `,2.10.16,2.10.16 + :doc:`hipSOLVER `,2.1.0,2.0.0 + :doc:`hipSPARSE `,3.0.1,3.0.0 + :doc:`hipSPARSELt `,0.1.0,0.1.0 + :doc:`rocALUTION `,3.1.1,3.0.3 + :doc:`rocBLAS `,4.1.0,4.0.0 + :doc:`rocFFT `,1.0.27,1.0.23 + :doc:`rocRAND `,3.0.1,2.10.17 + :doc:`rocSOLVER `,3.25.0,3.24.0 + :doc:`rocSPARSE `,3.1.2,3.0.2 + :doc:`rocWMMA `,1.4.0,1.3.0 + `Tensile `_,4.40.0,4.39.0 + ,, + PRIMITIVES:,, + :doc:`hipCUB `,3.1.0,3.0.0 + :doc:`hipTensor `,1.2.0,1.1.0 + :doc:`rocPRIM `,3.1.0,3.0.0 + :doc:`rocThrust `,3.0.1,3.0.0 + ,, + SUPPORT LIBS:,, + `hipother `_,6.1.40091,6.0.32830 + `rocm-cmake `_,0.12.0,0.11.0 + `rocm-core `_,6.1.0,6.0.0 + `ROCT-Thunk-Interface `_,20240125.3.30,20231016.2.245 + ,, + TOOLS:,, + :doc:`AMD SMI `,24.4.1,23.4.2 + :doc:`HIPIFY `,17.0.0,17.0.0 + :doc:`ROCdbgapi `,0.71.0,0.71.0 + `ROCdebug-Agent `_,2.0.3,2.0.3 + :doc:`rocGDB `,14.1.0,13.2.0 + :doc:`rocProfiler `,2.0.60100,2.0.0 + `rocprofiler-register `_,0.3.0,N/A + :doc:`rocTracer `,4.1.60100,4.1.0 + `rocm_bandwidth_test `_,1.4.0,1.4.0 + :doc:`ROCm Data Center Tool `,0.3.0,0.3.0 + `rocminfo `_,1.0.0,1.0.0 + :doc:`ROCm SMI Lib `,7.0.0,6.0.0 + :doc:`ROCm Validation Suite `,rocm-6.1.0,rocm-6.0.0 + :doc:`TransferBench `,1.48,1.46 + ,, + COMPILERS:,, + `AOMP `_,17.60.0,17.60.0 + `clang-ocl `_,0.5.0,0.5.0 + `Flang `_,17.0.0.24103,17.0.0.23483 + `llvm-project `_,17.0.0.24103,17.0.0.23483 + `OpenMP `_,17.0.0.24103,17.0.0.23483 + ,, + RUNTIMES:,, + :doc:`HIP `,6.1.40091,6.0.32830 + `OpenCL Runtime `_,2.0.0,2.0.0 + `ROCR Runtime `_,1.13.0,1.12.0 + + +.. rubric:: Footnotes +.. [#] **For ROCm 6.1** - MI300A (gfx942) is supported on Ubuntu 22.04.4, RHEL 9.3 & 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.4. +.. [#] **For ROCm 6.0** - MI300A (gfx942) is supported on Ubuntu 22.04.3, RHEL 8.9 and SLES 15 SP5. MI300X (gfx942) is only supported on Ubuntu 22.04.3. + + diff --git a/docs/about/compatibility/precision-support.rst b/docs/compatibility/precision-support.rst similarity index 99% rename from docs/about/compatibility/precision-support.rst rename to docs/compatibility/precision-support.rst index fa0a385ad..3474dd67a 100644 --- a/docs/about/compatibility/precision-support.rst +++ b/docs/compatibility/precision-support.rst @@ -47,7 +47,7 @@ Floating-point types The floating-point types that are supported by ROCm are listed in the following table, together with their corresponding HIP type and a short description. -.. image:: ../../data/about/compatibility/floating-point-data-types.png +.. image:: ../data/about/compatibility/floating-point-data-types.png :alt: Supported floating-point types .. list-table:: diff --git a/docs/conf.py b/docs/conf.py index eade37a8f..3d31982d2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -98,6 +98,9 @@ external_projects_current_project = "rocm" html_theme = "rocm_docs_theme" html_theme_options = {"flavor": "rocm-docs-home"} +html_static_path = ["sphinx/static/css"] +html_css_files = ["rocm_custom.css"] + html_title = "ROCm Documentation" html_theme_options = { diff --git a/docs/index.md b/docs/index.md index 862330ac8..b85ab88f3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -51,13 +51,14 @@ Our documentation is organized into the following categories: :img-alt: Compatibility information :padding: 2 +* [Compatibility matrix](./compatibility/compatibility-matrix.rst) * {doc}`System requirements (Linux)` * {doc}`System requirements (Windows)` * {doc}`Third-party support` * {doc}`User/kernel space` * {doc}`Docker` * [OpenMP](./about/compatibility/openmp.md) -* [Precision support](./about/compatibility/precision-support.rst) +* [Precision support](./compatibility/precision-support.rst) * {doc}`ROCm on Radeon GPUs` ::: diff --git a/docs/reference/gpu-arch-specs.rst b/docs/reference/gpu-arch-specs.rst index b8647e830..df9068c48 100644 --- a/docs/reference/gpu-arch-specs.rst +++ b/docs/reference/gpu-arch-specs.rst @@ -7,655 +7,656 @@ Accelerator and GPU hardware specifications The following tables provide an overview of the hardware specifications for AMD Instinct™ accelerators, and AMD Radeon™ PRO and Radeon™ GPUs. -.. tab-set:: +.. container:: horizontal-scrolling-container - .. tab-item:: AMD Instinct accelerators + .. tab-set:: - .. list-table:: - :header-rows: 1 - :name: instinct-arch-spec-table + .. tab-item:: AMD Instinct accelerators - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - L3 Cache (MiB) - - L2 Cache (MiB) - - L1 Vector Cache (KiB) - - L1 Scalar Cache (KiB) - - L1 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - MI300X - - CDNA3 - - gfx941 or gfx942 - - 192 - - 304 - - 64 - - 64 - - 256 - - 32 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI300A - - CDNA3 - - gfx940 or gfx942 - - 128 - - 228 - - 64 - - 64 - - 256 - - 24 - - 32 - - 16 per 2 CUs - - 64 per 2 CUs - - 512 - - 12.5 - * - - MI250X - - CDNA2 - - gfx90a - - 128 - - 220 (110 per GCD) - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI250 - - CDNA2 - - gfx90a - - 128 - - 208 - - 64 - - 64 - - - - 16 (8 per GCD) - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI210 - - CDNA2 - - gfx90a - - 64 - - 104 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 2 CUs - - 32 per 2 CUs - - 512 - - 12.5 - * - - MI100 - - CDNA - - gfx908 - - 32 - - 120 - - 64 - - 64 - - - - 8 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 VGPR and 256 AccVGPR - - 12.5 - * - - MI60 - - GCN5.1 - - gfx906 - - 32 - - 64 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (32GB) - - GCN5.1 - - gfx906 - - 32 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI50 (16GB) - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI25 - - GCN5.0 - - gfx900 - - 16  - - 64 - - 64 - - 64  - - - - 4  - - 16  - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 - * - - MI8 - - GCN3.0 - - gfx803 - - 4 - - 64 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 - * - - MI6 - - GCN4.0 - - gfx803 - - 16 - - 36 - - 64 - - 64 - - - - 2 - - 16 - - 16 per 4 CUs - - 32 per 4 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: instinct-arch-spec-table - .. tab-item:: AMD Radeon PRO GPUs + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - L3 Cache (MiB) + - L2 Cache (MiB) + - L1 Vector Cache (KiB) + - L1 Scalar Cache (KiB) + - L1 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - MI300X + - CDNA3 + - gfx941 or gfx942 + - 192 + - 304 + - 64 + - 64 + - 256 + - 32 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI300A + - CDNA3 + - gfx940 or gfx942 + - 128 + - 228 + - 64 + - 64 + - 256 + - 24 + - 32 + - 16 per 2 CUs + - 64 per 2 CUs + - 512 + - 12.5 + * + - MI250X + - CDNA2 + - gfx90a + - 128 + - 220 (110 per GCD) + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI250 + - CDNA2 + - gfx90a + - 128 + - 208 + - 64 + - 64 + - + - 16 (8 per GCD) + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI210 + - CDNA2 + - gfx90a + - 64 + - 104 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 2 CUs + - 32 per 2 CUs + - 512 + - 12.5 + * + - MI100 + - CDNA + - gfx908 + - 32 + - 120 + - 64 + - 64 + - + - 8 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 VGPR and 256 AccVGPR + - 12.5 + * + - MI60 + - GCN5.1 + - gfx906 + - 32 + - 64 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (32GB) + - GCN5.1 + - gfx906 + - 32 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI50 (16GB) + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI25 + - GCN5.0 + - gfx900 + - 16  + - 64 + - 64 + - 64  + - + - 4  + - 16  + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 + * + - MI8 + - GCN3.0 + - gfx803 + - 4 + - 64 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 + * + - MI6 + - GCN4.0 + - gfx803 + - 16 + - 36 + - 64 + - 64 + - + - 2 + - 16 + - 16 per 4 CUs + - 32 per 4 CUs + - 256 + - 12.5 - .. list-table:: - :header-rows: 1 - :name: radeon-pro-arch-spec-table + .. tab-item:: AMD Radeon PRO GPUs - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon PRO W7900 - - RDNA3 - - gfx1100 - - 48 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7800 - - RDNA3 - - gfx1100 - - 32 - - 70 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W7700 - - RDNA3 - - gfx1101 - - 16 - - 48 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon PRO W6800 - - RDNA2 - - gfx1030 - - 32 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO W6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon PRO V620 - - RDNA2 - - gfx1030 - - 32 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro W5500 - - RDNA - - gfx1012 - - 8 - - 22 - - 32 - - 128 - - - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon Pro VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: radeon-pro-arch-spec-table - .. tab-item:: AMD Radeon GPUs + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon PRO W7900 + - RDNA3 + - gfx1100 + - 48 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7800 + - RDNA3 + - gfx1100 + - 32 + - 70 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W7700 + - RDNA3 + - gfx1101 + - 16 + - 48 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon PRO W6800 + - RDNA2 + - gfx1030 + - 32 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO W6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon PRO V620 + - RDNA2 + - gfx1030 + - 32 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro W5500 + - RDNA + - gfx1012 + - 8 + - 22 + - 32 + - 128 + - + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon Pro VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 - .. list-table:: - :header-rows: 1 - :name: radeon-arch-spec-table + .. tab-item:: AMD Radeon GPUs - * - - Model - - Architecture - - LLVM target name - - VRAM (GiB) - - Compute Units - - Wavefront Size - - LDS (KiB) - - Infinity Cache (MiB) - - L2 Cache (MiB) - - Graphics L1 Cache (KiB) - - L0 Vector Cache (KiB) - - L0 Scalar Cache (KiB) - - L0 Instruction Cache (KiB) - - VGPR File (KiB) - - SGPR File (KiB) - * - - Radeon RX 7900 XTX - - RDNA3 - - gfx1100 - - 24 - - 96 - - 32 - - 128 - - 96 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 XT - - RDNA3 - - gfx1100 - - 20 - - 84 - - 32 - - 128 - - 80 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7900 GRE - - RDNA3 - - gfx1100 - - 16 - - 80 - - 32 - - 128 - - 64 - - 6 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7800 XT - - RDNA3 - - gfx1101 - - 16 - - 60 - - 32 - - 128 - - 64 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7700 XT - - RDNA3 - - gfx1101 - - 12 - - 54 - - 32 - - 128 - - 48 - - 4 - - 256 - - 32 - - 16 - - 32 - - 384 - - 20 - * - - Radeon RX 7600 - - RDNA3 - - gfx1102 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 256 - - 32 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6950 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6900 XT - - RDNA2 - - gfx1030 - - 16 - - 80 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 XT - - RDNA2 - - gfx1030 - - 16 - - 72 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6800 - - RDNA2 - - gfx1030 - - 16 - - 60 - - 32 - - 128 - - 128 - - 4 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6750 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 XT - - RDNA2 - - gfx1031 - - 12 - - 40 - - 32 - - 128 - - 96 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6700 - - RDNA2 - - gfx1031 - - 10 - - 36 - - 32 - - 128 - - 80 - - 3 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6650 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 XT - - RDNA2 - - gfx1032 - - 8 - - 32 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon RX 6600 - - RDNA2 - - gfx1032 - - 8 - - 28 - - 32 - - 128 - - 32 - - 2 - - 128 - - 16 - - 16 - - 32 - - 256 - - 20 - * - - Radeon VII - - GCN5.1 - - gfx906 - - 16 - - 60 - - 64 - - 64 per CU - - - - 4 - - - - 16 - - 16 per 3 CUs - - 32 per 3 CUs - - 256 - - 12.5 + .. list-table:: + :header-rows: 1 + :name: radeon-arch-spec-table -For more information on the terms used here, see the :ref:`specific documents and guides `, the :doc:`conceptual overview of the HIP programming model`, or the :doc:`HIP reference guide`. + * + - Model + - Architecture + - LLVM target name + - VRAM (GiB) + - Compute Units + - Wavefront Size + - LDS (KiB) + - Infinity Cache (MiB) + - L2 Cache (MiB) + - Graphics L1 Cache (KiB) + - L0 Vector Cache (KiB) + - L0 Scalar Cache (KiB) + - L0 Instruction Cache (KiB) + - VGPR File (KiB) + - SGPR File (KiB) + * + - Radeon RX 7900 XTX + - RDNA3 + - gfx1100 + - 24 + - 96 + - 32 + - 128 + - 96 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 XT + - RDNA3 + - gfx1100 + - 20 + - 84 + - 32 + - 128 + - 80 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7900 GRE + - RDNA3 + - gfx1100 + - 16 + - 80 + - 32 + - 128 + - 64 + - 6 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7800 XT + - RDNA3 + - gfx1101 + - 16 + - 60 + - 32 + - 128 + - 64 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7700 XT + - RDNA3 + - gfx1101 + - 12 + - 54 + - 32 + - 128 + - 48 + - 4 + - 256 + - 32 + - 16 + - 32 + - 384 + - 20 + * + - Radeon RX 7600 + - RDNA3 + - gfx1102 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 256 + - 32 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6950 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6900 XT + - RDNA2 + - gfx1030 + - 16 + - 80 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 XT + - RDNA2 + - gfx1030 + - 16 + - 72 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6800 + - RDNA2 + - gfx1030 + - 16 + - 60 + - 32 + - 128 + - 128 + - 4 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6750 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 XT + - RDNA2 + - gfx1031 + - 12 + - 40 + - 32 + - 128 + - 96 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6700 + - RDNA2 + - gfx1031 + - 10 + - 36 + - 32 + - 128 + - 80 + - 3 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6650 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 XT + - RDNA2 + - gfx1032 + - 8 + - 32 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon RX 6600 + - RDNA2 + - gfx1032 + - 8 + - 28 + - 32 + - 128 + - 32 + - 2 + - 128 + - 16 + - 16 + - 32 + - 256 + - 20 + * + - Radeon VII + - GCN5.1 + - gfx906 + - 16 + - 60 + - 64 + - 64 per CU + - + - 4 + - + - 16 + - 16 per 3 CUs + - 32 per 3 CUs + - 256 + - 12.5 +For more information on the terms used here, see the :ref:`specific documents and guides ` or :doc:`Understanding the HIP programming model`. diff --git a/docs/reference/rocm-tools.md b/docs/reference/rocm-tools.md index 60801dd92..1a53a3273 100644 --- a/docs/reference/rocm-tools.md +++ b/docs/reference/rocm-tools.md @@ -19,6 +19,7 @@ :img-alt: Development tools :padding: 2 +* {doc}`HIPIFY ` * {doc}`ROCdbgapi ` * [ROCmCC](./rocmcc.md) * [ROCm Debug Agent](https://github.com/ROCm/rocr_debug_agent) @@ -35,6 +36,7 @@ * [RocBandwidthTest](https://github.com/ROCm/rocm_bandwidth_test) * {doc}`ROCProfiler ` +* [rocprofiler-register](https://github.com/ROCm/rocprofiler-register) * {doc}`ROCTracer ` ::: diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index af68deae1..413317901 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -8,7 +8,7 @@ subtrees: - entries: - file: what-is-rocm.rst - file: about/release-notes.md - title: Release highlights + title: Release notes subtrees: - entries: - file: about/CHANGELOG.md @@ -25,11 +25,13 @@ subtrees: - caption: Compatibility entries: + - file: compatibility/compatibility-matrix.rst + title: Compatibility matrix - url: https://rocm.docs.amd.com/projects/install-on-linux/en/${branch}/reference/system-requirements.html title: Linux - url: https://rocm.docs.amd.com/projects/install-on-windows/en/${branch}/reference/system-requirements.html title: Windows - - file: about/compatibility/precision-support.rst + - file: compatibility/precision-support.rst title: Precision support - url: https://rocm.docs.amd.com/projects/install-on-linux/en/${branch}/reference/3rd-party-support-matrix.html title: Third-party diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 24dbfcc2a..cdee26699 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,2 +1,2 @@ -rocm-docs-core==1.0.0 -sphinx-reredirects==0.1.3 \ No newline at end of file +rocm-docs-core==1.1.1 +sphinx-reredirects==0.1.3 diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 2e8b53fe7..b81481721 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -46,11 +46,7 @@ idna==3.7 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==7.1.0 - # via sphinx -importlib-resources==6.4.0 - # via rocm-docs-core -jinja2==3.1.3 +jinja2==3.1.4 # via # myst-parser # sphinx @@ -100,7 +96,7 @@ requests==2.31.0 # via # pygithub # sphinx -rocm-docs-core==1.0.0 +rocm-docs-core==1.1.1 # via -r requirements.in smmap==5.0.0 # via gitdb @@ -144,15 +140,11 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -typing-extensions==4.11.0 - # via - # pydata-sphinx-theme - # pygithub -urllib3==2.2.1 - # via - # pygithub - # requests -wrapt==1.16.0 +typing-extensions==4.5.0 + # via pydata-sphinx-theme +urllib3==1.26.18 + # via requests +wrapt==1.14.1 # via deprecated zipp==3.18.1 # via diff --git a/docs/sphinx/static/css/rocm_custom.css b/docs/sphinx/static/css/rocm_custom.css new file mode 100644 index 000000000..7d14bb961 --- /dev/null +++ b/docs/sphinx/static/css/rocm_custom.css @@ -0,0 +1,53 @@ + +/* Adds container for big tables, used for Compatibility Matrix */ + + +/* Header row to have opaque background colour when sticky */ +.format-big-table th { + background-color: var(--pst-color-background); + white-space: nowrap; + } + + /* Turn on borders for whole table */ + .format-big-table th, + .format-big-table td { + border-width: 1px; + } + + /* .format-big-table th.head { */ + /* background-color: var(--pst-color-on-surface); */ + /* } */ + + /* Sticky header for table excluding the stub*/ + .format-big-table th.head:not(.stub) { + position: sticky; + top: 3rem; + z-index: 1; + } + + /* Sticky header for the head & stub: top left cell */ + .format-big-table th.head.stub { + position: sticky; + top: 3rem; + z-index: 1; + background-color: var(--pst-color-background); + white-space: nowrap; + } + + /* Sticky for the stub column */ + /*.format-big-table tbody th:not(:empty) { + position: sticky; + top: 3rem; + z-index: 2; + }*/ + + /* Removes borders for stub column */ + .format-big-table tbody th { + border-top: none; + border-bottom: none; + } + + /* For horizontal scrolling only. Can't be combined with format-big-table container */ + .horizontal-scrolling-container { + overflow-x: scroll; + } diff --git a/tools/autotag/README.md b/tools/autotag/README.md index 437f5d9ce..8900c1920 100755 --- a/tools/autotag/README.md +++ b/tools/autotag/README.md @@ -20,16 +20,16 @@ * Run this for 5.6.0 (change for whatever version you require) * `GITHUB_ACCESS_TOKEN=my_token_here` -To generate the changelog from 5.0.0 up to and including 6.1.0: +To generate the changelog from 5.0.0 up to and including 6.1.1: ```sh -python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.0 +python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 ``` -To generate the changelog only for 6.1.0: +To generate the changelog only for 6.1.1: ```sh -python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.0 +python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 ``` ### Notes diff --git a/tools/autotag/templates/changelog.jinja b/tools/autotag/templates/changelog.jinja index ff1084bac..f9a682090 100644 --- a/tools/autotag/templates/changelog.jinja +++ b/tools/autotag/templates/changelog.jinja @@ -42,7 +42,7 @@ This page contains the release notes for AMD ROCm Software. {%- for lib_name, lib in release.libraries | dictsort %} {%- if rocm_ver_by_lib_ver[lib_name][lib.lib_version] == version and lib.lib_version%} -#### {{lib_name}} {{lib.lib_version}} +#### {{lib_name}} {{lib.message}} diff --git a/tools/autotag/templates/rocm_changes/6.0.2.md b/tools/autotag/templates/rocm_changes/6.0.2.md index 17f51eb4d..226dd6ad5 100644 --- a/tools/autotag/templates/rocm_changes/6.0.2.md +++ b/tools/autotag/templates/rocm_changes/6.0.2.md @@ -1,4 +1,5 @@ -The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. + +The ROCm 6.0.2 point release consists of minor bug fixes to improve the stability of MI300 GPU applications. This release introduces several new driver features for system qualification on our partner server offerings. #### hipFFT 1.0.13 diff --git a/tools/autotag/templates/rocm_changes/6.1.1.md b/tools/autotag/templates/rocm_changes/6.1.1.md new file mode 100644 index 000000000..a67ac7bfd --- /dev/null +++ b/tools/autotag/templates/rocm_changes/6.1.1.md @@ -0,0 +1,67 @@ + +ROCm™ 6.1.1 introduces minor fixes and improvements to some tools and libraries. + +### OS support + +ROCm 6.1.1 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel 6.8). + +### AMD SMI + +AMD SMI for ROCm 6.1.1 + +#### Additions + +* Added deferred error correctable counts to `amd-smi metric -ecc -ecc-blocks`. + +#### Changes + +* Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. +* Updated the output of `amd-smi metric --clock` to reflect each engine. +* Updated the output of `amd-smi topology --json` to align with output reported by host and guest systems. + +#### Fixes + +* Fixed `amd-smi metric --clock`'s clock lock status and deep sleep status. +* Fixed an issue that would cause an error when attempting to reset non-AMD GPUs. +* Fixed `amd-smi metric --pcie` and `amdsmi_get_pcie_info()` when using RDNA3 (Navi 32 and Navi 31) hardware to prevent "UNKNOWN" reports. +* Fixed the output results of `amd-smi process` when getting processes running on a device. + +#### Removals + +* Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release. + +#### Known issues + +* `amd-smi bad-pages` can result in a `ValueError: Null pointer access` error when using certain PMU firmware versions. + +```{note} +See the [detailed changelog](https://github.com/ROCm/amdsmi/blob/docs/6.1.1/CHANGELOG.md) with code samples for more information. +``` + +### HIPCC + +HIPCC for ROCm 6.1.1 + +#### Changes + +* **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. +* **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. +* **Upcoming:** a subsequent will remove `hipcc.pl` and `hipconfig.pl`. + +### HIPIFY + +HIPIFY for ROCm 6.1.1 + +#### Additions + +* Added support for LLVM 18.1.2. +* Added support for cuDNN 9.0.0. +* Added a new option: `--clang-resource-directory` to specify the clang resource path (the path to the parent folder for the `include` folder that contains `__clang_cuda_runtime_wrapper.h` and other header files used during the hipification process). + +### ROCm SMI + +ROCm SMI for ROCm 6.1.1 + +#### Known issues + +* ROCm SMI reports GPU utilization incorrectly for RDNA3 GPUs in some situations. diff --git a/tools/autotag/util/__init__.py b/tools/autotag/util/__init__.py index 40a4fdbd4..bdfded03e 100755 --- a/tools/autotag/util/__init__.py +++ b/tools/autotag/util/__init__.py @@ -1,2 +1,2 @@ from .defaults import TEMPLATES, PROCESSORS -from .custom_templates import hipfort, mivisionx, rpp, rvs +from .custom_templates import hipfort, mivisionx, rpp diff --git a/tools/autotag/util/release_data.py b/tools/autotag/util/release_data.py index d82cbb533..1ad94ab06 100755 --- a/tools/autotag/util/release_data.py +++ b/tools/autotag/util/release_data.py @@ -4,6 +4,7 @@ from dataclasses import dataclass, field import os import re import shutil +import sys from typing import Optional, Union, Dict, List, Tuple from github import Github, UnknownObjectException from github.Repository import Repository @@ -352,6 +353,8 @@ class ReleaseBundleFactory: """Create a release bundle of libraries.""" tag_name = f"rocm-{version}" libraries = { } + + missing_branches = [] print(f"\nLibraries for rocm-{version}:") for name, remote in names_and_remotes: @@ -365,7 +368,13 @@ class ReleaseBundleFactory: continue print(f" Defaulting to branch: {self.branch}") - commit = repo.get_branch(self.branch).commit.sha + try: + repo_branch = repo.get_branch(self.branch) + commit = repo_branch.commit.sha + except Exception: + print(f" - Could not find branch : {self.branch}") + missing_branches.append(f"{self.branch} for {name}") + continue libraries[name] = ReleaseLib( name=name, @@ -381,6 +390,9 @@ class ReleaseBundleFactory: libraries=libraries ) + for missing in missing_branches: + print(f"Could not find the following branch: {missing}") + return data def create_data_dict(