diff --git a/.azuredevops/README.md b/.azuredevops/README.md index 83808a55d..7f105aa02 100644 --- a/.azuredevops/README.md +++ b/.azuredevops/README.md @@ -23,8 +23,40 @@ ROCm-CI Azure DevOps Pipelines contains markup language files that orchestrate b - [YAML schema](https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/?view=azure-pipelines&viewFallbackFrom=azure-devops) - [Azure Pipelines Task Index](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/?view=azure-pipelines) +## VMSS Setup + +The Azure VMSS used for build jobs have docker installed during provisioning through the Azure Portal's settings. +Select the VMSS, then go to Settings, Operating system. +In the Custom Data section, select to Modify Custom Data. Enter the code block below and Apply. + +```bash +#cloud-config + +bootcmd: + - mkdir -p /etc/systemd/system/walinuxagent.service.d + - echo "[Unit]\nAfter=cloud-final.service" > /etc/systemd/system/walinuxagent.service.d/override.conf + - sed "s/After=multi-user.target//g" /lib/systemd/system/cloud-final.service > /etc/systemd/system/cloud-final.service + - systemctl daemon-reload + +apt: + sources: + docker.list: + source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable + keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 + +packages: + - docker-ce + - docker-ce-cli + +groups: + - docker + +runcmd: + - usermod -aG docker $USER + - systemctl restart docker + - systemctl enable docker +``` + ## Disclaimer 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/AMDMIGraphX.yml b/.azuredevops/components/AMDMIGraphX.yml index e197adff1..4f58410e2 100644 --- a/.azuredevops/components/AMDMIGraphX.yml +++ b/.azuredevops/components/AMDMIGraphX.yml @@ -94,23 +94,16 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} # half version should be fixed to 5.6.0 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml + parameters: + buildType: specific + definitionId: ${{ variables.HALF560_PIPELINE_ID }} + buildId: ${{ variables.HALF560_BUILD_ID }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - dependencySource: fixed - fixedComponentName: half - fixedPipelineIdentifier: ${{ variables.HALF560_PIPELINE_ID }} - skipLibraryLinking: true - skipLlvmSymlink: true - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -128,6 +121,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) - job: AMDMIGraphX_testing dependsOn: AMDMIGraphX @@ -155,29 +154,17 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # half version should be fixed to 5.6.0 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml + parameters: + buildType: specific + definitionId: ${{ variables.HALF560_PIPELINE_ID }} + buildId: ${{ variables.HALF560_BUILD_ID }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: - dependencySource: fixed - fixedComponentName: half - fixedPipelineIdentifier: ${{ variables.HALF560_PIPELINE_ID }} - skipLibraryLinking: true - skipLlvmSymlink: true - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: CMake@1 displayName: MIGraphXTest CMake Flags inputs: @@ -198,3 +185,11 @@ jobs: testExecutable: make testParameters: -j$(nproc) check testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - MIGRAPHX_TRACE_BENCHMARKING:::1 diff --git a/.azuredevops/components/HIP.yml b/.azuredevops/components/HIP.yml index 8846d3a3c..7cdf6470a 100644 --- a/.azuredevops/components/HIP.yml +++ b/.azuredevops/components/HIP.yml @@ -8,11 +8,13 @@ parameters: - name: aptPackages type: object default: + - cmake - libnuma-dev - mesa-common-dev - ocl-icd-libopencl1 - ocl-icd-opencl-dev - opencl-headers + - python3-pip - name: pipModules type: object default: @@ -39,8 +41,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -62,13 +63,8 @@ jobs: checkoutRepo: hipother_repo - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependenciesAMD }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # compile clr - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: @@ -88,14 +84,19 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: artifactName: amd + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: amd # HIP with Nvidia backend - job: hip_clr_combined_nvidia variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -118,13 +119,8 @@ jobs: checkoutRepo: hipother_repo - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependenciesNvidia }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - script: 'ls -1R $(Agent.BuildDirectory)/rocm' displayName: 'Artifact listing' # compile clr @@ -142,3 +138,9 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: artifactName: nvidia + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: nvidia diff --git a/.azuredevops/components/HIPIFY.yml b/.azuredevops/components/HIPIFY.yml index 2f8a4b945..ac1c20e7a 100644 --- a/.azuredevops/components/HIPIFY.yml +++ b/.azuredevops/components/HIPIFY.yml @@ -37,9 +37,9 @@ jobs: inputs: targetType: inline script: | - sudo mkdir --parents --mode=0755 /etc/apt/keyrings - wget -q -O- https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-archive-keyring.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/cuda-archive-keyring.gpg > /dev/null - echo "deb [signed-by=/etc/apt/trusted.gpg.d/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" | sudo tee /etc/apt/sources.list.d/cuda-ubuntu2204-x86_64.list + wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb + sudo dpkg -i cuda-keyring_1.1-1_all.deb + sudo rm -f cuda-keyring_1.1-1_all.deb sudo apt update - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml parameters: @@ -106,3 +106,14 @@ jobs: testExecutable: make testParameters: test-hipify testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: combined + registerCUDAPackages: true + extraCopyDirectories: + - llvm-project + extraEnvVars: + - UPSTREAM_LLVM_GIT_URL:::https://github.com/llvm/llvm-project.git + - UPSTREAM_LLVM_TAG:::llvmorg-18.1.2 diff --git a/.azuredevops/components/MIOpen.yml b/.azuredevops/components/MIOpen.yml index 16d3cbaaa..9bd9aeeaa 100644 --- a/.azuredevops/components/MIOpen.yml +++ b/.azuredevops/components/MIOpen.yml @@ -81,14 +81,9 @@ jobs: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: Build and install other dependencies inputs: @@ -118,9 +113,17 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) + extraCopyDirectories: + - miopen-deps - job: MIOpen_testing - timeoutInMinutes: 90 + timeoutInMinutes: 180 dependsOn: MIOpen condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName']))) variables: @@ -144,22 +147,14 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/miopen-get-ck-build.yml parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: Build and install other dependencies inputs: @@ -198,3 +193,11 @@ jobs: parameters: componentName: MIOpen testParameters: '-VV --output-on-failure --force-new-ctest-process --output-junit test_output.xml --exclude-regex test_rnn_seq_api' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + extraCopyDirectories: + - miopen-deps diff --git a/.azuredevops/components/MIVisionX.yml b/.azuredevops/components/MIVisionX.yml index 8e3e4e8c9..8a4b4867d 100644 --- a/.azuredevops/components/MIVisionX.yml +++ b/.azuredevops/components/MIVisionX.yml @@ -24,6 +24,7 @@ parameters: - libopencv-dev - protobuf-compiler - libprotoc-dev + - python3-pip - name: pipModules type: object default: @@ -69,8 +70,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -88,14 +88,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -109,6 +104,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) - job: MIVisionX_testing dependsOn: MIVisionX @@ -133,19 +134,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # anything in /opt may be persistent across runs # so we need to remove the symlink if it already exists - script: | @@ -159,3 +152,10 @@ jobs: parameters: componentName: MIVisionX testDir: 'mivisionx-tests' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true diff --git a/.azuredevops/components/ROCR-Runtime.yml b/.azuredevops/components/ROCR-Runtime.yml index d284fbbdd..cc556bc57 100644 --- a/.azuredevops/components/ROCR-Runtime.yml +++ b/.azuredevops/components/ROCR-Runtime.yml @@ -8,10 +8,13 @@ parameters: - name: aptPackages type: object default: + - cmake - g++ - libdrm-dev - libelf-dev - libnuma-dev + - pkg-config + - python3-pip - name: rocmDependencies type: object default: @@ -29,8 +32,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -43,13 +45,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -58,6 +55,10 @@ jobs: -DCMAKE_BUILD_TYPE=Release - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} - job: ROCR_Runtime_testing dependsOn: ROCR_Runtime @@ -88,19 +89,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} @@ -148,3 +141,9 @@ jobs: testExecutable: ./rocrtst64 testParameters: '--gtest_filter="-rocrtstNeg.Memory_Negative_Tests:rocrtstFunc.Memory_Max_Mem" --gtest_output=xml:./test_output.xml --gtest_color=yes' testDir: $(Build.SourcesDirectory)/rocrtst/suites/test_common/build/$(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) +# docker image will be missing libhwloc5 diff --git a/.azuredevops/components/ROCT-Thunk-Interface.yml b/.azuredevops/components/ROCT-Thunk-Interface.yml index 0c71e9deb..3d8cae54c 100644 --- a/.azuredevops/components/ROCT-Thunk-Interface.yml +++ b/.azuredevops/components/ROCT-Thunk-Interface.yml @@ -16,8 +16,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: diff --git a/.azuredevops/components/ROCdbgapi.yml b/.azuredevops/components/ROCdbgapi.yml index a045cb9fd..8c2d25977 100644 --- a/.azuredevops/components/ROCdbgapi.yml +++ b/.azuredevops/components/ROCdbgapi.yml @@ -10,6 +10,7 @@ parameters: default: - cmake - ninja-build + - python3-pip - name: rocmDependencies type: object default: @@ -23,8 +24,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -37,13 +37,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -52,3 +47,7 @@ jobs: -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} diff --git a/.azuredevops/components/ROCgdb.yml b/.azuredevops/components/ROCgdb.yml index 96ebc30f4..39fa2cc8d 100644 --- a/.azuredevops/components/ROCgdb.yml +++ b/.azuredevops/components/ROCgdb.yml @@ -55,20 +55,10 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-autotools.yml parameters: configureFlags: >- @@ -102,6 +92,7 @@ jobs: sudo rm -rf /opt/rocm sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm echo "##vso[task.prependpath]/opt/rocm/bin" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - task: Bash@3 displayName: check-gdb @@ -116,3 +107,10 @@ jobs: targetType: inline script: find -name gdb.log -exec cat {} \; workingDirectory: $(Build.SourcesDirectory) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: combined + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - PKG_CONFIG_PATH:::/home/user/workspace/rocm/share/pkgconfig diff --git a/.azuredevops/components/ROCmValidationSuite.yml b/.azuredevops/components/ROCmValidationSuite.yml index 124368f01..beef71e9e 100644 --- a/.azuredevops/components/ROCmValidationSuite.yml +++ b/.azuredevops/components/ROCmValidationSuite.yml @@ -10,12 +10,14 @@ parameters: default: - cmake - ninja-build + - libdrm-dev - libyaml-cpp-dev - libpci-dev - libpci3 - libgst-dev - libgtest-dev - git + - python3-pip - name: rocmDependencies type: object default: @@ -58,8 +60,7 @@ jobs: value: $(Agent.BuildDirectory)/rocm - name: HIP_INC_DIR value: $(Agent.BuildDirectory)/rocm - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -76,14 +77,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -98,6 +94,15 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm + - ROCM_PATH:::/home/user/workspace/rocm + - HIP_INC_DIR:::/home/user/workspace/rocm - job: ROCmValidationSuite_testing dependsOn: ROCmValidationSuite @@ -122,19 +127,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -143,3 +140,8 @@ jobs: testParameters: '' testDir: $(Agent.BuildDirectory) testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/Tensile.yml b/.azuredevops/components/Tensile.yml index e4ecc8063..92ad1fe5f 100644 --- a/.azuredevops/components/Tensile.yml +++ b/.azuredevops/components/Tensile.yml @@ -35,8 +35,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -50,13 +49,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - task: Bash@3 displayName: Create wheel file @@ -77,6 +71,23 @@ jobs: retryCountOnTaskFailure: 3 inputs: targetPath: $(Build.ArtifactStagingDirectory) + - task: Bash@3 + displayName: Save pipeline artifact file names + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_drop_$(JOB_GPU_TARGET).tar.gz" >> pipelineArtifacts.txt + whlFile=$(find "$(Build.ArtifactStagingDirectory)" -type f -name "*.whl" | head -n 1) + if [ -n "$whlFile" ]; then + echo $(basename "$whlFile") >> pipelineArtifacts.txt + fi + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) - job: Tensile_testing timeoutInMinutes: 90 @@ -108,19 +119,11 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: pip install inputs: @@ -175,3 +178,13 @@ jobs: inputs: targetType: inline script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/llvm/bin;;' -e 's;^/;;' -e 's;/$;;')" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true + pythonEnvVars: true + extraPaths: /home/user/workspace/rocm/llvm/bin:/home/user/workspace/rocm/bin +# docker image will not have python site-packages in path, but the env vars will make it easier diff --git a/.azuredevops/components/TransferBench.yml b/.azuredevops/components/TransferBench.yml new file mode 100644 index 000000000..4e1f00e48 --- /dev/null +++ b/.azuredevops/components/TransferBench.yml @@ -0,0 +1,123 @@ +parameters: +- name: checkoutRepo + type: string + default: 'self' +- name: checkoutRef + type: string + default: '' +- name: aptPackages + type: object + default: + - cmake + - libnuma-dev + - ninja-build + - python3-pip +- name: rocmDependencies + type: object + default: + - clr + - llvm-project + - rocm-cmake + - rocminfo + - ROCR-Runtime +- name: rocmTestDependencies + type: object + default: + - clr + - llvm-project + - rocm-cmake + - rocminfo + - rocprofiler-register + - ROCR-Runtime + +jobs: +- job: TransferBench + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: ${{ variables.LOW_BUILD_POOL }} + workspace: + clean: all + strategy: + matrix: + gfx942: + JOB_GPU_TARGET: gfx942 + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml + parameters: + checkoutRef: ${{ parameters.checkoutRef }} + dependencyList: ${{ parameters.rocmDependencies }} + gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -GNinja + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml + parameters: + gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + +- job: TransferBench_testing + dependsOn: TransferBench + condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName']))) + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: $(JOB_TEST_POOL) + workspace: + clean: all + strategy: + matrix: + gfx942: + JOB_GPU_TARGET: gfx942 + JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }} + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml + parameters: + gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml + parameters: + checkoutRef: ${{ parameters.checkoutRef }} + dependencyList: ${{ parameters.rocmTestDependencies }} + gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: TransferBench All-to-all + testDir: '$(Agent.BuildDirectory)' + testExecutable: './rocm/bin/TransferBench' + testParameters: 'a2a' + testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: TransferBench Peer-to-peer + testDir: '$(Agent.BuildDirectory)' + testExecutable: './rocm/bin/TransferBench' + testParameters: 'p2p' + testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/amdsmi.yml b/.azuredevops/components/amdsmi.yml index eaa0ad743..2e0ce3a05 100644 --- a/.azuredevops/components/amdsmi.yml +++ b/.azuredevops/components/amdsmi.yml @@ -8,15 +8,17 @@ parameters: - name: aptPackages type: object default: + - cmake - libdrm-dev + - python3-pip + - pkg-config jobs: - job: amdsmi variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -33,6 +35,10 @@ jobs: -DBUILD_TESTS=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} - job: amdsmi_testing dependsOn: amdsmi @@ -63,3 +69,8 @@ jobs: testDir: '$(Agent.BuildDirectory)' testExecutable: './rocm/share/amd_smi/tests/amdsmitst' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/aomp-extras.yml b/.azuredevops/components/aomp-extras.yml index d553a4ecc..c6e39b1eb 100644 --- a/.azuredevops/components/aomp-extras.yml +++ b/.azuredevops/components/aomp-extras.yml @@ -23,8 +23,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -37,13 +36,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: componentName: aomp-extras @@ -56,3 +50,7 @@ jobs: installDir: $(Build.BinariesDirectory)/llvm - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} diff --git a/.azuredevops/components/aomp.yml b/.azuredevops/components/aomp.yml index 9ea3c2069..6257f1f2f 100644 --- a/.azuredevops/components/aomp.yml +++ b/.azuredevops/components/aomp.yml @@ -97,13 +97,8 @@ jobs: checkoutRepo: llvm-project_repo - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # Because clang is not being rebuilt and to separate downloaded ROCm # dependencies from the new artifacts, we use temporary symbolic links # for the compilation and installation to go through. @@ -441,6 +436,11 @@ jobs: RemoveDotFiles: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + optSymLink: true - job: aomp_testing dependsOn: aomp @@ -464,11 +464,8 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: ROCm symbolic link inputs: @@ -518,3 +515,9 @@ jobs: SKIP_TEST_PACKAGE: 1 MAINLINE_BUILD: 1 SUITE_LIST: smoke + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true diff --git a/.azuredevops/components/composable_kernel.yml b/.azuredevops/components/composable_kernel.yml index 376ec4f24..df78fdf02 100644 --- a/.azuredevops/components/composable_kernel.yml +++ b/.azuredevops/components/composable_kernel.yml @@ -58,14 +58,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - script: | mkdir -p $(CCACHE_DIR) echo "##vso[task.prependpath]/usr/lib/ccache" @@ -99,8 +94,14 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: composable_kernel_testing + timeoutInMinutes: 90 dependsOn: composable_kernel condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName']))) variables: @@ -125,19 +126,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - task: Bash@3 displayName: Iterate through test scripts @@ -148,3 +141,8 @@ jobs: ./$file | tee -a $(TEST_LOG_FILE) done workingDirectory: $(Agent.BuildDirectory)/rocm/bin + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/copyHIP.yml b/.azuredevops/components/copyHIP.yml index 17ac6c3f1..9e44d56db 100644 --- a/.azuredevops/components/copyHIP.yml +++ b/.azuredevops/components/copyHIP.yml @@ -31,3 +31,4 @@ jobs: sourceDir: $(Agent.BuildDirectory)/rocm - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml diff --git a/.azuredevops/components/half.yml b/.azuredevops/components/half.yml index 16159e84c..3febf178b 100644 --- a/.azuredevops/components/half.yml +++ b/.azuredevops/components/half.yml @@ -25,8 +25,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -39,13 +38,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -64,3 +58,8 @@ jobs: make test03 ./bin/test workingDirectory: $(Build.SourcesDirectory)/test + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: combined diff --git a/.azuredevops/components/hip-tests.yml b/.azuredevops/components/hip-tests.yml index 5466be97f..eaa61a0c1 100644 --- a/.azuredevops/components/hip-tests.yml +++ b/.azuredevops/components/hip-tests.yml @@ -62,13 +62,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # compile hip-tests - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: @@ -88,6 +83,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm - job: hip_tests_testing timeoutInMinutes: 240 @@ -113,19 +115,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: Symlink rocm_agent_enumerator inputs: @@ -145,3 +139,9 @@ jobs: inputs: targetType: inline script: sudo rm -rf /opt/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true diff --git a/.azuredevops/components/hipBLAS-common.yml b/.azuredevops/components/hipBLAS-common.yml index 4f8ee45fc..e694a48b8 100644 --- a/.azuredevops/components/hipBLAS-common.yml +++ b/.azuredevops/components/hipBLAS-common.yml @@ -29,8 +29,7 @@ jobs: - name: ROCM_PATH value: $(Agent.BuildDirectory)/rocm - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -41,18 +40,10 @@ jobs: - 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/dependencies-rocm.yml - parameters: - dependencyList: ${{ parameters.rocmDependencies }} - dependencySource: staging -# manual build case: triggered by ROCm/ROCm repo - - ${{ if ne(parameters.checkoutRef, '') }}: - - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml - parameters: - dependencyList: ${{ parameters.rocmDependencies }} - dependencySource: tag-builds + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml + parameters: + checkoutRef: ${{ parameters.checkoutRef }} + dependencyList: ${{ parameters.rocmDependencies }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -61,3 +52,9 @@ jobs: -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + extraEnvVars: + - ROCM_PATH:::/home/user/workspace/rocm diff --git a/.azuredevops/components/hipBLAS.yml b/.azuredevops/components/hipBLAS.yml index 6b57a2225..1bb52ee21 100644 --- a/.azuredevops/components/hipBLAS.yml +++ b/.azuredevops/components/hipBLAS.yml @@ -75,14 +75,9 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aocl.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -101,6 +96,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + installAOCL: true + gpuTarget: $(JOB_GPU_TARGET) - job: hipBLAS_testing dependsOn: hipBLAS @@ -126,19 +128,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -146,3 +140,9 @@ jobs: testExecutable: $(Agent.BuildDirectory)/rocm/bin/hipblas-test testParameters: '--yaml hipblas_smoke.yaml --gtest_output=xml:./test_output.xml --gtest_color=yes' testDir: '$(Agent.BuildDirectory)/rocm/bin' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipBLASLt.yml b/.azuredevops/components/hipBLASLt.yml index 97ff750ca..30513f217 100644 --- a/.azuredevops/components/hipBLASLt.yml +++ b/.azuredevops/components/hipBLASLt.yml @@ -22,7 +22,8 @@ parameters: type: object default: - joblib - - packaging + - packaging>=22.0 + - --upgrade - name: rocmDependencies type: object default: @@ -87,14 +88,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - script: sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm displayName: ROCm symbolic link # Build and install gtest, lapack, hipBLAS-common @@ -137,7 +133,6 @@ jobs: -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) -DTensile_LOGIC= -DTensile_CPU_THREADS= - -DTensile_CODE_OBJECT_VERSION=default -DTensile_LIBRARY_FORMAT=msgpack -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" -DBUILD_CLIENTS_TESTS=ON @@ -148,7 +143,22 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) - + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) + extraPaths: /home/user/workspace/rocm/llvm/bin:/home/user/workspace/rocm/bin + installLatestCMake: true + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm + - TENSILE_ROCM_ASSEMBLER_PATH:::/home/user/workspace/rocm/llvm/bin/amdclang + - CMAKE_CXX_COMPILER:::/home/user/workspace/rocm/bin/hipcc + - TENSILE_ROCM_OFFLOAD_BUNDLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang-offload-bundler + - TENSILE_ROCM_PATH:::/home/user/workspace/rocm/bin/hipcc + extraCopyDirectories: + - deps - job: hipBLASLt_testing dependsOn: hipBLASLt @@ -174,19 +184,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -194,3 +196,9 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './hipblaslt-test' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes --gtest_filter=*pre_checkin*' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipCUB.yml b/.azuredevops/components/hipCUB.yml index a1f83f56f..1f86875c4 100644 --- a/.azuredevops/components/hipCUB.yml +++ b/.azuredevops/components/hipCUB.yml @@ -53,14 +53,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -76,6 +71,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: hipCUB_testing dependsOn: hipCUB @@ -100,21 +100,18 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: hipCUB testDir: '$(Agent.BuildDirectory)/rocm/bin/hipcub' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipFFT.yml b/.azuredevops/components/hipFFT.yml index 783f1c962..d66128cee 100644 --- a/.azuredevops/components/hipFFT.yml +++ b/.azuredevops/components/hipFFT.yml @@ -47,8 +47,7 @@ jobs: - template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -65,14 +64,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -94,6 +88,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: hipFFT_testing dependsOn: hipFFT @@ -118,19 +117,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -138,3 +129,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './hipfft-test' testParameters: '--test_prob 0.002 --gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipRAND.yml b/.azuredevops/components/hipRAND.yml index 8b86347b8..65c17140e 100644 --- a/.azuredevops/components/hipRAND.yml +++ b/.azuredevops/components/hipRAND.yml @@ -12,6 +12,7 @@ parameters: - ninja-build - googletest - git + - python3-pip - name: rocmDependencies type: object default: @@ -37,8 +38,7 @@ jobs: - template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -55,14 +55,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -80,6 +75,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm - job: hipRAND_testing dependsOn: hipRAND @@ -104,21 +106,18 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: hipRAND testDir: '$(Agent.BuildDirectory)/rocm/bin/hipRAND' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipSOLVER.yml b/.azuredevops/components/hipSOLVER.yml index 20b9a0139..f3a7cf2e5 100644 --- a/.azuredevops/components/hipSOLVER.yml +++ b/.azuredevops/components/hipSOLVER.yml @@ -15,6 +15,7 @@ parameters: - git - googletest - libgtest-dev + - python3-pip - name: rocmDependencies type: object default: @@ -49,8 +50,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -67,14 +67,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # build external gtest and lapack - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: @@ -101,6 +96,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraCopyDirectories: + - deps-install - job: hipSOLVER_testing dependsOn: hipSOLVER @@ -125,19 +127,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -145,3 +139,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './hipsolver-test' testParameters: '--gtest_filter="*checkin*" --gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipSPARSE.yml b/.azuredevops/components/hipSPARSE.yml index e867c0289..adfbb1bab 100644 --- a/.azuredevops/components/hipSPARSE.yml +++ b/.azuredevops/components/hipSPARSE.yml @@ -16,6 +16,7 @@ parameters: - git - gfortran - libgtest-dev + - python3-pip - name: rocmDependencies type: object default: @@ -44,8 +45,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -62,14 +62,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -96,6 +91,12 @@ jobs: parameters: artifactName: testMatrices gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) - job: hipSPARSE_testing dependsOn: hipSPARSE @@ -120,19 +121,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -140,3 +133,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './hipsparse-test' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipSPARSELt.yml b/.azuredevops/components/hipSPARSELt.yml index 59c2b4b3d..556751289 100644 --- a/.azuredevops/components/hipSPARSELt.yml +++ b/.azuredevops/components/hipSPARSELt.yml @@ -31,6 +31,7 @@ parameters: - rocminfo - rocprofiler-register - ROCR-Runtime + - roctracer - name: rocmTestDependencies type: object default: @@ -43,6 +44,7 @@ parameters: - rocminfo - rocprofiler-register - ROCR-Runtime + - roctracer jobs: - job: hipSPARSELt @@ -78,14 +80,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # Build and install gtest and lapack # $(Pipeline.Workspace)/deps is a temporary folder for the build process # $(Pipeline.Workspace)/s/deps is part of the hipSPARSELt repo @@ -111,7 +108,6 @@ jobs: -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) -DTensile_LOGIC= -DTensile_CPU_THREADS= - -DTensile_CODE_OBJECT_VERSION=default -DTensile_LIBRARY_FORMAT=msgpack -DCMAKE_PREFIX_PATH="$(Agent.BuildDirectory)/rocm" -DROCM_PATH=$(Agent.BuildDirectory)/rocm @@ -123,6 +119,21 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) + extraCopyDirectories: + - deps + extraPaths: /home/user/workspace/rocm/llvm/bin:/home/user/workspace/rocm/bin + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm + - TENSILE_ROCM_ASSEMBLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang + - CMAKE_CXX_COMPILER:::/home/user/workspace/rocm/llvm/bin/hipcc + - TENSILE_ROCM_OFFLOAD_BUNDLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang-offload-bundler + installLatestCMake: true - job: hipSPARSELt_testing dependsOn: hipSPARSELt @@ -148,12 +159,9 @@ jobs: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -161,3 +169,9 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './hipsparselt-test' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes --gtest_filter=*pre_checkin*' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipTensor.yml b/.azuredevops/components/hipTensor.yml index 52bd5ba05..ac33530d5 100644 --- a/.azuredevops/components/hipTensor.yml +++ b/.azuredevops/components/hipTensor.yml @@ -52,14 +52,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -76,6 +71,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: hipTensor_testing timeoutInMinutes: 90 @@ -101,22 +101,19 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: hipTensor testDir: '$(Agent.BuildDirectory)/rocm/bin/hiptensor' testParameters: '-E ".*-extended" -VV --output-on-failure --force-new-ctest-process --output-junit test_output.xml' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/hipfort.yml b/.azuredevops/components/hipfort.yml index 387f2b280..87b521fce 100644 --- a/.azuredevops/components/hipfort.yml +++ b/.azuredevops/components/hipfort.yml @@ -62,14 +62,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -92,6 +87,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + installLatestCMake: true - job: hipfort_testing dependsOn: hipfort @@ -116,19 +117,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} @@ -147,3 +140,9 @@ jobs: targetType: inline script: PATH=$(Agent.BuildDirectory)/rocm/bin:$PATH make run_all workingDirectory: $(Build.SourcesDirectory)/test + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true diff --git a/.azuredevops/components/llvm-project.yml b/.azuredevops/components/llvm-project.yml index 9331bc3c2..2b2a63b86 100644 --- a/.azuredevops/components/llvm-project.yml +++ b/.azuredevops/components/llvm-project.yml @@ -42,14 +42,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} skipLlvmSymlink: true - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: componentName: rocm-llvm @@ -144,3 +139,11 @@ jobs: cmakeBuildDir: 'amd/hipcc/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: combined + extraEnvVars: + - HIP_DEVICE_LIB_PATH:::/home/user/workspace/bin/amdgcn/bitcode + - HIP_PATH:::/home/user/workspace/rocm diff --git a/.azuredevops/components/omnitrace.yml b/.azuredevops/components/omnitrace.yml index 1240e8a5c..1a8bd3892 100644 --- a/.azuredevops/components/omnitrace.yml +++ b/.azuredevops/components/omnitrace.yml @@ -75,14 +75,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: ROCm symbolic link inputs: diff --git a/.azuredevops/components/rccl.yml b/.azuredevops/components/rccl.yml index 8f820ba24..58e19a37d 100644 --- a/.azuredevops/components/rccl.yml +++ b/.azuredevops/components/rccl.yml @@ -8,29 +8,31 @@ parameters: - name: aptPackages type: object default: - - python3-pip - cmake - - libboost-program-options-dev - - googletest - - libfftw3-dev - git - - ninja-build - - libstdc++-12-dev + - googletest + - libboost-program-options-dev + - libdrm-dev + - libfftw3-dev - libnuma-dev + - libstdc++-12-dev + - ninja-build + - python3-pip - name: rocmDependencies type: object default: - - rocm-cmake - - llvm-project - - ROCR-Runtime - - clr - - rocminfo - - rocm_smi_lib - - rocprofiler-register - - rocm-core - - HIPIFY - aomp - aomp-extras + - clr + - HIPIFY + - llvm-project + - rocm-cmake + - rocm-core + - rocm_smi_lib + - rocminfo + - rocprofiler-register + - ROCR-Runtime + - roctracer - name: rocmTestDependencies type: object default: @@ -45,6 +47,7 @@ parameters: - rocminfo - rocprofiler-register - ROCR-Runtime + - roctracer jobs: - job: rccl @@ -72,14 +75,9 @@ jobs: submoduleBehaviour: recursive - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - script: chmod +x $(Agent.BuildDirectory)/rocm/bin/hipify-perl - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: @@ -99,6 +97,14 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm + installLatestCMake: true - job: rccl_testing timeoutInMinutes: 120 @@ -124,19 +130,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -144,3 +142,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './rccl-UnitTests' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rdc.yml b/.azuredevops/components/rdc.yml index 96c8299da..577cedbd4 100644 --- a/.azuredevops/components/rdc.yml +++ b/.azuredevops/components/rdc.yml @@ -37,6 +37,7 @@ parameters: - ROCmValidationSuite - rocprofiler - rocprofiler-register + - rocprofiler-sdk - ROCR-Runtime - name: rocmTestDependencies type: object @@ -74,14 +75,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # Build grpc - task: Bash@3 displayName: 'git clone grpc' @@ -116,6 +112,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: rdc_testing dependsOn: rdc @@ -140,19 +141,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: Setup test environment inputs: @@ -174,3 +167,9 @@ jobs: --batch_mode --start_rdcd --unauth_comm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + extraPaths: /home/user/workspace/rocm/bin diff --git a/.azuredevops/components/rocAL.yml b/.azuredevops/components/rocAL.yml index abf7c0f4a..538fbd111 100644 --- a/.azuredevops/components/rocAL.yml +++ b/.azuredevops/components/rocAL.yml @@ -21,6 +21,8 @@ parameters: - libavcodec-dev - libavformat-dev - libavutil-dev + - libdlpack-dev + - libsndfile1-dev - libswscale-dev - libturbojpeg-dev - libjpeg-turbo-official=3.0.2-20240124 @@ -36,15 +38,15 @@ parameters: - name: rocmDependencies type: object default: - - rocm-cmake - - llvm-project - - ROCR-Runtime - - clr - - rocDecode - - half - - rpp - - MIVisionX - aomp + - clr + - half + - llvm-project + - MIVisionX + - rocDecode + - rocm-cmake + - ROCR-Runtime + - rpp - name: rocmTestDependencies type: object default: @@ -53,6 +55,7 @@ parameters: - half - llvm-project - MIVisionX + - rocDecode - rocminfo - rocprofiler-register - ROCR-Runtime @@ -63,8 +66,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -134,14 +136,9 @@ jobs: workingDirectory: '$(Build.SourcesDirectory)/rapidjson/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -149,6 +146,7 @@ jobs: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;/opt/libjpeg-turbo -DCMAKE_INSTALL_PREFIX_PYTHON=$Python3_STDARCH -DCMAKE_BUILD_TYPE=Release + -DGPU_TARGETS=$(JOB_GPU_TARGET) -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml parameters: @@ -156,6 +154,15 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + registerJPEGPackages: true + gpuTarget: $(JOB_GPU_TARGET) + extraCopyDirectories: + - /opt/libjpeg-turbo - job: rocAL_testing dependsOn: rocAL @@ -167,7 +174,9 @@ jobs: value: $(Agent.BuildDirectory)/rocm - name: CMAKE_INCLUDE_PATH value: $(Agent.BuildDirectory)/rocm/include/rocal - pool: $(JOB_TEST_POOL) + pool: + name: $(JOB_TEST_POOL) + demands: firstRenderDeviceAccess workspace: clean: all strategy: @@ -194,19 +203,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: Link libjpeg-turbo inputs: @@ -235,3 +236,13 @@ jobs: script: | sudo rm /etc/ld.so.conf.d/libjpeg-turbo.conf sudo ldconfig -v + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + registerJPEGPackages: true + environment: test + gpuTarget: $(JOB_GPU_TARGET) + extraCopyDirectories: + - /opt/libjpeg-turbo +# docker image will be missing the ldconfig to libjpeg-turbo diff --git a/.azuredevops/components/rocALUTION.yml b/.azuredevops/components/rocALUTION.yml index 38a4caa08..b450f74c1 100644 --- a/.azuredevops/components/rocALUTION.yml +++ b/.azuredevops/components/rocALUTION.yml @@ -15,6 +15,7 @@ parameters: - git - mpich - ninja-build + - python3-pip - name: rocmDependencies type: object default: @@ -52,8 +53,7 @@ jobs: - template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -70,14 +70,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -96,6 +91,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm - job: rocALUTION_testing dependsOn: rocALUTION @@ -120,19 +122,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -140,3 +134,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './rocalution-test' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocBLAS.yml b/.azuredevops/components/rocBLAS.yml index 372df178a..a490681e9 100644 --- a/.azuredevops/components/rocBLAS.yml +++ b/.azuredevops/components/rocBLAS.yml @@ -87,23 +87,18 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aocl.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake - -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm;$(Pipeline.Workspace)/deps-install + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm/llvm;$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc -DCMAKE_C_COMPILER=$(Agent.BuildDirectory)/rocm/bin/hipcc - -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) + -DGPU_TARGETS=$(JOB_GPU_TARGET) -DTensile_CODE_OBJECT_VERSION=default -DTensile_LOGIC=asm_full -DTensile_SEPARATE_ARCHITECTURES=ON @@ -120,6 +115,18 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + installAOCL: true + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm + - TENSILE_ROCM_ASSEMBLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang + - CMAKE_CXX_COMPILER:::/home/user/workspace/rocm/bin/hipcc + - TENSILE_ROCM_OFFLOAD_BUNDLER_PATH:::/home/user/workspace/rocm/llvm/bin/clang-offload-bundler - job: rocBLAS_testing dependsOn: rocBLAS @@ -145,19 +152,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -165,3 +164,9 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './rocblas-test' testParameters: '--yaml rocblas_smoke.yaml --gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocDecode.yml b/.azuredevops/components/rocDecode.yml index e3ff62e5f..79ad12528 100644 --- a/.azuredevops/components/rocDecode.yml +++ b/.azuredevops/components/rocDecode.yml @@ -20,6 +20,7 @@ parameters: - libva-amdgpu-dev - mesa-amdgpu-va-drivers - libdrm-dev + - python3-pip - name: rocmDependencies type: object default: @@ -44,8 +45,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -70,14 +70,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -87,6 +81,11 @@ jobs: -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + registerROCmPackages: true - job: rocDecode_testing dependsOn: rocDecode @@ -123,19 +122,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # anything in /opt may be persistent across runs # so we need to remove the symlink if it already exists - script: | @@ -151,3 +142,9 @@ jobs: testDir: 'rocDecode-tests' - script: sudo rm /opt/rocm condition: always() + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + registerROCmPackages: true + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocFFT.yml b/.azuredevops/components/rocFFT.yml index 5876e577e..ce439d5e5 100644 --- a/.azuredevops/components/rocFFT.yml +++ b/.azuredevops/components/rocFFT.yml @@ -65,14 +65,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -93,6 +88,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm - job: rocFFT_testing dependsOn: rocFFT @@ -117,19 +119,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -137,3 +131,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './rocfft-test' testParameters: '--test_prob 0.004 --gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocJPEG.yml b/.azuredevops/components/rocJPEG.yml index e8babc416..f80238908 100644 --- a/.azuredevops/components/rocJPEG.yml +++ b/.azuredevops/components/rocJPEG.yml @@ -15,6 +15,7 @@ parameters: - mesa-amdgpu-va-drivers - ninja-build - pkg-config + - python3-pip - name: rocmDependencies type: object default: @@ -39,10 +40,13 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all + strategy: + matrix: + gfx942: + JOB_GPU_TARGET: gfx942 steps: # Since mesa-amdgpu-multimedia-devel is not directly available from apt, register it - task: Bash@3 @@ -65,23 +69,25 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, 'develop') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, 'develop') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DROCM_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_BUILD_TYPE=Release + -DGPU_TARGETS=$(JOB_GPU_TARGET) -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + registerROCmPackages: true - job: rocJPEG_testing dependsOn: rocJPEG @@ -118,19 +124,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, 'develop') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, 'develop') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, 'develop') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, 'develop') }}: - dependencySource: tag-builds # anything in /opt may be persistent across runs # so we need to remove the symlink if it already exists - script: | @@ -146,3 +144,10 @@ jobs: testDir: 'rocJPEG-tests' - script: sudo rm /opt/rocm condition: always() + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + registerROCmPackages: true + optSymLink: true diff --git a/.azuredevops/components/rocMLIR.yml b/.azuredevops/components/rocMLIR.yml index d926ccb61..ae6cce239 100644 --- a/.azuredevops/components/rocMLIR.yml +++ b/.azuredevops/components/rocMLIR.yml @@ -47,13 +47,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -65,6 +60,11 @@ jobs: -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} # compiling and running test on the test system together - job: rocMLIR_testing @@ -91,21 +91,11 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: ROCm symbolic link inputs: @@ -131,3 +121,9 @@ jobs: testDir: $(Build.SourcesDirectory)/build testExecutable: ninja testParameters: check-rocmlir + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocPRIM.yml b/.azuredevops/components/rocPRIM.yml index e02c75d6d..4926ed8ed 100644 --- a/.azuredevops/components/rocPRIM.yml +++ b/.azuredevops/components/rocPRIM.yml @@ -52,14 +52,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -75,6 +70,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: rocPRIM_testing dependsOn: rocPRIM @@ -99,21 +99,18 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: rocPRIM testDir: '$(Agent.BuildDirectory)/rocm/bin/rocprim' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocPyDecode.yml b/.azuredevops/components/rocPyDecode.yml index 9f466c3b1..68d43ab9d 100644 --- a/.azuredevops/components/rocPyDecode.yml +++ b/.azuredevops/components/rocPyDecode.yml @@ -41,8 +41,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -65,14 +64,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: 'ROCm symbolic link' inputs: @@ -94,7 +88,7 @@ jobs: -DROCM_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(PYTHON_USER_SITE)/pybind11;$(PYTHON_DIST_PACKAGES)/pybind11;$(PYBIND11_PATH) -DCMAKE_BUILD_TYPE=Release - -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) + -DGPU_TARGETS=$(JOB_GPU_TARGET) -DCMAKE_INSTALL_PREFIX_PYTHON=$(Build.BinariesDirectory) -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml @@ -124,6 +118,23 @@ jobs: retryCountOnTaskFailure: 3 inputs: targetPath: $(Build.ArtifactStagingDirectory) + - task: Bash@3 + displayName: Save pipeline artifact file names + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + whlFile=$(find "$(Build.ArtifactStagingDirectory)" -type f -name "*.whl" | head -n 1) + if [ -n "$whlFile" ]; then + echo $(basename "$whlFile") >> pipelineArtifacts.txt + fi + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true - job: rocPyDecode_testing dependsOn: rocPyDecode @@ -172,20 +183,12 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) setupHIPLibrarySymlinks: true - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: pip install inputs: @@ -211,7 +214,7 @@ jobs: -DROCM_PATH=$(Agent.BuildDirectory)/rocm -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm;$(PYTHON_USER_SITE)/pybind11;$(PYTHON_DIST_PACKAGES)/pybind11;$(PYBIND11_PATH) -DCMAKE_BUILD_TYPE=Release - -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) + -DGPU_TARGETS=$(JOB_GPU_TARGET) .. - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml @@ -227,3 +230,11 @@ jobs: script: | pip uninstall -y rocPyDecode pip uninstall -y hip-python + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + pythonEnvVars: true + # note that this docker won't have hip-python installed via pip diff --git a/.azuredevops/components/rocRAND.yml b/.azuredevops/components/rocRAND.yml index e0b1d37ea..b099c5cf0 100644 --- a/.azuredevops/components/rocRAND.yml +++ b/.azuredevops/components/rocRAND.yml @@ -9,10 +9,11 @@ parameters: type: object default: - cmake - - ninja-build + - git - googletest - libgtest-dev - - git + - ninja-build + - python3-pip - name: rocmDependencies type: object default: @@ -37,8 +38,7 @@ jobs: - template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -55,14 +55,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -77,6 +72,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm - job: rocRAND_testing dependsOn: rocRAND @@ -101,21 +103,18 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: rocRAND testDir: '$(Agent.BuildDirectory)/rocm/bin/rocRAND' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocSOLVER.yml b/.azuredevops/components/rocSOLVER.yml index a9787ad4c..3714f12ae 100644 --- a/.azuredevops/components/rocSOLVER.yml +++ b/.azuredevops/components/rocSOLVER.yml @@ -74,14 +74,9 @@ jobs: workingDirectory: '$(Build.SourcesDirectory)' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: componentName: lapack @@ -111,6 +106,13 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraCopyDirectories: + - deps-install - job: rocSOLVER_testing dependsOn: rocSOLVER @@ -135,19 +137,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -155,3 +149,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './rocsolver-test' testParameters: '--gtest_filter="*checkin*" --gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocSPARSE.yml b/.azuredevops/components/rocSPARSE.yml index 21915a8fb..5a06780ce 100644 --- a/.azuredevops/components/rocSPARSE.yml +++ b/.azuredevops/components/rocSPARSE.yml @@ -66,14 +66,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -105,6 +100,13 @@ jobs: parameters: artifactName: testMatrices gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm - job: rocSPARSE_testing timeoutInMinutes: 90 @@ -130,19 +132,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -150,4 +144,8 @@ jobs: testDir: '$(Agent.BuildDirectory)/rocm/bin' testExecutable: './rocsparse-test' testParameters: '--gtest_filter="*quick*" --gtest_output=xml:./test_output.xml --gtest_color=yes' - + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocThrust.yml b/.azuredevops/components/rocThrust.yml index a1d063c51..8ab09ceed 100644 --- a/.azuredevops/components/rocThrust.yml +++ b/.azuredevops/components/rocThrust.yml @@ -57,14 +57,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -80,6 +75,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: rocThrust_testing dependsOn: rocThrust @@ -104,21 +104,18 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: rocThrust testDir: '$(Agent.BuildDirectory)/rocm/bin/rocthrust' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocWMMA.yml b/.azuredevops/components/rocWMMA.yml index f9657720e..69622eb5e 100644 --- a/.azuredevops/components/rocWMMA.yml +++ b/.azuredevops/components/rocWMMA.yml @@ -12,6 +12,7 @@ parameters: - cmake - ninja-build - libboost-program-options-dev + - libdrm-dev - libgtest-dev - googletest - libfftw3-dev @@ -66,14 +67,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -82,7 +78,7 @@ jobs: -DCMAKE_BUILD_TYPE=Release -DROCWMMA_BUILD_TESTS=ON -DROCWMMA_BUILD_SAMPLES=OFF - -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) + -DGPU_TARGETS=$(JOB_GPU_TARGET) -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -GNinja # gfx1030 not supported in documentation @@ -92,6 +88,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: rocWMMA_testing timeoutInMinutes: 90 @@ -117,21 +118,18 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: componentName: rocWMMA testDir: '$(Agent.BuildDirectory)/rocm/bin/rocwmma' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocm-cmake.yml b/.azuredevops/components/rocm-cmake.yml index ef9cc8b2a..1c17abe2d 100644 --- a/.azuredevops/components/rocm-cmake.yml +++ b/.azuredevops/components/rocm-cmake.yml @@ -8,9 +8,11 @@ parameters: - name: aptPackages type: object default: + - cmake - doxygen - doxygen-doc - ninja-build + - python3-pip - python3-sphinx - name: pipModules type: object @@ -23,8 +25,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -49,3 +50,10 @@ jobs: componentName: rocm-cmake - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: combined + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocm-core.yml b/.azuredevops/components/rocm-core.yml index 49bf11d08..a5f5a1afc 100644 --- a/.azuredevops/components/rocm-core.yml +++ b/.azuredevops/components/rocm-core.yml @@ -5,17 +5,24 @@ parameters: - name: checkoutRef type: string default: '' +- name: aptPackages + type: object + default: + - cmake + - python3-pip jobs: - job: rocm_core variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: @@ -32,3 +39,7 @@ jobs: -DROCM_VERSION="$(next-release)" - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} diff --git a/.azuredevops/components/rocm-examples.yml b/.azuredevops/components/rocm-examples.yml index 7c7d49e4b..01c240459 100644 --- a/.azuredevops/components/rocm-examples.yml +++ b/.azuredevops/components/rocm-examples.yml @@ -85,14 +85,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: # https://github.com/ROCm/HIP/issues/2203 @@ -116,6 +111,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: rocm_examples_testing dependsOn: rocm_examples @@ -142,19 +142,11 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: # https://github.com/ROCm/HIP/issues/2203 @@ -170,3 +162,8 @@ jobs: parameters: componentName: rocm-examples testDir: $(Build.SourcesDirectory)/build + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocm_bandwidth_test.yml b/.azuredevops/components/rocm_bandwidth_test.yml index a3c837990..4608897e3 100644 --- a/.azuredevops/components/rocm_bandwidth_test.yml +++ b/.azuredevops/components/rocm_bandwidth_test.yml @@ -40,8 +40,7 @@ jobs: value: $(Agent.BuildDirectory)/rocm - name: ROCR_LIB_DIR value: $(Agent.BuildDirectory)/rocm - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -55,13 +54,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -71,6 +65,14 @@ jobs: -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + extraEnvVars: + - ROCR_INC_DIR:::/home/user/workspace/rocm + - ROCR_LIB_DIR:::/home/user/workspace/rocm - job: rocm_bandwidth_test_testing dependsOn: rocm_bandwidth_test @@ -95,12 +97,9 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -109,3 +108,9 @@ jobs: testExecutable: './rocm/bin/rocm-bandwidth-test' testParameters: '' testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocm_smi_lib.yml b/.azuredevops/components/rocm_smi_lib.yml index a2a9bc465..1ef49faaa 100644 --- a/.azuredevops/components/rocm_smi_lib.yml +++ b/.azuredevops/components/rocm_smi_lib.yml @@ -5,17 +5,25 @@ parameters: - name: checkoutRef type: string default: '' +- name: aptPackages + type: object + default: + - cmake + - libdrm-dev + - python3-pip jobs: - job: rocm_smi_lib variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: @@ -27,6 +35,11 @@ jobs: -DROCM_DEP_ROCMCORE=ON - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: rocm_smi_lib_testing dependsOn: rocm_smi_lib @@ -54,3 +67,8 @@ jobs: testDir: '$(Agent.BuildDirectory)' testExecutable: './rocm/share/rocm_smi/rsmitst_tests/rsmitst' testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocminfo.yml b/.azuredevops/components/rocminfo.yml index 7cdef6b5a..46460c1c2 100644 --- a/.azuredevops/components/rocminfo.yml +++ b/.azuredevops/components/rocminfo.yml @@ -5,6 +5,13 @@ parameters: - name: checkoutRef type: string default: '' +- name: aptPackages + type: object + default: + - cmake + - libdrm-amdgpu-dev + - libdrm-dev + - python3-pip - name: rocmDependencies type: object default: @@ -21,25 +28,23 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + registerRadeon: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} skipLlvmSymlink: true - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -47,6 +52,10 @@ jobs: -DROCRTST_BLD_TYPE=release - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} - job: rocminfo_testing dependsOn: rocminfo @@ -63,16 +72,16 @@ jobs: JOB_GPU_TARGET: gfx942 JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }} steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml parameters: runRocminfo: false @@ -90,3 +99,8 @@ jobs: testExecutable: './rocm/bin/rocm_agent_enumerator' testParameters: '' testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocprofiler-compute.yml b/.azuredevops/components/rocprofiler-compute.yml index 03e7c7488..f6623d513 100644 --- a/.azuredevops/components/rocprofiler-compute.yml +++ b/.azuredevops/components/rocprofiler-compute.yml @@ -52,8 +52,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -70,21 +69,11 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml parameters: @@ -92,6 +81,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) - job: rocprofiler_compute_testing timeoutInMinutes: 120 @@ -129,19 +124,11 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: Add ROCm binaries to PATH inputs: @@ -181,3 +168,9 @@ jobs: inputs: targetType: inline script: echo "##vso[task.setvariable variable=PATH]$(echo $PATH | sed -e 's;:$(Agent.BuildDirectory)/rocm/llvm/bin;;' -e 's;^/;;' -e 's;/$;;')" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocprofiler-register.yml b/.azuredevops/components/rocprofiler-register.yml index b520dd25d..655a6c089 100644 --- a/.azuredevops/components/rocprofiler-register.yml +++ b/.azuredevops/components/rocprofiler-register.yml @@ -5,17 +5,24 @@ parameters: - name: checkoutRef type: string default: '' +- name: aptPackages + type: object + default: + - cmake + - python3-pip jobs: - job: rocprofiler_register variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: @@ -36,3 +43,8 @@ jobs: testDir: 'tests/build' - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: combined diff --git a/.azuredevops/components/rocprofiler-sdk.yml b/.azuredevops/components/rocprofiler-sdk.yml index 5d386a90e..3ce310048 100644 --- a/.azuredevops/components/rocprofiler-sdk.yml +++ b/.azuredevops/components/rocprofiler-sdk.yml @@ -8,11 +8,13 @@ parameters: - name: aptPackages type: object default: - - cmake - - python3-pip + - build-essential + - libdrm-amdgpu-dev - libdrm-dev - libdw-dev - libelf-dev + - pkg-config + - python3-pip - name: pipModules type: object default: @@ -27,7 +29,7 @@ parameters: - pandas - perfetto - pycobertura - - pytest + - pytest>=6.2.5 - pyyaml - name: rocmDependencies type: object @@ -40,16 +42,13 @@ parameters: - rocminfo - ROCR-Runtime - rocprofiler-register - - roctracer - - aomp jobs: -- job: rocprofilersdk +- job: rocprofiler_sdk variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -61,37 +60,98 @@ jobs: parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} + registerRadeon: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds + - task: Bash@3 + displayName: Add Python site-packages binaries to path + inputs: + targetType: inline + script: | + USER_BASE=$(python3 -m site --user-base) + echo "##vso[task.prependpath]$USER_BASE/bin" - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DROCPROFILER_BUILD_TESTS=ON - -DROCPROFILER_BUILD_SAMPLES=OFF - -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) - multithreadFlag: -- -j2 + -DROCPROFILER_BUILD_SAMPLES=ON + -DROCPROFILER_BUILD_RELEASE=ON + -DGPU_TARGETS=$(JOB_GPU_TARGET) + multithreadFlag: -- -j4 - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) + +- job: rocprofiler_sdk_testing + dependsOn: rocprofiler_sdk + condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName']))) + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: $(JOB_TEST_POOL) + workspace: + clean: all + strategy: + matrix: + gfx942: + JOB_GPU_TARGET: gfx942 + JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }} + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + registerRadeon: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml + parameters: + checkoutRef: ${{ parameters.checkoutRef }} + dependencyList: ${{ parameters.rocmDependencies }} + gpuTarget: $(JOB_GPU_TARGET) + - task: Bash@3 + displayName: Add Python site-packages binaries to path + inputs: + targetType: inline + script: | + USER_BASE=$(python3 -m site --user-base) + echo "##vso[task.prependpath]$USER_BASE/bin" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DROCPROFILER_BUILD_TESTS=ON + -DROCPROFILER_BUILD_SAMPLES=ON + -DROCPROFILER_BUILD_RELEASE=ON + -DGPU_TARGETS=$(JOB_GPU_TARGET) + multithreadFlag: -- -j16 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml + parameters: + componentName: rocprofiler-sdk + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rocprofiler-systems.yml b/.azuredevops/components/rocprofiler-systems.yml index 02a388b15..245761c0f 100644 --- a/.azuredevops/components/rocprofiler-systems.yml +++ b/.azuredevops/components/rocprofiler-systems.yml @@ -17,7 +17,12 @@ parameters: - clang - cmake - environment-modules + - ffmpeg - g++-12 + - libavcodec-dev + - libavformat-dev + - libavutil-dev + - libdrm-amdgpu-dev - libdrm-dev - libfabric-dev - libiberty-dev @@ -27,8 +32,9 @@ parameters: - libopenmpi-dev - m4 - openmpi-bin - - software-properties-common + - pkg-config - python3-pip + - software-properties-common - texinfo - zlib1g-dev - name: pipModules @@ -44,13 +50,12 @@ parameters: - clr - llvm-project - rccl + - rocDecode - rocm-core - rocm_smi_lib - rocminfo - ROCR-Runtime - - rocprofiler - rocprofiler-register - - roctracer - rocprofiler-sdk jobs: @@ -70,26 +75,17 @@ jobs: parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} + registerRadeon: true - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: ROCm symbolic link inputs: @@ -123,7 +119,91 @@ jobs: -DDYNINST_BUILD_BOOST=ON -DROCPROFSYS_USE_PAPI=ON -DROCPROFSYS_USE_MPI=ON - -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) + -DGPU_TARGETS=$(JOB_GPU_TARGET) + multithreadFlag: -- -j32 + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml + parameters: + gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + parameters: + gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) + registerROCmPackages: true + optSymLink: true + extraPaths: /home/user/workspace/rocm/bin:/home/user/workspace/rocm/llvm/bin + +- job: rocprofiler_systems_testing + dependsOn: rocprofiler_systems + condition: and(succeeded(), eq(variables.ENABLE_GFX942_TESTS, 'true'), not(containsValue(split(variables.DISABLED_GFX942_TESTS, ','), variables['Build.DefinitionName']))) + timeoutInMinutes: 180 + variables: + - group: common + - template: /.azuredevops/variables-global.yml + pool: + name: $(JOB_TEST_POOL) + demands: firstRenderDeviceAccess + workspace: + clean: all + strategy: + matrix: + gfx942: + JOB_GPU_TARGET: gfx942 + JOB_TEST_POOL: ${{ variables.GFX942_TEST_POOL }} + steps: + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-other.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + registerRadeon: true + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/checkout.yml + parameters: + checkoutRepo: ${{ parameters.checkoutRepo }} + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml + parameters: + checkoutRef: ${{ parameters.checkoutRef }} + dependencyList: ${{ parameters.rocmDependencies }} + gpuTarget: $(JOB_GPU_TARGET) + - task: Bash@3 + displayName: ROCm symbolic link + inputs: + targetType: inline + script: | + sudo rm -rf /opt/rocm + sudo ln -s $(Agent.BuildDirectory)/rocm /opt/rocm + - task: Bash@3 + displayName: Add ROCm binaries to PATH + inputs: + targetType: inline + script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/bin" + - task: Bash@3 + displayName: Add ROCm compilers to PATH + inputs: + targetType: inline + script: echo "##vso[task.prependpath]$(Agent.BuildDirectory)/rocm/llvm/bin" + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml + parameters: +# build flags reference: https://rocm.docs.amd.com/projects/omnitrace/en/latest/install/install.html + extraBuildFlags: >- + -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm + -DROCM_PATH=$(Agent.BuildDirectory)/rocm + -DROCPROFSYS_BUILD_TESTING=ON + -DROCPROFSYS_BUILD_DYNINST=ON + -DROCPROFSYS_BUILD_LIBUNWIND=ON + -DROCPROFSYS_DISABLE_EXAMPLES="openmp-target" + -DDYNINST_BUILD_TBB=ON + -DDYNINST_BUILD_ELFUTILS=ON + -DDYNINST_BUILD_LIBIBERTY=ON + -DDYNINST_BUILD_BOOST=ON + -DROCPROFSYS_USE_PAPI=ON + -DROCPROFSYS_USE_MPI=ON + -DGPU_TARGETS=$(JOB_GPU_TARGET) multithreadFlag: -- -j32 - task: Bash@3 displayName: Set up rocprofiler-systems env @@ -152,3 +232,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + registerROCmPackages: true + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true + extraPaths: /home/user/workspace/rocm/bin:/home/user/workspace/rocm/llvm/bin diff --git a/.azuredevops/components/rocprofiler.yml b/.azuredevops/components/rocprofiler.yml index 352c01124..9446de597 100644 --- a/.azuredevops/components/rocprofiler.yml +++ b/.azuredevops/components/rocprofiler.yml @@ -67,21 +67,11 @@ jobs: parameters: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -98,6 +88,15 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) + extraEnvVars: + - HIP_ROCCLR_HOME:::/home/user/workspace/rocm + - ROCM_PATH:::/home/user/workspace/rocm - job: rocprofiler_testing dependsOn: rocprofiler @@ -122,19 +121,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - task: Bash@3 displayName: Setup test environment inputs: @@ -156,3 +147,10 @@ jobs: testExecutable: LD_LIBRARY_PATH="$(Agent.BuildDirectory)/rocm/lib/rocprofiler:$(Agent.BuildDirectory)/rocm/share/rocprofiler/tests" share/rocprofiler/tests/runUnitTests testParameters: '--gtest_output=xml:./test_output.xml --gtest_color=yes' testDir: $(Agent.BuildDirectory)/rocm + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) + optSymLink: true diff --git a/.azuredevops/components/rocr_debug_agent.yml b/.azuredevops/components/rocr_debug_agent.yml index 4f070d40f..eedad2fb9 100644 --- a/.azuredevops/components/rocr_debug_agent.yml +++ b/.azuredevops/components/rocr_debug_agent.yml @@ -14,6 +14,7 @@ parameters: - libdw-dev - libstdc++-12-dev - python-is-python3 + - python3-pip - name: rocmDependencies type: object default: @@ -39,8 +40,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all steps: @@ -53,13 +53,8 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -70,6 +65,11 @@ jobs: -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + gpuTarget: $(JOB_GPU_TARGET) - job: rocr_debug_agent_testing dependsOn: rocr_debug_agent @@ -92,19 +92,11 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/local-artifact-download.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: componentName: rocr_debug_agent-tests @@ -120,3 +112,8 @@ jobs: parameters: componentName: rocr_debug_agent testDir: '$(Agent.BuildDirectory)/rocm/src/rocm-debug-agent-test' + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/roctracer.yml b/.azuredevops/components/roctracer.yml index 5865a7531..fc05e9e24 100644 --- a/.azuredevops/components/roctracer.yml +++ b/.azuredevops/components/roctracer.yml @@ -9,9 +9,10 @@ parameters: type: object default: - cmake - - ninja-build - doxygen - graphviz + - ninja-build + - python3-pip - name: pipModules type: object default: @@ -41,8 +42,7 @@ jobs: - template: /.azuredevops/variables-global.yml - name: HIP_ROCCLR_HOME value: $(Build.BinariesDirectory)/rocm - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -60,14 +60,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -84,6 +79,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) - job: roctracer_testing dependsOn: roctracer @@ -108,19 +109,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/gpu-diagnostics.yml - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/test.yml parameters: @@ -129,3 +122,9 @@ jobs: testParameters: '' testDir: $(Agent.BuildDirectory) testPublishResults: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/components/rpp.yml b/.azuredevops/components/rpp.yml index 94860d092..0e671ea66 100644 --- a/.azuredevops/components/rpp.yml +++ b/.azuredevops/components/rpp.yml @@ -8,13 +8,14 @@ parameters: - name: aptPackages type: object default: + - clang - cmake + - imagemagick - libopencv-dev - libsndfile1-dev - libstdc++-12-dev - - imagemagick - ninja-build - - clang + - python3-pip - name: pipModules type: object default: @@ -48,8 +49,7 @@ jobs: variables: - group: common - template: /.azuredevops/variables-global.yml - pool: - vmImage: ${{ variables.BASE_BUILD_POOL }} + pool: ${{ variables.LOW_BUILD_POOL }} workspace: clean: all strategy: @@ -66,14 +66,9 @@ jobs: checkoutRepo: ${{ parameters.checkoutRepo }} - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmDependencies }} gpuTarget: $(JOB_GPU_TARGET) - # CI case: download latest default branch build - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - # manual build case: triggered by ROCm/ROCm repo - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/build-cmake.yml parameters: extraBuildFlags: >- @@ -83,7 +78,7 @@ jobs: -DCMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm -DHALF_INCLUDE_DIRS=$(Agent.BuildDirectory)/rocm/include -DCMAKE_BUILD_TYPE=Release - -DAMDGPU_TARGETS=$(JOB_GPU_TARGET) + -DGPU_TARGETS=$(JOB_GPU_TARGET) -GNinja - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml parameters: @@ -91,6 +86,12 @@ jobs: - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-upload.yml parameters: gpuTarget: $(JOB_GPU_TARGET) + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + gpuTarget: $(JOB_GPU_TARGET) - job: rpp_testing dependsOn: rpp @@ -118,19 +119,11 @@ jobs: parameters: gpuTarget: $(JOB_GPU_TARGET) - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-aqlprofile.yml - parameters: - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + checkoutRef: ${{ parameters.checkoutRef }} dependencyList: ${{ parameters.rocmTestDependencies }} gpuTarget: $(JOB_GPU_TARGET) - ${{ if eq(parameters.checkoutRef, '') }}: - dependencySource: staging - ${{ elseif ne(parameters.checkoutRef, '') }}: - dependencySource: tag-builds # Dependencies from: https://github.com/ROCm/rpp/blob/develop/utilities/test_suite/README.md - task: Bash@3 displayName: Build and install Turbo JPEG @@ -139,7 +132,7 @@ jobs: script: | sudo apt-get install nasm sudo apt-get install wget - git clone -b 3.0.2 https://github.com/libjpeg-turbo/libjpeg-turbo.git + git clone -b 3.0.2 https://github.com/libjpeg-turbo/libjpeg-turbo.git cd libjpeg-turbo mkdir build cd build @@ -156,7 +149,7 @@ jobs: inputs: targetType: 'inline' script: | - git clone https://github.com/NIFTI-Imaging/nifti_clib.git + git clone -b v3.0.1 https://github.com/NIFTI-Imaging/nifti_clib.git cd nifti_clib mkdir build cd build @@ -182,3 +175,9 @@ jobs: testDir: 'rpp-tests' - script: sudo rm /opt/rocm condition: always() + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/docker-container.yml + parameters: + aptPackages: ${{ parameters.aptPackages }} + pipModules: ${{ parameters.pipModules }} + environment: test + gpuTarget: $(JOB_GPU_TARGET) diff --git a/.azuredevops/nightly/pytorch.yml b/.azuredevops/nightly/pytorch.yml index 0282ae219..56099e78a 100644 --- a/.azuredevops/nightly/pytorch.yml +++ b/.azuredevops/nightly/pytorch.yml @@ -177,8 +177,6 @@ jobs: value: 6.3.0 - name: MKLROOT value: /opt/intel - - name: AOTRITON_INSTALLED_PREFIX - value: /opt/rocm/aotriton - name: DESIRED_PYTHON value: 3.10 - name: PYTORCH_ROOT @@ -275,12 +273,6 @@ jobs: script: | sudo PYTORCH_ROCM_ARCH=$(JOB_GPU_TARGET) MKLROOT=$(MKLROOT) bash pytorch/.ci/docker/common/install_rocm_magma.sh workingDirectory: $(Build.SourcesDirectory) - - task: Bash@3 - displayName: Install AOTriton Shared Library - inputs: - targetType: inline - script: sudo bash ./common/install_aotriton.sh /opt/rocm - workingDirectory: $(Build.SourcesDirectory)/pytorch/.ci/docker - task: Bash@3 displayName: Run ROCm Build Script inputs: @@ -293,7 +285,6 @@ jobs: DESIRED_PYTHON=$(DESIRED_PYTHON) PYTORCH_ROOT=$(PYTORCH_ROOT) CMAKE_PREFIX_PATH=$(Agent.BuildDirectory)/rocm - AOTRITON_INSTALLED_PREFIX=$(AOTRITON_INSTALLED_PREFIX) DESIRED_DEVTOOLSET=$(DESIRED_DEVTOOLSET) TORCH_PACKAGE_NAME=torch.$(ROCM_BRANCH).$(JOB_GPU_TARGET) PYTORCH_BUILD_VERSION=$(cat $(Build.SourcesDirectory)/pytorch/version.txt | cut -da -f1) @@ -353,11 +344,25 @@ jobs: sourceDir: $(Build.SourcesDirectory)/vision/dist contentsString: '*.whl' clean: false + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/manifest.yml + parameters: + gpuTarget: $(JOB_GPU_TARGET) - task: PublishPipelineArtifact@1 displayName: 'wheel file Publish' retryCountOnTaskFailure: 3 inputs: targetPath: $(Build.BinariesDirectory) + - task: Bash@3 + displayName: Save pipeline artifact file name + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + whlFile=$(find "$(Build.BinariesDirectory)" -type f -name "*.whl" | head -n 1) + if [ -n "$whlFile" ]; then + echo $(basename "$whlFile") >> pipelineArtifacts.txt + fi + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml - job: pytorch_testing dependsOn: pytorch @@ -390,6 +395,12 @@ jobs: parameters: aptPackages: ${{ parameters.aptPackages }} pipModules: ${{ parameters.pipModules }} +# pytorch tests require an updated version of click, even if requirements is not called outright + - task: Bash@3 + displayName: 'pip update click' + inputs: + targetType: inline + script: pip install --upgrade click - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/preamble.yml - task: DownloadPipelineArtifact@2 displayName: 'Download Pipeline Wheel Files' @@ -463,7 +474,7 @@ jobs: python3 -c 'import torch; x = torch.rand(5, 3); print(x)' # Test artifact build script has too many if statements for different environments # Based off the snippet of interest for this environment, with some adjustments -# https://github.com/pytorch/pytorch/blob/main/.ci/pytorch/build.sh#L335-L375 +# https://github.com/pytorch/pytorch/blob/main/.ci/pytorch/build.sh#L330-L371 # Removing in-line comments since it does not fit with the yaml markup - task: Bash@3 displayName: Build Pytorch Test Artifacts diff --git a/.azuredevops/nightly/rocm-nightly.yml b/.azuredevops/nightly/rocm-nightly.yml index 0c46ee7d7..6fffd9a8b 100644 --- a/.azuredevops/nightly/rocm-nightly.yml +++ b/.azuredevops/nightly/rocm-nightly.yml @@ -1,5 +1,10 @@ parameters: -# currently excludes clr +- name: dependencySource + type: string + default: staging + values: + - staging + - mainline - name: rocmDependencies type: object default: @@ -60,6 +65,7 @@ parameters: - roctracer - rocWMMA - rpp + - TransferBench trigger: none pr: none @@ -99,11 +105,11 @@ jobs: displayName: System disk space before ROCm - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/dependencies-rocm.yml parameters: + dependencySource: ${{ parameters.dependencySource }} dependencyList: ${{ parameters.rocmDependencies }} - dependencySource: staging + gpuTarget: $(JOB_GPU_TARGET) skipLibraryLinking: true skipLlvmSymlink: true - gpuTarget: $(JOB_GPU_TARGET) - script: df -h displayName: System disk space after ROCm - script: du -sh $(Agent.BuildDirectory)/rocm @@ -124,3 +130,10 @@ jobs: retryCountOnTaskFailure: 3 inputs: targetPath: '$(Build.ArtifactStagingDirectory)' + - task: Bash@3 + displayName: Save pipeline artifact file name + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: echo "$(Build.DefinitionName)_$(Build.BuildNumber)_ubuntu2204_$(JOB_GPU_TARGET).tar.gz" >> pipelineArtifacts.txt + - template: ${{ variables.CI_TEMPLATE_PATH }}/steps/artifact-links.yml diff --git a/.azuredevops/templates/steps/artifact-download.yml b/.azuredevops/templates/steps/artifact-download.yml index bc21b21e8..b738e228b 100644 --- a/.azuredevops/templates/steps/artifact-download.yml +++ b/.azuredevops/templates/steps/artifact-download.yml @@ -6,152 +6,12 @@ parameters: - name: pipelineId type: string default: '' -- name: useDefaultBranch - type: boolean - default: true -# useMainlineBranch only processed if useDefaultBranch is false -- name: useMainlineBranch - type: boolean - default: false -- name: latestFromBranch - type: boolean - default: true -- name: extractToMnt - type: boolean - default: false -- name: fileFilter - type: string - default: '' -- name: defaultBranchList - type: object - default: - AMDMIGraphX: develop - amdsmi: amd-staging - aomp-extras: aomp-dev - aomp: aomp-dev - clr: amd-staging - composable_kernel: develop - half: rocm - HIP: amd-staging - hip-tests: amd-staging - hipBLAS: develop - hipBLASLt: develop - hipBLAS-common: develop - hipCUB: develop - hipFFT: develop - hipfort: develop - HIPIFY: amd-staging - hipRAND: develop - hipSOLVER: develop - hipSPARSE: develop - hipSPARSELt: develop - hipTensor: develop - llvm-project: amd-staging - MIOpen: develop - MIVisionX: develop - omniperf: amd-staging - omnitrace: amd-staging - rccl: develop - rdc: amd-staging - rocAL: develop - rocALUTION: develop - rocBLAS: develop - ROCdbgapi : amd-staging - rocDecode: develop - rocFFT: develop - ROCgdb: amd-staging - rocJPEG: develop - rocm-cmake: develop - rocm-core: master - rocm-examples: develop - rocminfo: amd-staging - rocMLIR: develop - ROCmValidationSuite: master - rocm_bandwidth_test: master - rocm_smi_lib: amd-staging - rocPRIM: develop - rocprofiler: amd-staging - rocprofiler-compute: amd-staging - rocprofiler-register: amd-staging - rocprofiler-sdk: amd-staging - rocprofiler-systems: amd-staging - rocPyDecode: develop - ROCR-Runtime: amd-staging - rocRAND: develop - rocr_debug_agent: amd-staging - rocSOLVER: develop - rocSPARSE: develop - rocThrust: develop - roctracer: amd-staging - rocWMMA: develop - rpp: develop -- name: mainlineBranchList - type: object - default: - AMDMIGraphX: mainline - amdsmi: amd-mainline - aomp-extras: amd-mainline-open - aomp: amd-mainline-open - clr: amd-mainline - composable_kernel: mainline - half: rocm - HIP: amd-mainline - hip-tests: amd-mainline - hipBLAS: mainline - hipBLASLt: mainline - hipBLAS-common: mainline - hipCUB: mainline - hipFFT: mainline - hipfort: mainline - HIPIFY: amd-mainline - hipRAND: mainline - hipSOLVER: mainline - hipSPARSE: mainline - hipSPARSELt: mainline - hipTensor: mainline - llvm-project: amd-mainline-open - MIOpen: mainline - MIVisionX: mainline - omniperf: amd-mainline - omnitrace: amd-mainline - rccl: mainline - rdc: amd-mainline - rocAL: master # needs the yaml file - rocALUTION: mainline - rocBLAS: mainline - ROCdbgapi : amd-mainline - rocDecode: mainline - rocFFT: mainline - ROCgdb: amd-mainline-rocgdb-15 - rocJPEG: mainline - rocm-cmake: mainline - rocm-core: amd-master - rocm-examples: develop # no mainline - rocminfo: amd-master - rocMLIR: mainline # needs the yaml file - ROCmValidationSuite: mainline - rocm_bandwidth_test: master - rocm_smi_lib: amd-mainline - rocPRIM: mainline - rocprofiler: amd-master - rocprofiler-compute: amd-mainline - rocprofiler-register: amd-mainline - rocprofiler-sdk: amd-mainline - rocprofiler-systems: amd-mainline - rocPyDecode: mainline - ROCR-Runtime: amd-master - rocRAND: mainline - rocr_debug_agent: amd-mainline - rocSOLVER: mainline - rocSPARSE: mainline - rocThrust: mainline - roctracer: amd-master - rocWMMA: mainline - rpp: mainline -# BELOW REQUIRED IF useDefaultBranch false - name: branchName type: string default: '$(Build.SourceBranchName)' # for tagged builds +- name: fileFilter + type: string + default: '' steps: - task: Bash@3 @@ -172,25 +32,16 @@ steps: definition: ${{ parameters.pipelineId }} specificBuildWithTriggering: true itemPattern: '**/*${{ parameters.fileFilter }}*' - ${{ if eq(parameters.latestFromBranch, true) }}: - ${{ if notIn(parameters.componentName, 'aomp') }}: # remove this once these pipelines are functional + up-to-date - buildVersionToDownload: latestFromBranch # default is 'latest' - ${{ if eq(parameters.useDefaultBranch, true) }}: - branchName: refs/heads/${{ parameters.defaultBranchList[parameters.componentName] }} - ${{ elseif eq(parameters.useMainlineBranch, true) }}: - branchName: refs/heads/${{ parameters.mainlineBranchList[parameters.componentName] }} - ${{ else }}: - branchName: ${{ parameters.branchName }} + ${{ if notIn(parameters.componentName, 'aomp') }}: # remove this once these pipelines are functional + up-to-date + buildVersionToDownload: latestFromBranch # default is 'latest' + branchName: refs/heads/${{ parameters.branchName }} allowPartiallySucceededBuilds: $(allowPartiallySucceededBuilds) targetPath: '$(Pipeline.Workspace)/d' - task: ExtractFiles@1 displayName: Extract ${{ parameters.componentName }} inputs: archiveFilePatterns: '$(Pipeline.Workspace)/d/**/*.tar.gz' - ${{ if parameters.extractToMnt }}: - destinationFolder: '/mnt/rocm' - ${{ else }}: - destinationFolder: '$(Agent.BuildDirectory)/rocm' + destinationFolder: '$(Agent.BuildDirectory)/rocm' cleanDestinationFolder: false overwriteExistingFiles: true - task: DeleteFiles@1 diff --git a/.azuredevops/templates/steps/artifact-links.yml b/.azuredevops/templates/steps/artifact-links.yml new file mode 100644 index 000000000..5f5b682ad --- /dev/null +++ b/.azuredevops/templates/steps/artifact-links.yml @@ -0,0 +1,32 @@ +# Every publish artifact call should be coupled with a script that +# prints out the artifact name to a common text file +# This template parses that text file line by line and prints out the download URL +# for each artifact, so that they are easily accessible to the public +# replace trailing '=' with their count in the encoded string +steps: +- task: Bash@3 + displayName: "!! Download Links !!" + condition: always() + continueOnError: true + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + URL_BEGIN="https://artprodcus3.artifacts.visualstudio.com/" + URL_MIDDLE="/_apis/artifact/" + URL_END="/content?format=file&subPath=%2F" + FORMATTED_JOB_NAME=$(echo $(Agent.JobName) | sed 's/ /./g; s/[-_]//g') + ARTIFACT_STRING="pipelineartifact://ROCm-CI/projectId/$(DOWNLOAD_PROJECT_ID)/buildId/$(Build.BuildId)/artifactName/${FORMATTED_JOB_NAME}" + ENCODED_STRING=$(echo -n "${ARTIFACT_STRING}" | base64 -w 0) + PADDING_COUNT=$(echo -n "${ENCODED_STRING}" | awk -F= '{print NF-1}') + if [ "$PADDING_COUNT" -gt 0 ]; then + FINAL_ENCODED_STRING=$(echo -n "${ENCODED_STRING}" | sed "s/=*$/${PADDING_COUNT}/") + else + FINAL_ENCODED_STRING="${ENCODED_STRING}0" + fi + while IFS= read -r fileName; do + echo "File Name:" + echo "$fileName" + printf "Download Link:\n%s%s/%s%s%s%s%s\n\n" "${URL_BEGIN}" "${DOWNLOAD_ORGANIZATION_ID}" "${DOWNLOAD_PROJECT_ID}" "${URL_MIDDLE}" "${FINAL_ENCODED_STRING}" "${URL_END}" "${fileName}" + done < pipelineArtifacts.txt + rm pipelineArtifacts.txt diff --git a/.azuredevops/templates/steps/artifact-upload.yml b/.azuredevops/templates/steps/artifact-upload.yml index 9229e64d6..a41db825f 100644 --- a/.azuredevops/templates/steps/artifact-upload.yml +++ b/.azuredevops/templates/steps/artifact-upload.yml @@ -27,6 +27,12 @@ steps: SourceFolder: '$(Build.BinariesDirectory)' Contents: '/**/*' RemoveDotFiles: true +- task: Bash@3 + displayName: Save pipeline artifact file name + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: echo "$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}_${{ parameters.gpuTarget }}.tar.gz" >> pipelineArtifacts.txt # then publish it - ${{ if parameters.publish }}: - task: PublishPipelineArtifact@1 diff --git a/.azuredevops/templates/steps/dependencies-aqlprofile.yml b/.azuredevops/templates/steps/dependencies-aqlprofile.yml index 42ca8dac6..191edcde8 100644 --- a/.azuredevops/templates/steps/dependencies-aqlprofile.yml +++ b/.azuredevops/templates/steps/dependencies-aqlprofile.yml @@ -1,29 +1,16 @@ -parameters: -- name: dependencySource - type: string - default: staging - values: - - staging - - tag-builds -- name: repositoryUrl - type: object - default: - staging: https://repo.radeon.com/rocm/apt/latest/pool/main/h/hsa-amd-aqlprofile/ # end slash is important for curl! - tag-builds: https://repo.radeon.com/rocm/apt/$(TAGGED_RELEASE)/pool/main/h/hsa-amd-aqlprofile/ - steps: - task: Bash@3 displayName: Get aqlprofile package name inputs: targetType: inline script: | - export packageName=$(curl -s ${{ parameters.repositoryUrl[parameters.dependencySource] }} | grep -oP "href=\"\K[^\"]*$(lsb_release -rs)[^\"]*\.deb") + export packageName=$(curl -s https://repo.radeon.com/rocm/apt/latest/pool/main/h/hsa-amd-aqlprofile/ | grep -oP "href=\"\K[^\"]*$(lsb_release -rs)[^\"]*\.deb") echo "##vso[task.setvariable variable=packageName;isreadonly=true]$packageName" - task: Bash@3 displayName: 'Download aqlprofile' inputs: targetType: inline - script: wget -nv ${{ parameters.repositoryUrl[parameters.dependencySource] }}$(packageName) + script: wget -nv https://repo.radeon.com/rocm/apt/latest/pool/main/h/hsa-amd-aqlprofile/$(packageName) workingDirectory: '$(Pipeline.Workspace)' - task: Bash@3 displayName: 'Extract aqlprofile' diff --git a/.azuredevops/templates/steps/dependencies-other.yml b/.azuredevops/templates/steps/dependencies-other.yml index 34a89d1a3..cea3c1ca5 100644 --- a/.azuredevops/templates/steps/dependencies-other.yml +++ b/.azuredevops/templates/steps/dependencies-other.yml @@ -6,10 +6,26 @@ parameters: - name: pipModules type: object default: [] +- name: registerRadeon + type: boolean + default: false steps: +- ${{ if eq(parameters.registerRadeon, true) }}: + - task: Bash@3 + displayName: 'Register repo.radeon packages' + inputs: + targetType: inline + script: | + sudo mkdir --parents --mode=0755 /etc/apt/keyrings + wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null + echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/latest/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/amdgpu.list + echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/latest jammy main" | sudo tee --append /etc/apt/sources.list.d/rocm.list + echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' | sudo tee /etc/apt/preferences.d/rocm-pin-600 + sudo apt update # firefox takes time to upgrade and is not needed for CI workloads, hold version - task: Bash@3 + continueOnError: true displayName: 'sudo apt-mark hold firefox' inputs: targetType: inline diff --git a/.azuredevops/templates/steps/dependencies-rocm.yml b/.azuredevops/templates/steps/dependencies-rocm.yml index 87f77658d..74c11528e 100644 --- a/.azuredevops/templates/steps/dependencies-rocm.yml +++ b/.azuredevops/templates/steps/dependencies-rocm.yml @@ -1,160 +1,21 @@ # download and install rocm dependencies through pipeline builds in the project -# REQUIRED parameters: +- name: checkoutRef + type: string + default: '' +- name: dependencySource # optional, overrides checkoutRef + type: string + default: null + values: + - null # empty strings aren't allowed as values, use null instead + - staging + - mainline - name: dependencyList type: object default: [] -- name: dependencySource - type: string - default: staging - values: - - staging - - mainline - - tag-builds - - fixed -- name: extractToMnt - type: boolean - default: false -# required values for fixed selection -- name: fixedPipelineIdentifier - type: string - default: 0 -- name: fixedComponentName +- name: gpuTarget type: string default: '' -- name: latestFromBranch - type: boolean - default: true -# match case of the repo in this object for the left side of the maps -# should not need to replace these parameters -- name: stagingPipelineIdentifiers - type: object - default: - AMDMIGraphX: $(AMDMIGRAPHX_PIPELINE_ID) - amdsmi: $(AMDSMI_PIPELINE_ID) - aomp-extras: $(AOMP_EXTRAS_PIPELINE_ID) - aomp: $(AOMP_PIPELINE_ID) - clr: $(CLR_PIPELINE_ID) - composable_kernel: $(COMPOSABLE_KERNEL_PIPELINE_ID) - half: $(HALF_PIPELINE_ID) - HIP: $(HIP_PIPELINE_ID) - hip-tests: $(HIP_TESTS_PIPELINE_ID) - hipBLAS: $(HIPBLAS_PIPELINE_ID) - hipBLAS-common: $(HIPBLAS_COMMON_PIPELINE_ID) - hipBLASLt: $(HIPBLASLT_PIPELINE_ID) - hipCUB: $(HIPCUB_PIPELINE_ID) - hipFFT: $(HIPFFT_PIPELINE_ID) - hipfort: $(HIPFORT_PIPELINE_ID) - HIPIFY: $(HIPIFY_PIPELINE_ID) - hipRAND: $(HIPRAND_PIPELINE_ID) - hipSOLVER: $(HIPSOLVER_PIPELINE_ID) - hipSPARSE: $(HIPSPARSE_PIPELINE_ID) - hipSPARSELt: $(HIPSPARSELT_PIPELINE_ID) - hipTensor: $(HIPTENSOR_PIPELINE_ID) - llvm-project: $(LLVM_PROJECT_PIPELINE_ID) - MIOpen: $(MIOpen_PIPELINE_ID) - MIVisionX: $(MIVISIONX_PIPELINE_ID) - omniperf: $(OMNIPERF_PIPELINE_ID) - omnitrace: $(OMNITRACE_PIPELINE_ID) - rccl: $(RCCL_PIPELINE_ID) - rdc: $(RDC_PIPELINE_ID) - rocAL: $(ROCAL_PIPELINE_ID) - rocALUTION: $(ROCALUTION_PIPELINE_ID) - rocBLAS: $(ROCBLAS_PIPELINE_ID) - ROCdbgapi: $(ROCDBGAPI_PIPELINE_ID) - rocDecode: $(ROCDECODE_PIPELINE_ID) - rocFFT: $(ROCFFT_PIPELINE_ID) - ROCgdb: $(ROCGDB_PIPELINE_ID) - rocJPEG: $(ROCJPEG_PIPELINE_ID) - rocm-cmake: $(ROCM_CMAKE_PIPELINE_ID) - rocm-core: $(ROCM_CORE_PIPELINE_ID) - rocm-examples: $(ROCM_EXAMPLES_PIPELINE_ID) - rocminfo: $(ROCMINFO_PIPELINE_ID) - rocMLIR: $(ROCMLIR_PIPELINE_ID) - ROCmValidationSuite: $(ROCMVALIDATIONSUITE_PIPELINE_ID) - rocm_bandwidth_test: $(ROCM_BANDWIDTH_TEST_PIPELINE_ID) - rocm_smi_lib: $(ROCM_SMI_LIB_PIPELINE_ID) - rocPRIM: $(ROCPRIM_PIPELINE_ID) - rocprofiler-compute: $(ROCPROFILER_COMPUTE_PIPELINE_ID) - rocprofiler-register: $(ROCPROFILER_REGISTER_PIPELINE_ID) - rocprofiler-sdk: $(ROCPROFILER_SDK_PIPELINE_ID) - rocprofiler-systems: $(ROCPROFILER_SYSTEMS_PIPELINE_ID) - rocprofiler: $(ROCPROFILER_PIPELINE_ID) - rocPyDecode: $(ROCPYDECODE_PIPELINE_ID) - ROCR-Runtime: $(ROCR_RUNTIME_PIPELINE_ID) - rocRAND: $(ROCRAND_PIPELINE_ID) - rocr_debug_agent: $(ROCR_DEBUG_AGENT_PIPELINE_ID) - rocSOLVER: $(ROCSOLVER_PIPELINE_ID) - rocSPARSE: $(ROCSPARSE_PIPELINE_ID) - ROCT-Thunk-Interface: $(ROCT_THUNK_INTERFACE_PIPELINE_ID) - rocThrust: $(ROCTHRUST_PIPELINE_ID) - roctracer: $(ROCTRACER_PIPELINE_ID) - rocWMMA: $(ROCWMMA_PIPELINE_ID) - rpp: $(RPP_PIPELINE_ID) -- name: taggedPipelineIdentifiers - type: object - default: - AMDMIGraphX: $(AMDMIGRAPHX_TAGGED_PIPELINE_ID) - amdsmi: $(AMDSMI_TAGGED_PIPELINE_ID) - aomp-extras: $(AOMP_EXTRAS_TAGGED_PIPELINE_ID) - aomp: $(AOMP_TAGGED_PIPELINE_ID) - clr: $(CLR_TAGGED_PIPELINE_ID) - composable_kernel: $(COMPOSABLE_KERNEL_TAGGED_PIPELINE_ID) - half: $(HALF_TAGGED_PIPELINE_ID) - HIP: $(HIP_TAGGED_PIPELINE_ID) - hip-tests: $(HIP_TESTS_TAGGED_PIPELINE_ID) - hipBLAS: $(HIPBLAS_TAGGED_PIPELINE_ID) - hipBLAS-common: $(HIPBLAS_COMMON_TAGGED_PIPELINE_ID) - hipBLASLt: $(HIPBLASLT_TAGGED_PIPELINE_ID) - hipCUB: $(HIPCUB_TAGGED_PIPELINE_ID) - hipFFT: $(HIPFFT_TAGGED_PIPELINE_ID) - hipfort: $(HIPFORT_TAGGED_PIPELINE_ID) - HIPIFY: $(HIPIFY_TAGGED_PIPELINE_ID) - hipRAND: $(HIPRAND_TAGGED_PIPELINE_ID) - hipSOLVER: $(HIPSOLVER_TAGGED_PIPELINE_ID) - hipSPARSE: $(HIPSPARSE_TAGGED_PIPELINE_ID) - hipSPARSELt: $(HIPSPARSELT_TAGGED_PIPELINE_ID) - hipTensor: $(HIPTENSOR_TAGGED_PIPELINE_ID) - llvm-project: $(LLVM_PROJECT_TAGGED_PIPELINE_ID) - MIOpen: $(MIOpen_TAGGED_PIPELINE_ID) - MIVisionX: $(MIVISIONX_TAGGED_PIPELINE_ID) - omniperf: $(OMNIPERF_TAGGED_PIPELINE_ID) - omnitrace: $(OMNITRACE_TAGGED_PIPELINE_ID) - rccl: $(RCCL_TAGGED_PIPELINE_ID) - rdc: $(RDC_TAGGED_PIPELINE_ID) - rocAL: $(ROCAL_TAGGED_PIPELINE_ID) - rocALUTION: $(ROCALUTION_TAGGED_PIPELINE_ID) - rocBLAS: $(ROCBLAS_TAGGED_PIPELINE_ID) - ROCdbgapi: $(ROCDBGAPI_TAGGED_PIPELINE_ID) - rocDecode: $(ROCDECODE_TAGGED_PIPELINE_ID) - rocFFT: $(ROCFFT_TAGGED_PIPELINE_ID) - ROCgdb: $(ROCGDB_TAGGED_PIPELINE_ID) - rocJPEG: $(ROCJPEG_TAGGED_PIPELINE_ID) - rocm-cmake: $(ROCM_CMAKE_TAGGED_PIPELINE_ID) - rocm-core: $(ROCM_CORE_TAGGED_PIPELINE_ID) - rocm-examples: $(ROCM_EXAMPLES_TAGGED_PIPELINE_ID) - rocminfo: $(ROCMINFO_TAGGED_PIPELINE_ID) - rocMLIR: $(ROCMLIR_TAGGED_PIPELINE_ID) - ROCmValidationSuite: $(ROCMVALIDATIONSUITE_TAGGED_PIPELINE_ID) - rocm_bandwidth_test: $(ROCM_BANDWIDTH_TEST_TAGGED_PIPELINE_ID) - rocm_smi_lib: $(ROCM_SMI_LIB_TAGGED_PIPELINE_ID) - rocPRIM: $(ROCPRIM_TAGGED_PIPELINE_ID) - rocprofiler-compute: $(ROCPROFILER_COMPUTE_TAGGED_PIPELINE_ID) - rocprofiler-register: $(ROCPROFILER_REGISTER_TAGGED_PIPELINE_ID) - rocprofiler-sdk: $(ROCPROFILER_SDK_TAGGED_PIPELINE_ID) - rocprofiler-systems: $(ROCPROFILER_SYSTEMS_PIPELINE_ID) - rocprofiler: $(ROCPROFILER_TAGGED_PIPELINE_ID) - rocPyDecode: $(ROCPYDECODE_TAGGED_PIPELINE_ID) - ROCR-Runtime: $(ROCR_RUNTIME_TAGGED_PIPELINE_ID) - rocRAND: $(ROCRAND_TAGGED_PIPELINE_ID) - rocr_debug_agent: $(ROCR_DEBUG_AGENT_TAGGED_PIPELINE_ID) - rocSOLVER: $(ROCSOLVER_TAGGED_PIPELINE_ID) - rocSPARSE: $(ROCSPARSE_TAGGED_PIPELINE_ID) - ROCT-Thunk-Interface: $(ROCT_THUNK_INTERFACE_TAGGED_PIPELINE_ID) - rocThrust: $(ROCTHRUST_TAGGED_PIPELINE_ID) - roctracer: $(ROCTRACER_TAGGED_PIPELINE_ID) - rocWMMA: $(ROCWMMA_TAGGED_PIPELINE_ID) - rpp: $(RPP_TAGGED_PIPELINE_ID) # set to true if you're calling this template file multiple files in same pipeline # only leave last call false to optimize sequence - name: skipLibraryLinking @@ -170,52 +31,315 @@ parameters: - name: setupHIPLibrarySymlinks type: boolean default: false -# some ROCm components can specify GPU target and this will affect downloads -- name: gpuTarget - type: string - default: '' -# array of ROCm components that can specify GPU target or have dependency of such a component -# these components would have parallel build jobs per GPU target so they produce multiple artifacts -# only download artifact tied to the GPU target -- name: componentsWithGPUTarget + +- name: componentVarList type: object default: - - AMDMIGraphX - - composable_kernel - - hipBLASLt - - hipCUB - - hipFFT - - hipRAND - - hipSPARSELt - - hipTensor - - omnitrace - - rccl - - rocALUTION - - rocBLAS - - rocFFT - - rocm-examples - - rocPRIM - - rocprofiler-compute - - rocprofiler-sdk - - rocprofiler-systems - - rocprofiler - - rocPyDecode - - rocRAND - - rocSOLVER - - rocSPARSE - - rocThrust - - roctracer - - rocWMMA - - rpp -# list below do not have flag for gpu target but have dependencies of components that do, so build separately per gpu target - - hipBLAS - - hipSOLVER - - hipSPARSE - - MIOpen - - MIVision - - omniperf - - rocAL - - ROCmValidationSuite + AMDMIGraphX: + pipelineId: $(AMDMIGRAPHX_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + amdsmi: + pipelineId: $(AMDSMI_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + aomp-extras: + pipelineId: $(AOMP_EXTRAS_PIPELINE_ID) + stagingBranch: aomp-dev + mainlineBranch: aomp-dev + hasGpuTarget: false + aomp: + pipelineId: $(AOMP_PIPELINE_ID) + stagingBranch: aomp-dev + mainlineBranch: amd-mainline-open + hasGpuTarget: false + clr: + pipelineId: $(CLR_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + composable_kernel: + pipelineId: $(COMPOSABLE_KERNEL_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + half: + pipelineId: $(HALF_PIPELINE_ID) + stagingBranch: rocm + mainlineBranch: rocm + hasGpuTarget: false + HIP: + pipelineId: $(HIP_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + hip-tests: + pipelineId: $(HIP_TESTS_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + hipBLAS: + pipelineId: $(HIPBLAS_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipBLASLt: + pipelineId: $(HIPBLASLT_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipBLAS-common: + pipelineId: $(HIPBLAS_COMMON_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: false + hipCUB: + pipelineId: $(HIPCUB_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipFFT: + pipelineId: $(HIPFFT_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipfort: + pipelineId: $(HIPFORT_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: false + HIPIFY: + pipelineId: $(HIPIFY_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + hipRAND: + pipelineId: $(HIPRAND_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipSOLVER: + pipelineId: $(HIPSOLVER_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipSPARSE: + pipelineId: $(HIPSPARSE_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipSPARSELt: + pipelineId: $(HIPSPARSELT_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + hipTensor: + pipelineId: $(HIPTENSOR_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + llvm-project: + pipelineId: $(LLVM_PROJECT_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline-open + hasGpuTarget: false + MIOpen: + pipelineId: $(MIOpen_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + MIVisionX: + pipelineId: $(MIVISIONX_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + omnitrace: # deprecated + pipelineId: $(OMNITRACE_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: true + rccl: + pipelineId: $(RCCL_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + rdc: + pipelineId: $(RDC_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + rocAL: + pipelineId: $(ROCAL_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: master + hasGpuTarget: true + rocALUTION: + pipelineId: $(ROCALUTION_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + rocBLAS: + pipelineId: $(ROCBLAS_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + ROCdbgapi: + pipelineId: $(ROCDBGAPI_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + rocDecode: + pipelineId: $(ROCDECODE_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: false + rocFFT: + pipelineId: $(ROCFFT_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + ROCgdb: + pipelineId: $(ROCGDB_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline-rocgdb-15 + hasGpuTarget: false + rocJPEG: + pipelineId: $(ROCJPEG_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: false + rocm-cmake: + pipelineId: $(ROCM_CMAKE_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: false + rocm-core: + pipelineId: $(ROCM_CORE_PIPELINE_ID) + stagingBranch: master + mainlineBranch: amd-master + hasGpuTarget: false + rocm-examples: + pipelineId: $(ROCM_EXAMPLES_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: develop + hasGpuTarget: true + rocminfo: + pipelineId: $(ROCMINFO_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-master + hasGpuTarget: false + rocMLIR: + pipelineId: $(ROCMLIR_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: false + ROCmValidationSuite: + pipelineId: $(ROCMVALIDATIONSUITE_PIPELINE_ID) + stagingBranch: master + mainlineBranch: mainline + hasGpuTarget: true + rocm_bandwidth_test: + pipelineId: $(ROCM_BANDWIDTH_TEST_PIPELINE_ID) + stagingBranch: master + mainlineBranch: master + hasGpuTarget: false + rocm_smi_lib: + pipelineId: $(ROCM_SMI_LIB_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + rocPRIM: + pipelineId: $(ROCPRIM_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + rocprofiler: + pipelineId: $(ROCPROFILER_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-master + hasGpuTarget: true + rocprofiler-compute: + pipelineId: $(ROCPROFILER_COMPUTE_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: true + rocprofiler-register: + pipelineId: $(ROCPROFILER_REGISTER_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + rocprofiler-sdk: + pipelineId: $(ROCPROFILER_SDK_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: true + rocprofiler-systems: + pipelineId: $(ROCPROFILER_SYSTEMS_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: true + rocPyDecode: + pipelineId: $(ROCPYDECODE_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + ROCR-Runtime: + pipelineId: $(ROCR_RUNTIME_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-master + hasGpuTarget: false + rocRAND: + pipelineId: $(ROCRAND_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + rocr_debug_agent: + pipelineId: $(ROCR_DEBUG_AGENT_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-mainline + hasGpuTarget: false + rocSOLVER: + pipelineId: $(ROCSOLVER_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + rocSPARSE: + pipelineId: $(ROCSPARSE_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + ROCT-Thunk-Interface: # deprecated + pipelineId: $(ROCT_THUNK_INTERFACE_PIPELINE_ID) + stagingBranch: master + mainlineBranch: master + hasGpuTarget: false + rocThrust: + pipelineId: $(ROCTHRUST_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + roctracer: + pipelineId: $(ROCTRACER_PIPELINE_ID) + stagingBranch: amd-staging + mainlineBranch: amd-master + hasGpuTarget: true + rocWMMA: + pipelineId: $(ROCWMMA_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + rpp: + pipelineId: $(RPP_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true + TransferBench: + pipelineId: $(TRANSFERBENCH_PIPELINE_ID) + stagingBranch: develop + mainlineBranch: mainline + hasGpuTarget: true steps: # assuming artifact-download.yml template file in same directory @@ -229,47 +353,59 @@ steps: - template: artifact-download.yml parameters: componentName: ${{ split(dependency, ':')[0] }} - extractToMnt: ${{ parameters.extractToMnt }} - ${{ if eq(parameters.dependencySource, 'staging') }}: - pipelineId: ${{ parameters.stagingPipelineIdentifiers[ split(dependency, ':')[0] ] }} - latestFromBranch: ${{ parameters.latestFromBranch }} - ${{ elseif eq(parameters.dependencySource, 'mainline') }}: - pipelineId: ${{ parameters.stagingPipelineIdentifiers[ split(dependency, ':')[0] ] }} - useMainlineBranch: true - latestFromBranch: ${{ parameters.latestFromBranch }} - ${{ elseif eq(parameters.dependencySource, 'tag-builds') }}: - pipelineId: ${{ parameters.taggedPipelineIdentifiers[ split(dependency, ':')[0] ] }} - latestFromBranch: false - ${{ if containsValue( parameters.componentsWithGPUTarget, split(dependency, ':')[0] ) }}: + pipelineId: ${{ parameters.componentVarList[split(dependency, ':')[0]].pipelineId }} + ${{ if parameters.componentVarList[split(dependency, ':')[0]].hasGpuTarget }}: fileFilter: "${{ split(dependency, ':')[1] }}*${{ parameters.gpuTarget }}" + # dependencySource = staging + ${{ if eq(parameters.dependencySource, 'staging')}}: + branchName: ${{ parameters.componentVarList[split(dependency, ':')[0]].stagingBranch }} + # dependencySource = mainline + ${{ elseif eq(parameters.dependencySource, 'mainline')}}: + branchName: ${{ parameters.componentVarList[split(dependency, ':')[0]].mainlineBranch }} + # checkoutRef = staging + ${{ elseif eq(parameters.checkoutRef, parameters.componentVarList[variables['Build.DefinitionName']].stagingBranch) }}: + branchName: ${{ parameters.componentVarList[split(dependency, ':')[0]].stagingBranch }} + # checkoutRef = mainline + ${{ elseif eq(parameters.checkoutRef, parameters.componentVarList[variables['Build.DefinitionName']].mainlineBranch) }}: + branchName: ${{ parameters.componentVarList[split(dependency, ':')[0]].mainlineBranch }} + # SourceBranchName = staging + ${{ elseif eq(variables['Build.SourceBranchName'], parameters.componentVarlist[variables['Build.DefinitionName']].stagingBranch) }}: + branchName: ${{ parameters.componentVarList[split(dependency, ':')[0]].stagingBranch }} + # SourceBranchName = mainline + ${{ elseif eq(variables['Build.SourceBranchName'], parameters.componentVarlist[variables['Build.DefinitionName']].mainlineBranch) }}: + branchName: ${{ parameters.componentVarList[split(dependency, ':')[0]].mainlineBranch }} + # default = staging ${{ else }}: - fileFilter: ${{ split(dependency, ':')[1] }} + branchName: ${{ parameters.componentVarList[split(dependency, ':')[0]].stagingBranch }} # no colon (:) found in this item in the list - ${{ else }}: - template: artifact-download.yml parameters: componentName: ${{ dependency }} - extractToMnt: ${{ parameters.extractToMnt }} - ${{ if eq(parameters.dependencySource, 'staging') }}: - pipelineId: ${{ parameters.stagingPipelineIdentifiers[dependency] }} - latestFromBranch: ${{ parameters.latestFromBranch }} - ${{ elseif eq(parameters.dependencySource, 'mainline') }}: - pipelineId: ${{ parameters.stagingPipelineIdentifiers[dependency] }} - useMainlineBranch: true - latestFromBranch: ${{ parameters.latestFromBranch }} - ${{ elseif eq(parameters.dependencySource, 'tag-builds') }}: - pipelineId: ${{ parameters.taggedPipelineIdentifiers[dependency] }} - latestFromBranch: false - ${{ if containsValue( parameters.componentsWithGPUTarget, dependency ) }}: + pipelineId: ${{ parameters.componentVarList[dependency].pipelineId }} + ${{ if parameters.componentVarList[dependency].hasGpuTarget }}: fileFilter: ${{ parameters.gpuTarget }} -# fixed case only accepts one component at a time, so no array input -- ${{ if eq(parameters.dependencySource, 'fixed') }}: - - template: artifact-download.yml - parameters: - componentName: ${{ parameters.fixedComponentName }} - pipelineId: ${{ parameters.fixedPipelineIdentifier }} - latestFromBranch: false - extractToMnt: ${{ parameters.extractToMnt }} + # dependencySource = staging + ${{ if eq(parameters.dependencySource, 'staging')}}: + branchName: ${{ parameters.componentVarList[dependency].stagingBranch }} + # dependencySource = mainline + ${{ elseif eq(parameters.dependencySource, 'mainline')}}: + branchName: ${{ parameters.componentVarList[dependency].mainlineBranch }} + # checkoutRef = staging + ${{ elseif eq(parameters.checkoutRef, parameters.componentVarList[variables['Build.DefinitionName']].stagingBranch) }}: + branchName: ${{ parameters.componentVarList[dependency].stagingBranch }} + # checkoutRef = mainline + ${{ elseif eq(parameters.checkoutRef, parameters.componentVarList[variables['Build.DefinitionName']].mainlineBranch) }}: + branchName: ${{ parameters.componentVarList[dependency].mainlineBranch }} + # SourceBranchName = staging + ${{ elseif eq(variables['Build.SourceBranchName'], parameters.componentVarlist[variables['Build.DefinitionName']].stagingBranch) }}: + branchName: ${{ parameters.componentVarList[dependency].stagingBranch }} + # SourceBranchName = mainline + ${{ elseif eq(variables['Build.SourceBranchName'], parameters.componentVarlist[variables['Build.DefinitionName']].mainlineBranch) }}: + branchName: ${{ parameters.componentVarList[dependency].mainlineBranch }} + # default = staging + ${{ else }}: + branchName: ${{ parameters.componentVarList[dependency].stagingBranch }} # Set link to redirect llvm folder - ${{ if eq(parameters.skipLlvmSymlink, false) }}: - task: Bash@3 @@ -320,27 +456,16 @@ steps: displayName: 'List downloaded ROCm files' inputs: targetType: inline - ${{ if eq(parameters.extractToMnt, true) }}: - script: ls -1R /mnt/rocm - ${{ else }}: - script: ls -1R $(Agent.BuildDirectory)/rocm + script: ls -1R $(Agent.BuildDirectory)/rocm - ${{ if eq(parameters.skipLibraryLinking, false) }}: - task: Bash@3 displayName: 'Link ROCm shared libraries' inputs: targetType: inline # OS ignores if the ROCm lib folder shows up more than once - ${{ if eq(parameters.extractToMnt, true) }}: - script: | - echo /mnt/rocm/lib | sudo tee /etc/ld.so.conf.d/rocm-ci.conf - echo /mnt/rocm/llvm/lib | sudo tee -a /etc/ld.so.conf.d/rocm-ci.conf - sudo cat /etc/ld.so.conf.d/rocm-ci.conf - sudo ldconfig -v - ldconfig -p - ${{ else }}: - script: | - echo $(Agent.BuildDirectory)/rocm/lib | sudo tee /etc/ld.so.conf.d/rocm-ci.conf - echo $(Agent.BuildDirectory)/rocm/llvm/lib | sudo tee -a /etc/ld.so.conf.d/rocm-ci.conf - sudo cat /etc/ld.so.conf.d/rocm-ci.conf - sudo ldconfig -v - ldconfig -p + script: | + echo $(Agent.BuildDirectory)/rocm/lib | sudo tee /etc/ld.so.conf.d/rocm-ci.conf + echo $(Agent.BuildDirectory)/rocm/llvm/lib | sudo tee -a /etc/ld.so.conf.d/rocm-ci.conf + sudo cat /etc/ld.so.conf.d/rocm-ci.conf + sudo ldconfig -v + ldconfig -p diff --git a/.azuredevops/templates/steps/docker-container.yml b/.azuredevops/templates/steps/docker-container.yml new file mode 100644 index 000000000..be244b546 --- /dev/null +++ b/.azuredevops/templates/steps/docker-container.yml @@ -0,0 +1,348 @@ +parameters: +# this base set of packages should not be changed by calling script +# should be common across all pipelines +- name: baseAptPackages + type: object + default: + - build-essential + - ca-certificates + - curl + - file + - git + - gcc + - g++ + - gpg + - kmod + - libdrm-dev + - libelf-dev + - libgtest-dev + - libhsakmt-dev + - libhwloc-dev + - libnuma-dev + - libstdc++-12-dev + - libtbb-dev + - lsb-release + - lsof + - ninja-build + - pkg-config + - python3-dev + - python3-pip + - wget + - zip +# optional array of additional apt packages to install +- name: aptPackages + type: object + default: [] +# optional array of python modules to install +- name: pipModules + type: object + default: [] +# optional array of workspace directories to install +# sources, binaries, and rocm directories are copied by default +- name: extraCopyDirectories + type: object + default: [] +# optional string to specify gpuTarget for the docker image string +- name: gpuTarget + type: string + default: '' +# test environment involves gpu-related steps +# some jobs combine both build and test +# some jobs differentiate based on gpu vendor +- name: environment + type: string + default: build + values: + - build + - test + - combined + - amd + - nvidia +# optional boolean prerequisites before install extra apt packages +- name: registerROCmPackages + type: boolean + default: false +- name: registerCUDAPackages + type: boolean + default: false +- name: registerJPEGPackages + type: boolean + default: false +# optional boolean for special setup steps to accomodate some components +- name: installLatestCMake + type: boolean + default: false +- name: installAOCL + type: boolean + default: false +- name: aoclRepositoryUrl + type: string + default: https://download.amd.com/developer/eula/aocl/aocl-4-2 +- name: aoclPackageName + type: string + default: aocl-linux-gcc-4.2.0_1_amd64.deb +- name: optSymLink + type: boolean + default: false +- name: pythonEnvVars + type: boolean + default: false +# optional string to add to PATH +- name: extraPaths + type: string + default: '' +# optional array of environment variables to set +# each array element expected to be in format of +# key:value +- name: extraEnvVars + type: object + default: [] +# force the docker to be created, regardless of failure condition +- name: forceDockerCreation + type: boolean + default: false + +steps: +# these steps should only be run if there was a failure or warning +# dynamically write to a Dockerfile +# first is to do base setup of users, groups + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Create start of Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "FROM ubuntu:22.04" > Dockerfile + echo "ARG USERNAME=user" >> Dockerfile + echo "ARG USER_UID=1000" >> Dockerfile + echo "ARG USER_GID=\$USER_UID" >> Dockerfile + echo "RUN groupadd --gid \$USER_GID \$USERNAME" >> Dockerfile + echo "RUN useradd --uid \$USER_UID --gid \$USER_GID -m \$USERNAME" >> Dockerfile + echo "RUN apt-get update" >> Dockerfile + echo "RUN apt-get install -y sudo" >> Dockerfile + echo "RUN echo \$USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/\$USERNAME" >> Dockerfile + echo "RUN chmod 0440 /etc/sudoers.d/\$USERNAME" >> Dockerfile +# for test jobs, setup GPU-related users and group + - ${{ if eq(parameters.environment, 'test') }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: GPU setup of Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "RUN groupadd render" >> Dockerfile + echo "RUN usermod -aG render,video \$USERNAME" >> Dockerfile +# now install a common set of packages through apt + - ${{ if gt(length(parameters.baseAptPackages), 0) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Base Apt Packages to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: echo "RUN apt-get install --yes ${{ join(' ', parameters.baseAptPackages) }}" >> Dockerfile +# iterate through possible apt repos that might need to be added to the docker container + - ${{ if eq(parameters.registerROCmPackages, true) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Register ROCm packages to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "RUN mkdir --parents --mode=0755 /etc/apt/keyrings" >> Dockerfile + echo "RUN wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | tee /etc/apt/keyrings/rocm.gpg > /dev/null" >> Dockerfile + echo "RUN echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/latest/ubuntu jammy main\" | tee /etc/apt/sources.list.d/amdgpu.list" >> Dockerfile + echo "RUN echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/latest jammy main\" | tee --append /etc/apt/sources.list.d/rocm.list" >> Dockerfile + echo "RUN printf 'Package: *\\nPin: release o=repo.radeon.com\\nPin-Priority: 600' > /etc/apt/preferences.d/rocm-pin-600" >> Dockerfile + echo "RUN apt-get update" >> Dockerfile + - ${{ if eq(parameters.registerCUDAPackages, true) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Register CUDA packages to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb" >> Dockerfile + echo "RUN dpkg -i cuda-keyring_1.1-1_all.deb" >> Dockerfile + echo "RUN rm -f cuda-keyring_1.1-1_all.deb" >> Dockerfile + echo 'RUN apt-get update' >> Dockerfile + - ${{ if eq(parameters.registerJPEGPackages, true) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Register libjpeg-turbo packages to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "RUN mkdir --parents --mode=0755 /etc/apt/keyrings" >> Dockerfile + echo "RUN wget https://packagecloud.io/dcommander/libjpeg-turbo/gpgkey -O - | gpg --dearmor | tee /etc/apt/trusted.gpg.d/libjpeg-turbo.gpg > /dev/null" >> Dockerfile + echo "RUN echo \"deb [signed-by=/etc/apt/trusted.gpg.d/libjpeg-turbo.gpg] https://packagecloud.io/dcommander/libjpeg-turbo/any/ any main\" | sudo tee /etc/apt/sources.list.d/libjpeg-turbo.list" >> Dockerfile + echo "RUN apt update" >> Dockerfile +# install AOCL to docker container, if needed + - ${{ if eq(parameters.installAOCL, true) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: aocl install to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "RUN wget -nv ${{ parameters.aoclRepositoryUrl }}/${{ parameters.aoclPackageName }}" >> Dockerfile + echo "RUN apt install -y ./${{ parameters.aoclPackageName }}" >> Dockerfile + echo "RUN rm -f ${{ parameters.aoclPackageName }}" >> Dockerfile +# since apt repo list is updated, install the extra apt packages + - ${{ if gt(length(parameters.aptPackages), 0) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Extra Apt Packages to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: echo "RUN apt-get install --yes ${{ join(' ', parameters.aptPackages) }}" >> Dockerfile +# install latest cmake to docker container, if needed + - ${{ if eq(parameters.installLatestCMake, true) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: latest cmake install to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "RUN apt purge cmake -y" >> Dockerfile + echo "RUN pip install cmake --upgrade" >> Dockerfile +# setup workspace where binaries, sources, and dependencies from the job will be copied to + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Workspace setup of Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "USER \$USERNAME" >> Dockerfile + echo "WORKDIR /home/user" >> Dockerfile + echo "RUN mkdir -p /home/user/workspace" >> Dockerfile +# pip install is done here as non-root + - ${{ if gt(length(parameters.pipModules), 0) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Extra Python Modules to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: echo "RUN pip install -v ${{ join(' ', parameters.pipModules) }}" >> Dockerfile +# copy common directories + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Copy base directories to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + if [ -d "$(Agent.BuildDirectory)/rocm" ]; then + echo "COPY rocm /home/user/workspace/rocm" >> Dockerfile + fi + if [ -d "$(Build.SourcesDirectory)" ] && [ "$(Build.SourcesDirectory)" != "" ]; then + echo "COPY s /home/user/workspace/src" >> Dockerfile + fi + if [ -d "$(Build.BinariesDirectory)" ] && [ "$(Build.BinariesDirectory)" != "" ]; then + echo "COPY b /home/user/workspace/bin" >> Dockerfile + fi +# copy extra directories, if applicable to the job + - ${{ each extraCopyDirectory in parameters.extraCopyDirectories }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Copy ${{ extraCopyDirectory }} to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + if [ -d "${{ extraCopyDirectory }}" ]; then + echo "COPY ${{ extraCopyDirectory }} /home/user/workspace/${{ extraCopyDirectory }}" >> Dockerfile + fi +# setup ldconfig + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: ldconfig to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "USER root" >> Dockerfile + echo "RUN echo /home/user/workspace/rocm/lib | tee /etc/ld.so.conf.d/rocm-ci.conf" >> Dockerfile + echo "RUN echo /home/user/workspace/rocm/llvm/lib | tee -a /etc/ld.so.conf.d/rocm-ci.conf" >> Dockerfile + echo "RUN cat /etc/ld.so.conf.d/rocm-ci.conf" >> Dockerfile + echo "RUN ldconfig -v" >> Dockerfile +# create /opt/rocm symbolic link, if needed + - ${{ if eq(parameters.optSymLink, true) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: /opt/rocm symbolic link to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "USER root" >> Dockerfile + echo "RUN ln -s /home/user/workspace/rocm /opt/rocm" >> Dockerfile +# set environment variables needed for some python-based components + - ${{ if eq(parameters.pythonEnvVars, true) }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: python environment variables + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "USER root" >> Dockerfile + echo "ENV PYTHON_USER_SITE=$(python3 -m site --user-site)" >> Dockerfile + echo "ENV PYTHON_DIST_PACKAGES=$(python3 -c 'import sysconfig; print(sysconfig.get_paths()[\"purelib\"])')" >> Dockerfile + echo "ENV PYBIND11_PATH=$(python3 -c 'import pybind11; print(pybind11.get_cmake_dir())')" >> Dockerfile +# add to PATH environment variable + - ${{ if ne(parameters.extraPaths, '') }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Add to PATH in Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: echo "ENV PATH='${{ parameters.extraPaths }}:\$PATH'" >> Dockerfile +# set extra environment variables, if applicable to the job +# use ::: as delimiter to allow for colons to be in the environment variable values + - ${{ each extraEnvVar in parameters.extraEnvVars }}: + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Set ${{ extraEnvVar }} to Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: echo "ENV ${{ split(extraEnvVar, ':::')[0] }}='${{ split(extraEnvVar, ':::')[1] }}'" >> Dockerfile + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: Print Dockerfile + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: cat Dockerfile + - task: Docker@2 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + inputs: + containerRegistry: 'ContainerService' + ${{ if ne(parameters.gpuTarget, '') }}: + repository: '$(Build.DefinitionName)-${{ parameters.environment }}-${{ parameters.gpuTarget }}' + ${{ else }}: + repository: '$(Build.DefinitionName)-${{ parameters.environment }}' + Dockerfile: '$(Pipeline.Workspace)/Dockerfile' + buildContext: '$(Pipeline.Workspace)' + - task: Bash@3 + condition: or(failed(), ${{ eq(parameters.forceDockerCreation, true) }}) + displayName: "!! Docker Image URL !!" + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + ${{ if ne(parameters.gpuTarget, '') }}: + script: echo "rocmexternalcicd.azurecr.io/$(Build.DefinitionName)-${{ parameters.environment }}-${{ parameters.gpuTarget }}:$(Build.BuildId)" + ${{ else }}: + script: echo "rocmexternalcicd.azurecr.io/$(Build.DefinitionName)-${{ parameters.environment }}:$(Build.BuildId)" diff --git a/.azuredevops/templates/steps/manifest.yml b/.azuredevops/templates/steps/manifest.yml index 22006787f..e6a1c35da 100644 --- a/.azuredevops/templates/steps/manifest.yml +++ b/.azuredevops/templates/steps/manifest.yml @@ -138,3 +138,13 @@ steps: inputs: tabName: Manifest reportDir: $(Build.ArtifactStagingDirectory)/manifest_$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}_${{ parameters.gpuTarget }}.html +- task: Bash@3 + displayName: Save manifest artifact file name + condition: always() + continueOnError: true + inputs: + workingDirectory: $(Pipeline.Workspace) + targetType: inline + script: | + echo "manifest_$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}_${{ parameters.gpuTarget }}.html" >> pipelineArtifacts.txt + echo "manifest_$(Build.DefinitionName)_$(Build.SourceBranchName)_$(Build.BuildId)_$(Build.BuildNumber)_ubuntu2204_${{ parameters.artifactName }}_${{ parameters.gpuTarget }}.json" >> pipelineArtifacts.txt diff --git a/.azuredevops/templates/steps/miopen-get-ck-build.yml b/.azuredevops/templates/steps/miopen-get-ck-build.yml index 6ea77a51f..6784c23ce 100644 --- a/.azuredevops/templates/steps/miopen-get-ck-build.yml +++ b/.azuredevops/templates/steps/miopen-get-ck-build.yml @@ -36,7 +36,7 @@ steps: if [ -z "$CK_BUILD_ID" ]; then echo "Did not find specific CK build ID" - LATEST_BUILD_URL="$AZ_API/build/builds?definitions=$(COMPOSABLE_KERNEL_PIPELINE_ID)&status=completed&result=succeeded&\$top=1&api-version=7.1" + LATEST_BUILD_URL="$AZ_API/build/builds?definitions=$(COMPOSABLE_KERNEL_PIPELINE_ID)&statusFilter=completed&resultFilter=succeeded&\$top=1&api-version=7.1" CK_BUILD_ID=$(curl -s $LATEST_BUILD_URL | jq '.value[0].id') echo "Found latest CK build ID: $CK_BUILD_ID" EXIT_CODE=1 diff --git a/.azuredevops/templates/steps/test.yml b/.azuredevops/templates/steps/test.yml index 86a66aca5..378d39f8f 100644 --- a/.azuredevops/templates/steps/test.yml +++ b/.azuredevops/templates/steps/test.yml @@ -35,6 +35,7 @@ parameters: - MIVisionX - rocm-cmake - rocm_smi_lib + - rocprofiler-sdk - roctracer steps: diff --git a/.azuredevops/variables-global.yml b/.azuredevops/variables-global.yml index 4b638b571..17939e517 100644 --- a/.azuredevops/variables-global.yml +++ b/.azuredevops/variables-global.yml @@ -74,9 +74,9 @@ variables: - name: HALF_TAGGED_PIPELINE_ID value: 11 - name: HALF560_PIPELINE_ID - value: 66 -- name: HALF560_TAGGED_PIPELINE_ID - value: 66 + value: 68 +- name: HALF560_BUILD_ID + value: 621 - name: HIP_PIPELINE_ID value: 93 - name: HIP_TAGGED_PIPELINE_ID @@ -343,5 +343,9 @@ variables: value: 78 - name: RPP_TAGGED_PIPELINE_ID value: 39 +- name: TRANSFERBENCH_PIPELINE_ID + value: 265 +- name: TRANSFERBENCH_TAGGED_PIPELINE_ID + value: 266 - name: BOOST_DEPENDENCY_PIPELINE_ID value: 250 diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 88ff147dc..46cf26848 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -2,13 +2,13 @@ name: Linting on: push: - branches: + branches: - develop - main - 'docs/*' - 'roc**' pull_request: - branches: + branches: - develop - main - 'docs/*' diff --git a/.spellcheck.local.yaml b/.spellcheck.local.yaml new file mode 100644 index 000000000..d1b54c2ce --- /dev/null +++ b/.spellcheck.local.yaml @@ -0,0 +1,10 @@ +matrix: +- name: Markdown + sources: + - ['tools/autotag/templates/**/*.md', '!tools/autotag/templates/**/5*.md', '!tools/autotag/templates/**/6.0*.md', '!tools/autotag/templates/**/6.1*.md'] +- name: reST + sources: + - [] +- name: Cpp + sources: + - [] diff --git a/.wordlist.txt b/.wordlist.txt index a68e052a3..413254d13 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -26,6 +26,7 @@ ASm ATI AddressSanitizer AlexNet +Andrej Arb Autocast BARs @@ -152,6 +153,8 @@ HIPCC HIPExtension HIPification HIPIFY +HIPification +HIPify HPC HPCG HPE @@ -187,15 +190,17 @@ Interop Intersphinx Intra Ioffe +JAX's Jinja JSON Jupyter KFD KFDTest -KiB KMD KV KVM +Karpathy's +KiB Keras Khronos LAPACK @@ -247,6 +252,7 @@ MyST NBIO NBIOs NCCL +NCF NIC NICs NLI @@ -288,6 +294,7 @@ OpenVX OpenXLA Oversubscription PagedAttention +Pallas PCC PCI PCIe @@ -431,6 +438,7 @@ Unittests Unhandled VALU VBIOS +VCN VGPR VGPRs VM @@ -576,6 +584,7 @@ gRPC galb gcc gdb +gemm gfortran gfx githooks @@ -635,11 +644,13 @@ jax kdb kfd kv +lang latencies len libfabric libjpeg libs +linalg linearized linter linux @@ -662,6 +673,7 @@ mutex mvffr namespace namespaces +nanoGPT num numref ocl @@ -673,7 +685,9 @@ optimizers os oversubscription pageable +pallas parallelization +parallelizing parameterization passthrough perfcounter @@ -704,10 +718,12 @@ protobuf pseudorandom py recommender +recommenders quantile quantizer quasirandom queueing +radeon rccl rdc rdma @@ -761,6 +777,7 @@ runtimes sL scalability scalable +scipy seealso sendmsg seqs @@ -785,6 +802,7 @@ submodules supercomputing symlink symlinks +sys td tensorfloat th diff --git a/LICENSE b/LICENSE index 0928493a1..5c22b7e04 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 - 2024 Advanced Micro Devices, Inc. All rights reserved. +Copyright (c) 2023 - 2025 Advanced Micro Devices, Inc. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 34af671b4..e2454e9e1 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,8 @@ The following example shows how to use the repo tool to download the ROCm source ```bash mkdir -p ~/ROCm/ cd ~/ROCm/ -~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.3.x +export ROCM_VERSION=6.3.1 +~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.3.x -m tools/rocm-build/rocm-${ROCM_VERSION}.xml ~/bin/repo sync ``` @@ -77,7 +78,7 @@ The Build time will reduce significantly if we limit the GPU Architecture/s agai mkdir -p ~/WORKSPACE/ # Or any folder name other than WORKSPACE cd ~/WORKSPACE/ export ROCM_VERSION=6.3.1 -~/bin/repo init -u http://github.com/ROCm/ROCm.git -b roc-6.3.x -m tools/rocm-build/rocm-${ROCM_VERSION}.xml +~/bin/repo init -u http://github.com/ROCm/ROCm.git -b develop -m tools/rocm-build/rocm-${ROCM_VERSION}.xml ~/bin/repo sync # -------------------------------------- diff --git a/RELEASE.md b/RELEASE.md index ade28cb26..9ba6eb786 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -10,7 +10,7 @@ -# ROCm 6.3.1 release notes +# ROCm 6.3.2 release notes The release notes provide a summary of notable changes since the previous ROCm release. @@ -35,57 +35,35 @@ documentation to verify compatibility and system requirements. ``` ## Release highlights -The following are notable new features and improvements in ROCm 6.3.1. For changes to individual components, see +The following are notable improvements in ROCm 6.3.2. For changes to individual components, see [Detailed component changes](#detailed-component-changes). -### Per queue resiliency for Instinct MI300 accelerators - -The AMDGPU driver now includes enhanced resiliency for misbehaving applications on AMD Instinct MI300 accelerators. This helps isolate the impact of misbehaving applications, ensuring other workloads running on the same accelerator are unaffected. - -### ROCm Runfile Installer - -ROCm 6.3.1 introduces the ROCm Runfile Installer, with initial support for Ubuntu 22.04. The ROCm Runfile Installer facilitates ROCm installation without using a native Linux package management system, with or without network or internet access. For more information, see the [ROCm Runfile Installer documentation](https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.3.1/install/rocm-runfile-installer.html). - ### ROCm documentation updates ROCm documentation continues to be updated to provide clearer and more comprehensive guidance for a wider variety of user needs and use cases. -* Added documentation on training a model with ROCm Megatron-LM. AMD offers a Docker image for MI300X accelerators - containing essential components to get started, including ROCm libraries, PyTorch, and Megatron-LM utilities. See - [Training a model using ROCm Megatron-LM](https://rocm.docs.amd.com/en/docs-6.3.1/how-to/rocm-for-ai/train-a-model.html) - to get started. +* Documentation about ROCm compatibility with deep learning frameworks has been added. These topics outline ROCm-enabled features for each deep learning framework, key ROCm libraries that can influence the capabilities, validated Docker image tags, and features supported across the available ROCm and framework versions. For more information, see: - The new ROCm Megatron-LM training Docker accompanies the [ROCm vLLM inference - Docker](https://rocm.docs.amd.com/en/docs-6.3.1/how-to/performance-validation/mi300x/vllm-benchmark.html) - as a set of ready-to-use containerized solutions to get started with using ROCm - for AI. + * [PyTorch compatibility](https://rocm.docs.amd.com/en/latest/compatibility/ml-compatibility/pytorch-compatibility.html) -* Updated the [Instinct MI300X workload tuning - guide](https://rocm.docs.amd.com/en/docs-6.3.1/how-to/tuning-guides/mi300x/workload.html) with more current optimization - strategies. The updated sections include guidance on vLLM optimization, PyTorch TunableOp, and hipBLASLt tuning. + * [TensorFlow compatibility](https://rocm.docs.amd.com/en/latest/compatibility/ml-compatibility/tensorflow-compatibility.html) -* HIP graph-safe libraries operate safely in HIP execution graphs. [HIP graphs](https://rocm.docs.amd.com/projects/HIP/en/docs-6.3.1/how-to/hip_runtime_api/hipgraph.html#how-to-hip-graph) are an alternative way of executing tasks on a GPU that can provide performance benefits over launching kernels using the standard method via streams. A topic that shows whether a [ROCm library is graph-safe](https://rocm.docs.amd.com/en/docs-6.3.1/reference/graph-safe-support.html) has been added. + * [JAX compatibility](https://rocm.docs.amd.com/en/latest/compatibility/ml-compatibility/jax-compatibility.html) -* The [Device memory](https://rocm.docs.amd.com/projects/HIP/en/docs-6.3.1/how-to/hip_runtime_api/memory_management/device_memory.html) topic in the HIP memory management section has been updated. - -* The HIP documentation has expanded with new resources for developers: - * [Multi device management](https://rocm.docs.amd.com/projects/HIP/en/docs-6.3.1/how-to/hip_runtime_api/multi_device.html) - * [OpenGL interoperability](https://rocm.docs.amd.com/projects/HIP/en/docs-6.3.1/how-to/hip_runtime_api/opengl_interop.html) +* The [HIP C++ language extensions](https://rocm.docs.amd.com/projects/HIP/en/latest/how-to/hip_cpp_language_extensions.html) and [Kernel language C++ support](https://rocm.docs.amd.com/projects/HIP/en/latest/how-to/kernel_language_cpp_support.html) topics have been reorganized to make them easier to find and review. The topics have also been enhanced with new content. ## Operating system and hardware support changes -ROCm 6.3.1 adds support for Debian 12 (kernel: 6.1). Debian is supported only on AMD Instinct accelerators. See the installation instructions at [Debian native installation](https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.3.1/install/native-install/debian.html). - -ROCm 6.3.1 enables support for AMD Instinct MI325X accelerator. For more information, see [AMD Instinct™ MI325X Accelerators](https://www.amd.com/en/products/accelerators/instinct/mi300/mi325x.html). +ROCm 6.3.2 adds support for Azure Linux 3.0 (kernel: 6.6). Azure Linux is supported only on AMD Instinct accelerators. For more information, see [Azure Linux installation](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/quick-start.html). See the [Compatibility -matrix](https://rocm.docs.amd.com/en/docs-6.3.1/compatibility/compatibility-matrix.html) +matrix](https://rocm.docs.amd.com/en/latest/compatibility/compatibility-matrix.html) for more information about operating system and hardware compatibility. ## ROCm components -The following table lists the versions of ROCm components for ROCm 6.3.1, including any version -changes from 6.3.0 to 6.3.1. Click the component's updated version to go to a list of its changes. +The following table lists the versions of ROCm components for ROCm 6.3.2, including any version +changes from 6.3.1 to 6.3.2. Click the component's updated version to go to a list of its changes. Click {fab}`github` to go to the component's source code on GitHub.
@@ -107,47 +85,47 @@ Click {fab}`github` to go to the component's source code on GitHub. Libraries Machine learning and computer vision - Composable Kernel + Composable Kernel 1.1.0 - MIGraphX + MIGraphX 2.11.0 - MIOpen + MIOpen 3.3.0 - MIVisionX - 3.1.0 ⇒ 3.1.0 + MIVisionX + 3.1.0 - rocAL + rocAL 2.1.0 - rocDecode + rocDecode 0.8.0 - rocJPEG + rocJPEG 0.6.0 - rocPyDecode + rocPyDecode 0.2.0 - RPP + RPP 1.9.1 @@ -156,8 +134,8 @@ Click {fab}`github` to go to the component's source code on GitHub. Communication - RCCL - 2.21.5 ⇒ 2.21.5 + RCCL + 2.21.5 @@ -165,82 +143,82 @@ Click {fab}`github` to go to the component's source code on GitHub. Math - hipBLAS + hipBLAS 2.3.0 - hipBLASLt + hipBLASLt 0.10.0 - hipFFT + hipFFT 1.0.17 - hipfort - 0.5.0 + hipfort + 0.5.0 ⇒ 0.5.1 - hipRAND + hipRAND 2.11.1 - hipSOLVER + hipSOLVER 2.3.0 - hipSPARSE + hipSPARSE 3.1.2 - hipSPARSELt + hipSPARSELt 0.2.2 - rocALUTION + rocALUTION 3.2.1 - rocBLAS + rocBLAS 4.3.0 - rocFFT + rocFFT 1.0.31 - rocRAND + rocRAND 3.2.0 - rocSOLVER + rocSOLVER 3.27.0 - rocSPARSE + rocSPARSE 3.3.0 - rocWMMA + rocWMMA 1.6.0 - Tensile + Tensile 4.42.0 @@ -249,22 +227,22 @@ Click {fab}`github` to go to the component's source code on GitHub. Primitives - hipCUB + hipCUB 3.3.0 - hipTensor + hipTensor 1.4.0 - rocPRIM + rocPRIM 3.3.0 - rocThrust + rocThrust 3.3.0 @@ -273,27 +251,27 @@ Click {fab}`github` to go to the component's source code on GitHub. Tools System management - AMD SMI - 24.7.1 ⇒ 24.7.1 - + AMD SMI + 24.7.1 + - ROCm Data Center Tool + ROCm Data Center Tool 0.3.0 - rocminfo + rocminfo 1.0.0 - ROCm SMI + ROCm SMI 7.4.0 - ROCmValidationSuite + ROCmValidationSuite 1.1.0 @@ -302,38 +280,38 @@ Click {fab}`github` to go to the component's source code on GitHub. Performance - ROCm Bandwidth + ROCm Bandwidth Test 1.4.0 - ROCm Compute Profiler - 3.0.0 ⇒ 3.0.0 + ROCm Compute Profiler + 3.0.0 - ROCm Systems Profiler - 0.1.0 ⇒ 0.1.0 + ROCm Systems Profiler + 0.1.0 ⇒ 0.1.1 - ROCProfiler - 2.0.0 + ROCProfiler + 2.0.0 ⇒ 2.0.0 - ROCprofiler-SDK - 0.5.0 + ROCprofiler-SDK + 0.5.0 ⇒ 0.5.0 - ROCTracer + ROCTracer 4.1.0 @@ -343,32 +321,32 @@ Click {fab}`github` to go to the component's source code on GitHub. Development - HIPIFY - 18.0.0 ⇒ 18.0.0 + HIPIFY + 18.0.0 - ROCdbgapi + ROCdbgapi 0.77.0 - ROCm CMake + ROCm CMake 0.14.0 - ROCm Debugger (ROCgdb) + ROCm Debugger (ROCgdb) 15.2 - ROCr Debug Agent + ROCr Debug Agent 2.0.3 Compilers - HIPCC + HIPCC 1.1.1 - llvm-project + llvm-project 18.0.0 @@ -393,12 +371,12 @@ Click {fab}`github` to go to the component's source code on GitHub. Runtimes - HIP - 6.3.0 ⇒ 6.3.1 + HIP + 6.3.1 ⇒ 6.3.2 - ROCr Runtime + ROCr Runtime 1.14.0 @@ -410,133 +388,109 @@ Click {fab}`github` to go to the component's source code on GitHub. The following sections describe key changes to ROCm components. -### **AMD SMI** (24.7.1) - -#### Changed - -* `amd-smi monitor` displays `VCLOCK` and `DCLOCK` instead of `ENC_CLOCK` and `DEC_CLOCK`. - -#### Resolved issues - -* Fixed `amd-smi monitor`'s reporting of encode and decode information. `VCLOCK` and `DCLOCK` are - now associated with both `ENC_UTIL` and `DEC_UTIL`. - -```{note} -See the full [AMD SMI changelog](https://github.com/ROCm/amdsmi/blob/6.3.x/CHANGELOG.md) for more details and examples. -``` - -### **HIP** (6.3.1) +### **HIP** (6.3.2) #### Added -* An activeQueues set that tracks only the queues that have a command submitted to them, which allows fast iteration in ``waitActiveStreams``. +* Tracking of Heterogeneous System Architecture (HSA) handlers: + - Adds an atomic counter to track the outstanding HSA handlers. + - Waits on CPU for the callbacks if the number exceeds the defined value. +* Codes to capture Architected Queueing Language (AQL) packets for HIP graph memory copy node between host and device. HIP enqueues AQL packets during graph launch. +* Control to use system pool implementation in runtime commands handling. By default, it is disabled. +* A new path to avoid `WaitAny` calls in `AsyncEventsLoop`. The new path is selected by default. +* Runtime control on decrement counter only if the event is popped. There is a new way to restore dead signals cleanup for the old path. +* A new logic in runtime to track the age of events from the kernel mode driver. + +#### Optimized + +* HSA callback performance. The HIP runtime creates and submits commands in the queue and interacts with HSA through a callback function. HIP waits for the CPU status from HSA to optimize the handling of events, profiling, commands, and HSA signals for higher performance. +* Runtime optimization which combines all logic of `WaitAny` in a single processing loop and avoids extra memory allocations or reference counting. The runtime won't spin on the CPU if all events are busy. +* Multi-threaded dispatches for performance improvement. +* Command submissions and processing between CPU and GPU by introducing a way to limit the software batch size. +* Switch to `std::shared_mutex` in book/keep logic in streams from multiple threads simultaneously, for performance improvement in specific customer applications. +* `std::shared_mutex` is used in memory object mapping, for performance improvement. #### Resolved issues -* A deadlock in a specific customer application by preventing hipLaunchKernel latency degradation with number of idle streams. +* Race condition in multi-threaded producer/consumer scenario with `hipMallocFromPoolAsync`. +* Segmentation fault with `hipStreamLegacy` while using the API `hipStreamWaitEvent`. +* Usage of `hipStreamLegacy` in HIP event record. +* A soft hang in graph execution process from HIP user object. The fix handles the release of graph execution object properly considering synchronization on the device/stream. The user application now behaves the same with `hipUserObject` on both the AMD ROCm and NVIDIA CUDA platforms. -### **HIPIFY** (18.0.0) +### **hipfort** (0.5.1) #### Added -* Support for: - * NVIDIA CUDA 12.6.2 - * cuDNN 9.5.1 - * LLVM 19.1.3 - * Full `hipBLAS` 64-bit APIs - * Full `rocBLAS` 64-bit APIs +* Support for building with LLVM Flang. #### Resolved issues -* Added missing support for device intrinsics and built-ins: `__all_sync`, `__any_sync`, `__ballot_sync`, `__activemask`, `__match_any_sync`, `__match_all_sync`, `__shfl_sync`, `__shfl_up_sync`, `__shfl_down_sync`, and `__shfl_xor_sync`. +* Fixed the exported `hipfort::hipsparse` CMake target. -### **MIVisionX** (3.1.0) +### **ROCm Systems Profiler** (0.1.1) + +#### Resolved issues + +* Fixed an error when building from source on some SUSE and RHEL systems when using the `ROCPROFSYS_BUILD_DYNINST` option. + +### **ROCProfiler** (2.0.0) #### Changed -* AMD Clang is now the default CXX and C compiler. -* The dependency on rocDecode has been removed and automatic rocDecode installation is now disabled in the setup script. +* Replaced `CU_UTILIZATION` metric with `SIMD_UTILIZATION` for better accuracy. #### Resolved issues -* Canny failure on Instinct MI300 has been fixed. -* Ubuntu 24.04 CTest failures have been fixed. +* Fixed the `VALUBusy` and `SALUBusy` activity metrics for accuracy on MI300. -#### Known issues - -* CentOS, Red Hat, and SLES requires the manual installation of `OpenCV` and `FFMPEG`. -* Hardware decode requires that ROCm is installed with `--usecase=graphics`. - -#### Upcoming changes - -* Optimized audio augmentations support for VX_RPP. - -### **RCCL** (2.21.5) - -#### Changed - -* Enhanced the user documentation. - -#### Resolved Issues - -* Corrected some user help strings in `install.sh`. - -### **ROCm Compute Profiler** (3.0.0) - -#### Resolved issues - -* Fixed a minor issue for users upgrading to ROCm 6.3 from 6.2 post-rename from `omniperf`. - See [ROCm Compute Profiler and ROCm Systems Profiler post-upgrade issues](#rocm-compute-profiler-and-rocm-systems-profiler-post-upgrade-issues). - -### **ROCm Systems Profiler** (0.1.0) +### **ROCprofiler-SDK** (0.5.0) #### Added -* Improvements to support OMPT target offload. +* Support for system-wide collection of SQ counters across all HSA processes. -#### Resolved issues +#### Changed -* Fixed an issue with generated Perfetto files. See [issue #3767](https://github.com/ROCm/ROCm/issues/3767) for more information. +* `rocprofiler_sample_device_counting_service` API updated to return counter output immediately, when called in synchronous mode. -* Fixed an issue with merging multiple `.proto` files. +### **ROCprofiler-SDK** (0.5.0) -* Fixed an issue causing GPU resource data to be missing from traces of Instinct MI300A systems. +#### Added -* Fixed a minor issue for users upgrading to ROCm 6.3 from 6.2 post-rename from `omnitrace`. - See [ROCm Compute Profiler and ROCm Systems Profiler post-upgrade issues](#rocm-compute-profiler-and-rocm-systems-profiler-post-upgrade-issues). +* SIMD_UTILIZATION metric. +* New ROCm Data Center (RDC) ops metrics. ## ROCm known issues ROCm known issues are noted on {fab}`github` [GitHub](https://github.com/ROCm/ROCm/labels/Verified%20Issue). For known issues related to individual components, review the [Detailed component changes](#detailed-component-changes). -### PCI Express Qualification Tool failure on Debian 12 - -The PCI Express Qualification Tool (PEQT) module present in the ROCm Validation Suite (RVS) might fail due to the segmentation issue in Debian 12 (bookworm). This will result in failure to determine the characteristics of the PCIe interconnect between the host platform and the GPU like support for Gen 3 atomic completers, DMA transfer statistics, link speed, and link width. The standard PCIe command `lspci` can be used as an alternative to view the characteristics of the PCIe bus interconnect with the GPU. This issue is under investigation and will be addressed in a future release. See [GitHub issue #4175](https://github.com/ROCm/ROCm/issues/4175). - ## ROCm resolved issues The following are previously known issues resolved in this release. For resolved issues related to individual components, review the [Detailed component changes](#detailed-component-changes). -### Instinct MI300 series: backward weights convolution performance issue +### TransferBench packages not functional -Fixed a performance issue affecting certain tensor shapes during backward weights convolution when using FP16 or FP32 data types on Instinct MI300 series accelerators. See [GitHub issue #4080](https://github.com/ROCm/ROCm/issues/4080). +Issue with TransferBench packages not being compiled properly has been fixed. For more information, See [GitHub issue #4081](https://github.com/ROCm/ROCm/issues/4081). -### ROCm Compute Profiler and ROCm Systems Profiler post-upgrade issues +### ROCm Compute Profiler CTest failure in CI -Packaging metadata for ROCm Compute Profiler (`rocprofiler-compute`) and ROCm Systems Profiler -(`rocprofiler-systems`) has been updated to handle the renaming from Omniperf and Omnitrace, -respectively. This fixes minor issues when upgrading from ROCm 6.2 to 6.3. For more information, see the GitHub issues -[#4082](https://github.com/ROCm/ROCm/issues/4082) and -[#4083](https://github.com/ROCm/ROCm/issues/4083). +When running the ROCm Compute Profiler (`rocprof-compute`) CTest in the Azure CI environment, the +`rocprof-compute` execution test failed. This issue was due to an outdated test file that was not renamed +(`omniperf` to `rocprof-compute`), and the `ROCM_PATH` environment variable not being set in +the Azure CI environment, resulting in the tool being unable to extract chip information as expected. +This issue has been fixed in the ROCm 6.3.2 release. See [GitHub issue #4085](https://github.com/ROCm/ROCm/issues/4085). -### Stale file due to OpenCL ICD loader deprecation +### MIVisionX memory access fault in Canny edge detection -When upgrading from ROCm 6.2.x to ROCm 6.3.0, the issue of removal of the `rocm-icd-loader` package -leaving a stale file in the old `rocm-6.2.x` directory has been resolved. The stale files left during -the upgrade from ROCm 6.2.x to ROCm 6.3.0 will be removed when upgrading to ROCm 6.3.1. For more -information, see [GitHub issue #4084](https://github.com/ROCm/ROCm/issues/4084). +An issue where Canny edge detection kernels accessed out-of-bounds memory locations while +computing gradient intensities on edge pixels has been fixed. This issue was isolated to +Canny-specific use cases on Instinct MI300 series accelerators. See [GitHub issue #4086](https://github.com/ROCm/ROCm/issues/4086). + +### AMD VCN instability with rocDecode + +A firmware crash on gfx942 devices when AMD Video Core Next (VCN) was used for rocDecode operations has been resolved. ## ROCm upcoming changes @@ -546,7 +500,7 @@ The following changes to the ROCm software stack are anticipated for future rele The `__AMDGCN_WAVEFRONT_SIZE__` macro will be deprecated in an upcoming release. It is recommended to remove any use of this macro. For more information, see [AMDGPU -support](https://rocm.docs.amd.com/projects/llvm-project/en/docs-6.3.1/LLVM/clang/html/AMDGPUSupport.html). +support](https://rocm.docs.amd.com/projects/llvm-project/en/docs-6.3.2/LLVM/clang/html/AMDGPUSupport.html). ### HIPCC Perl scripts deprecation diff --git a/docs/about/license.md b/docs/about/license.md index b32e2fc06..6614547e3 100644 --- a/docs/about/license.md +++ b/docs/about/license.md @@ -25,15 +25,15 @@ additional licenses. Please review individual repositories for more information. | Component | License | |:---------------------|:-------------------------| -| [AMD Compute Language Runtime (CLR)](https://github.com/ROCm/clr) | [MIT](https://github.com/ROCm/clr/blob/develop/LICENCE) | -| [AMD SMI](https://github.com/ROCm/amdsmi) | [MIT](https://github.com/ROCm/amdsmi/blob/develop/LICENSE) | +| [AMD Compute Language Runtime (CLR)](https://github.com/ROCm/clr) | [MIT](https://github.com/ROCm/clr/blob/amd-staging/LICENCE) | +| [AMD SMI](https://github.com/ROCm/amdsmi) | [MIT](https://github.com/ROCm/amdsmi/blob/amd-staging/LICENSE) | | [aomp](https://github.com/ROCm/aomp/) | [Apache 2.0](https://github.com/ROCm/aomp/blob/aomp-dev/LICENSE) | | [aomp-extras](https://github.com/ROCm/aomp-extras/) | [MIT](https://github.com/ROCm/aomp-extras/blob/aomp-dev/LICENSE) | | [Code Object Manager (Comgr)](https://github.com/ROCm/llvm-project/tree/amd-staging/amd/comgr) | [The University of Illinois/NCSA](https://github.com/ROCm/llvm-project/blob/amd-staging/amd/comgr/LICENSE.txt) | | [Composable Kernel](https://github.com/ROCm/composable_kernel) | [MIT](https://github.com/ROCm/composable_kernel/blob/develop/LICENSE) | | [half](https://github.com/ROCm/half/) | [MIT](https://github.com/ROCm/half/blob/rocm/LICENSE.txt) | -| [HIP](https://github.com/ROCm/HIP/) | [MIT](https://github.com/ROCm/HIP/blob/develop/LICENSE.txt) | -| [hipamd](https://github.com/ROCm/clr/tree/develop/hipamd) | [MIT](https://github.com/ROCm/clr/blob/develop/hipamd/LICENSE.txt) | +| [HIP](https://github.com/ROCm/HIP/) | [MIT](https://github.com/ROCm/HIP/blob/amd-staging/LICENSE.txt) | +| [hipamd](https://github.com/ROCm/clr/tree/amd-staging/hipamd) | [MIT](https://github.com/ROCm/clr/blob/amd-staging/hipamd/LICENSE.txt) | | [hipBLAS](https://github.com/ROCm/hipBLAS/) | [MIT](https://github.com/ROCm/hipBLAS/blob/develop/LICENSE.md) | | [hipBLASLt](https://github.com/ROCm/hipBLASLt/) | [MIT](https://github.com/ROCm/hipBLASLt/blob/develop/LICENSE.md) | | [HIPCC](https://github.com/ROCm/llvm-project/tree/amd-staging/amd/hipcc) | [MIT](https://github.com/ROCm/llvm-project/blob/amd-staging/amd/hipcc/LICENSE.txt) | @@ -58,7 +58,7 @@ additional licenses. Please review individual repositories for more information. | [ROCdbgapi](https://github.com/ROCm/ROCdbgapi/) | [MIT](https://github.com/ROCm/ROCdbgapi/blob/amd-staging/LICENSE.txt) | | [rocDecode](https://github.com/ROCm/rocDecode) | [MIT](https://github.com/ROCm/rocDecode/blob/develop/LICENSE) | | [rocFFT](https://github.com/ROCm/rocFFT/) | [MIT](https://github.com/ROCm/rocFFT/blob/develop/LICENSE.md) | -| [ROCgdb](https://github.com/ROCm/ROCgdb/) | [GNU General Public License v3.0](https://github.com/ROCm/ROCgdb/blob/amd-master/COPYING3) | +| [ROCgdb](https://github.com/ROCm/ROCgdb/) | [GNU General Public License v3.0](https://github.com/ROCm/ROCgdb/blob/amd-staging/COPYING3) | | [rocJPEG](https://github.com/ROCm/rocJPEG/) | [MIT](https://github.com/ROCm/rocJPEG/blob/develop/LICENSE) | | [ROCK-Kernel-Driver](https://github.com/ROCm/ROCK-Kernel-Driver/) | [GPL 2.0 WITH Linux-syscall-note](https://github.com/ROCm/ROCK-Kernel-Driver/blob/master/COPYING) | | [rocminfo](https://github.com/ROCm/rocminfo/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocminfo/blob/amd-staging/License.txt) | @@ -67,20 +67,20 @@ additional licenses. Please review individual repositories for more information. | [ROCm Communication Collectives Library (RCCL)](https://github.com/ROCm/rccl/) | [Custom](https://github.com/ROCm/rccl/blob/develop/LICENSE.txt) | | [ROCm-Core](https://github.com/ROCm/rocm-core) | [MIT](https://github.com/ROCm/rocm-core/blob/master/copyright) | | [ROCm Compute Profiler](https://github.com/ROCm/rocprofiler-compute) | [MIT](https://github.com/ROCm/rocprofiler-compute/blob/amd-staging/LICENSE) | -| [ROCm Data Center (RDC)](https://github.com/ROCm/rdc/) | [MIT](https://github.com/ROCm/rdc/blob/develop/LICENSE) | +| [ROCm Data Center (RDC)](https://github.com/ROCm/rdc/) | [MIT](https://github.com/ROCm/rdc/blob/amd-staging/LICENSE) | | [ROCm-Device-Libs](https://github.com/ROCm/llvm-project/tree/amd-staging/amd/device-libs) | [The University of Illinois/NCSA](https://github.com/ROCm/llvm-project/blob/amd-staging/amd/device-libs/LICENSE.TXT) | -| [ROCm-OpenCL-Runtime](https://github.com/ROCm/clr/tree/develop/opencl) | [MIT](https://github.com/ROCm/clr/blob/develop/opencl/LICENSE.txt) | +| [ROCm-OpenCL-Runtime](https://github.com/ROCm/clr/tree/amd-staging/opencl) | [MIT](https://github.com/ROCm/clr/blob/amd-staging/opencl/LICENSE.txt) | | [ROCm Performance Primitives (RPP)](https://github.com/ROCm/rpp) | [MIT](https://github.com/ROCm/rpp/blob/develop/LICENSE) | -| [ROCm SMI Lib](https://github.com/ROCm/rocm_smi_lib/) | [MIT](https://github.com/ROCm/rocm_smi_lib/blob/develop/License.txt) | +| [ROCm SMI Lib](https://github.com/ROCm/rocm_smi_lib/) | [MIT](https://github.com/ROCm/rocm_smi_lib/blob/amd-staging/License.txt) | | [ROCm Systems Profiler](https://github.com/ROCm/rocprofiler-systems) | [MIT](https://github.com/ROCm/rocprofiler-systems/blob/amd-staging/LICENSE) | | [ROCm Validation Suite](https://github.com/ROCm/ROCmValidationSuite/) | [MIT](https://github.com/ROCm/ROCmValidationSuite/blob/master/LICENSE) | | [rocPRIM](https://github.com/ROCm/rocPRIM/) | [MIT](https://github.com/ROCm/rocPRIM/blob/develop/LICENSE.txt) | -| [ROCProfiler](https://github.com/ROCm/rocprofiler/) | [MIT](https://github.com/ROCm/rocprofiler/blob/amd-master/LICENSE) | +| [ROCProfiler](https://github.com/ROCm/rocprofiler/) | [MIT](https://github.com/ROCm/rocprofiler/blob/amd-staging/LICENSE) | | [ROCprofiler-SDK](https://github.com/ROCm/rocprofiler-sdk) | [MIT](https://github.com/ROCm/rocprofiler-sdk/blob/amd-mainline/LICENSE) | | [rocPyDecode](https://github.com/ROCm/rocPyDecode) | [MIT](https://github.com/ROCm/rocPyDecode/blob/develop/LICENSE) | | [rocRAND](https://github.com/ROCm/rocRAND/) | [MIT](https://github.com/ROCm/rocRAND/blob/develop/LICENSE.txt) | | [ROCr Debug Agent](https://github.com/ROCm/rocr_debug_agent/) | [The University of Illinois/NCSA](https://github.com/ROCm/rocr_debug_agent/blob/amd-staging/LICENSE.txt) | -| [ROCR-Runtime](https://github.com/ROCm/ROCR-Runtime/) | [The University of Illinois/NCSA](https://github.com/ROCm/ROCR-Runtime/blob/master/LICENSE.txt) | +| [ROCR-Runtime](https://github.com/ROCm/ROCR-Runtime/) | [The University of Illinois/NCSA](https://github.com/ROCm/ROCR-Runtime/blob/amd-staging/LICENSE.txt) | | [rocSOLVER](https://github.com/ROCm/rocSOLVER/) | [BSD-2-Clause](https://github.com/ROCm/rocSOLVER/blob/develop/LICENSE.md) | | [rocSPARSE](https://github.com/ROCm/rocSPARSE/) | [MIT](https://github.com/ROCm/rocSPARSE/blob/develop/LICENSE.md) | | [rocThrust](https://github.com/ROCm/rocThrust/) | [Apache 2.0](https://github.com/ROCm/rocThrust/blob/develop/LICENSE) | @@ -99,7 +99,7 @@ repositories to distinguish from open sourced packages. The following additional terms and conditions apply to your use of ROCm technical documentation. ``` -©2023 - 2024 Advanced Micro Devices, Inc. All rights reserved. +©2023 - 2025 Advanced Micro Devices, Inc. All rights reserved. The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions, and typographical errors. The diff --git a/docs/compatibility/compatibility-matrix-historical-6.0.csv b/docs/compatibility/compatibility-matrix-historical-6.0.csv index 83d2bc4c8..73178e6a8 100644 --- a/docs/compatibility/compatibility-matrix-historical-6.0.csv +++ b/docs/compatibility/compatibility-matrix-historical-6.0.csv @@ -1,128 +1,120 @@ -ROCm Version,6.3.1,6.3.0,6.2.4,6.2.2,6.2.1,6.2.0, 6.1.2, 6.1.1, 6.1.0, 6.0.2, 6.0.0 - :ref:`Operating systems & kernels `,Ubuntu 24.04.2,Ubuntu 24.04.2,"Ubuntu 24.04.1, 24.04","Ubuntu 24.04.1, 24.04","Ubuntu 24.04.1, 24.04",Ubuntu 24.04,,,,, - ,Ubuntu 22.04.5,Ubuntu 22.04.5,"Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3, 22.04.2","Ubuntu 22.04.4, 22.04.3, 22.04.2" - ,,,,,,,"Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5" - ,"RHEL 9.5, 9.4","RHEL 9.5, 9.4","RHEL 9.4, 9.3","RHEL 9.4, 9.3","RHEL 9.4, 9.3","RHEL 9.4, 9.3","RHEL 9.4, 9.3, 9.2","RHEL 9.4, 9.3, 9.2","RHEL 9.4, 9.3, 9.2","RHEL 9.3, 9.2","RHEL 9.3, 9.2" - ,RHEL 8.10,RHEL 8.10,"RHEL 8.10, 8.9","RHEL 8.10, 8.9","RHEL 8.10, 8.9","RHEL 8.10, 8.9","RHEL 8.9, 8.8","RHEL 8.9, 8.8","RHEL 8.9, 8.8","RHEL 8.9, 8.8","RHEL 8.9, 8.8" - ,"SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP5, SP4","SLES 15 SP5, SP4","SLES 15 SP5, SP4","SLES 15 SP5, SP4","SLES 15 SP5, SP4" - ,,,,,,,CentOS 7.9,CentOS 7.9,CentOS 7.9,CentOS 7.9,CentOS 7.9 - ,Oracle Linux 8.10 [#mic300x-past-60]_,Oracle Linux 8.10 [#mic300x-past-60]_,Oracle Linux 8.9 [#mic300x-past-60]_,Oracle Linux 8.9 [#mic300x-past-60]_,Oracle Linux 8.9 [#mic300x-past-60]_,Oracle Linux 8.9 [#mic300x-past-60]_,Oracle Linux 8.9 [#mic300x-past-60]_,Oracle Linux 8.9 [#mic300x-past-60]_,,, -,Debian 12 [#mic300x-past-60]_,,,,,,,,,, - ,.. _architecture-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`Architecture `,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3 - ,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2 - ,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA - ,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3 - ,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2 - ,.. _gpu-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`GPU / LLVM target `,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100 - ,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030 - ,gfx942,gfx942,gfx942 [#mi300_624-past-60]_,gfx942 [#mi300_622-past-60]_,gfx942 [#mi300_621-past-60]_,gfx942 [#mi300_620-past-60]_, gfx942 [#mi300_612-past-60]_, gfx942 [#mi300_611-past-60]_, gfx942 [#mi300_610-past-60]_, gfx942 [#mi300_602-past-60]_, gfx942 [#mi300_600-past-60]_ - ,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a - ,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908 - ,,,,,,,,,,, - FRAMEWORK SUPPORT,.. _framework-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`PyTorch <../compatibility/pytorch-compatibility>`,"2.4, 2.3, 2.2, 2.1, 2.0, 1.13","2.4, 2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13" - :doc:`TensorFlow `,"2.17.0, 2.16.2, 2.15.1","2.17.0, 2.16.2, 2.15.1","2.16.1, 2.15.1, 2.14.1","2.16.1, 2.15.1, 2.14.1","2.16.1, 2.15.1, 2.14.1","2.16.1, 2.15.1, 2.14.1","2.15.0, 2.14.0, 2.13.1","2.15.0, 2.14.0, 2.13.1","2.15.0, 2.14.0, 2.13.1","2.14.0, 2.13.1, 2.12.1","2.14.0, 2.13.1, 2.12.1" - :doc:`JAX `,0.4.35,0.4.35,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26 - `ONNX Runtime `_,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.14.1,1.14.1 - ,,,,,,,,,,, - THIRD PARTY COMMS,.. _thirdpartycomms-support-compatibility-matrix-past-60:,,,,,,,,,, - `UCC `_,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.2.0,>=1.2.0 - `UCX `_,>=1.15.0,>=1.15.0,>=1.15.0,>=1.15.0,>=1.15.0,>=1.15.0,>=1.14.1,>=1.14.1,>=1.14.1,>=1.14.1,>=1.14.1 - ,,,,,,,,,,, - THIRD PARTY ALGORITHM,.. _thirdpartyalgorithm-support-compatibility-matrix-past-60:,,,,,,,,,, - Thrust,2.3.2,2.3.2,2.2.0,2.2.0,2.2.0,2.2.0,2.1.0,2.1.0,2.1.0,2.0.1,2.0.1 - CUB,2.3.2,2.3.2,2.2.0,2.2.0,2.2.0,2.2.0,2.1.0,2.1.0,2.1.0,2.0.1,2.0.1 -,,,,,,,,,,, - ,,,,,,,,,,, - KMD & USER SPACE [#kfd_support-past-60]_,.. _kfd-userspace-support-compatibility-matrix-past-60:,,,,,,,,, - Tested user space versions,"6.3.x, 6.2.x, 6.1.x","6.3.x, 6.2.x, 6.1.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x, 5.7.x","6.3.x, 6.2.x, 6.1.x, 6.0.x, 5.7.x","6.3.x, 6.2.x, 6.1.x, 6.0.x, 5.7.x","6.2.x, 6.1.x, 6.0.x, 5.7.x, 5.6.x","6.2.x, 6.1.x, 6.0.x, 5.7.x, 5.6.x" - ,,,,,,,,,,, - ML & COMPUTER VISION,.. _mllibs-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`Composable Kernel `,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0 - :doc:`MIGraphX `,2.11.0,2.11.0,2.10.0,2.10.0,2.10.0,2.10.0,2.9.0,2.9.0,2.9.0,2.8.0,2.8.0 - :doc:`MIOpen `,3.3.0,3.3.0,3.2.0,3.2.0,3.2.0,3.2.0,3.1.0,3.1.0,3.1.0,3.0.0,3.0.0 - :doc:`MIVisionX `,3.1.0,3.1.0,3.0.0,3.0.0,3.0.0,3.0.0,2.5.0,2.5.0,2.5.0,2.5.0,2.5.0 - :doc:`rocAL `,2.1.0,2.1.0,2.0.0,2.0.0,2.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0 - :doc:`rocDecode `,0.8.0,0.8.0,0.6.0,0.6.0,0.6.0,0.6.0,0.6.0,0.5.0,0.5.0,N/A,N/A - :doc:`rocJPEG `,0.6.0,0.6.0,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A - :doc:`rocPyDecode `,0.2.0,0.2.0,0.1.0,0.1.0,0.1.0,0.1.0,N/A,N/A,N/A,N/A,N/A - :doc:`RPP `,1.9.1,1.9.1,1.8.0,1.8.0,1.8.0,1.8.0,1.5.0,1.5.0,1.5.0,1.4.0,1.4.0 - ,,,,,,,,,,, - COMMUNICATION,.. _commlibs-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`RCCL `,2.21.5,2.21.5,2.20.5,2.20.5,2.20.5,2.20.5,2.18.6,2.18.6,2.18.6,2.18.3,2.18.3 - ,,,,,,,,,,, - MATH LIBS,.. _mathlibs-support-compatibility-matrix-past-60:,,,,,,,,,, - `half `_ ,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0 - :doc:`hipBLAS `,2.3.0,2.3.0,2.2.0,2.2.0,2.2.0,2.2.0,2.1.0,2.1.0,2.1.0,2.0.0,2.0.0 - :doc:`hipBLASLt `,0.10.0,0.10.0,0.8.0,0.8.0,0.8.0,0.8.0,0.7.0,0.7.0,0.7.0,0.6.0,0.6.0 - :doc:`hipFFT `,1.0.17,1.0.17,1.0.16,1.0.15,1.0.15,1.0.14,1.0.14,1.0.14,1.0.14,1.0.13,1.0.13 - :doc:`hipfort `,0.5.0,0.5.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0 - :doc:`hipRAND `,2.11.1,2.11.0,2.11.1,2.11.0,2.11.0,2.11.0,2.10.16,2.10.16,2.10.16,2.10.16,2.10.16 -,,,,,,,,,,, - :doc:`hipSOLVER `,2.3.0,2.3.0,2.2.0,2.2.0,2.2.0,2.2.0,2.1.1,2.1.1,2.1.0,2.0.0,2.0.0 - :doc:`hipSPARSE `,3.1.2,3.1.2,3.1.1,3.1.1,3.1.1,3.1.1,3.0.1,3.0.1,3.0.1,3.0.0,3.0.0 - :doc:`hipSPARSELt `,0.2.2,0.2.2,0.2.1,0.2.1,0.2.1,0.2.1,0.2.0,0.1.0,0.1.0,0.1.0,0.1.0 - :doc:`rocALUTION `,3.2.1,3.2.1,3.2.1,3.2.0,3.2.0,3.2.0,3.1.1,3.1.1,3.1.1,3.0.3,3.0.3 - :doc:`rocBLAS `,4.3.0,4.3.0,4.2.4,4.2.1,4.2.1,4.2.0,4.1.2,4.1.0,4.1.0,4.0.0,4.0.0 - :doc:`rocFFT `,1.0.31,1.0.31,1.0.30,1.0.29,1.0.29,1.0.28,1.0.27,1.0.27,1.0.26,1.0.25,1.0.23 - :doc:`rocRAND `,3.2.0,3.2.0,3.1.1,3.1.0,3.1.0,3.1.0,3.0.1,3.0.1,3.0.1,3.0.0,2.10.17 - :doc:`rocSOLVER `,3.27.0,3.27.0,3.26.2,3.26.0,3.26.0,3.26.0,3.25.0,3.25.0,3.25.0,3.24.0,3.24.0 - :doc:`rocSPARSE `,3.3.0,3.3.0,3.2.1,3.2.0,3.2.0,3.2.0,3.1.2,3.1.2,3.1.2,3.0.2,3.0.2 - :doc:`rocWMMA `,1.6.0,1.6.0,1.5.0,1.5.0,1.5.0,1.5.0,1.4.0,1.4.0,1.4.0,1.3.0,1.3.0 - :doc:`Tensile `,4.42.0,4.42.0,4.41.0,4.41.0,4.41.0,4.41.0,4.40.0,4.40.0,4.40.0,4.39.0,4.39.0 - ,,,,,,,,,,, - PRIMITIVES,.. _primitivelibs-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`hipCUB `,3.3.0,3.3.0,3.2.1,3.2.0,3.2.0,3.2.0,3.1.0,3.1.0,3.1.0,3.0.0,3.0.0 - :doc:`hipTensor `,1.4.0,1.4.0,1.3.0,1.3.0,1.3.0,1.3.0,1.2.0,1.2.0,1.2.0,1.1.0,1.1.0 - :doc:`rocPRIM `,3.3.0,3.3.0,3.2.2,3.2.0,3.2.0,3.2.0,3.1.0,3.1.0,3.1.0,3.0.0,3.0.0 - :doc:`rocThrust `,3.3.0,3.3.0,3.1.1,3.1.0,3.1.0,3.0.1,3.0.1,3.0.1,3.0.1,3.0.0,3.0.0 - ,,,,,,,,,,, - SUPPORT LIBS,,,,,,,,,,, - `hipother `_,6.3.42133,6.3.42131,6.2.41134,6.2.41134,6.2.41134,6.2.41133,6.1.40093,6.1.40092,6.1.40091,6.1.32831,6.1.32830 -,,,,,,,,,,, - `rocm-core `_,6.3.1,6.3.0,6.2.4,6.2.2,6.2.1,6.2.0,6.1.2,6.1.1,6.1.0,6.0.2,6.0.0 - `ROCT-Thunk-Interface `_,N/A [#ROCT-rocr-past-60]_,N/A [#ROCT-rocr-past-60]_,20240607.5.7,20240607.5.7,20240607.4.05,20240607.1.4246,20240125.5.08,20240125.5.08,20240125.3.30,20231016.2.245,20231016.2.245 - ,,,,,,,,,,, - SYSTEM MGMT TOOLS,.. _tools-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`AMD SMI `,24.7.1,24.7.1,24.6.3,24.6.3,24.6.3,24.6.2,24.5.1,24.5.1,24.4.1,23.4.2,23.4.2 - :doc:`ROCm Data Center Tool `,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0 - :doc:`rocminfo `,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0 - :doc:`ROCm SMI `,7.4.0,7.4.0,7.3.0,7.3.0,7.3.0,7.3.0,7.2.0,7.0.0,7.0.0,6.0.2,6.0.0 - :doc:`ROCm Validation Suite `,1.1.0,1.1.0,1.0.60204,1.0.60202,1.0.60201,1.0.60200,1.0.60102,1.0.60101,1.0.60100,1.0.60002,1.0.60000 - ,,,,,,,,,,, - PERFORMANCE TOOLS,,,,,,,,,,, - :doc:`ROCm Bandwidth Test `,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0 - :doc:`ROCm Compute Profiler `,3.0.0,3.0.0,2.0.1,2.0.1,2.0.1,2.0.1,N/A,N/A,N/A,N/A,N/A - :doc:`ROCm Systems Profiler `,0.1.0,0.1.0,1.11.2,1.11.2,1.11.2,1.11.2,N/A,N/A,N/A,N/A,N/A - :doc:`ROCProfiler `,2.0.60301,2.0.60300,2.0.60204,2.0.60202,2.0.60201,2.0.60200,2.0.60102,2.0.60101,2.0.60100,2.0.60002,2.0.60000 -,,,,,,,,,,, - :doc:`ROCprofiler-SDK `,0.5.0,0.5.0,0.4.0,0.4.0,0.4.0,0.4.0,N/A,N/A,N/A,N/A,N/A - :doc:`ROCTracer `,4.1.60301,4.1.60300,4.1.60204,4.1.60202,4.1.60201,4.1.60200,4.1.60102,4.1.60101,4.1.60100,4.1.60002,4.1.60000 -,,,,,,,,,,, - ,,,,,,,,,,, - DEVELOPMENT TOOLS,,,,,,,,,,, - :doc:`HIPIFY `,18.0.0.24491,18.0.0.24455,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 -,,,,,,,,,,, - :doc:`ROCm CMake `,0.14.0,0.14.0,0.13.0,0.13.0,0.13.0,0.13.0,0.12.0,0.12.0,0.12.0,0.11.0,0.11.0 - :doc:`ROCdbgapi `,0.77.0,0.77.0,0.76.0,0.76.0,0.76.0,0.76.0,0.71.0,0.71.0,0.71.0,0.71.0,0.71.0 - :doc:`ROCm Debugger (ROCgdb) `,15.2.0,15.2.0,14.2.0,14.2.0,14.2.0,14.2.0,14.1.0,14.1.0,14.1.0,13.2.0,13.2.0 - `rocprofiler-register `_,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.3.0,0.3.0,0.3.0,N/A,N/A - :doc:`ROCr Debug Agent `,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3 - ,,,,,,,,,,, - COMPILERS,.. _compilers-support-compatibility-matrix-past-60:,,,,,,,,,, - `clang-ocl `_,N/A,N/A,N/A,N/A,N/A,N/A,0.5.0,0.5.0,0.5.0,0.5.0,0.5.0 - :doc:`hipCC `,1.1.1,1.1.1,1.1.1,1.1.1,1.1.1,1.1.1,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0 - `Flang `_,18.0.0.24491,18.0.0.24455,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 - :doc:`llvm-project `,18.0.0.24455,18.0.0.24491,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 - `OpenMP `_,18.0.0.24455,18.0.0.24491,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 -,,,,,,,,,,, - ,,,,,,,,,,, - RUNTIMES,.. _runtime-support-compatibility-matrix-past-60:,,,,,,,,,, - :doc:`AMD CLR `,6.3.42133,6.3.42131,6.2.41134,6.2.41134,6.2.41134,6.2.41133,6.1.40093,6.1.40092,6.1.40091,6.1.32831,6.1.32830 -,,,,,,,,,,, - :doc:`HIP `,6.3.42133,6.3.42131,6.2.41134,6.2.41134,6.2.41134,6.2.41133,6.1.40093,6.1.40092,6.1.40091,6.1.32831,6.1.32830 -,,,,,,,,,,, - `OpenCL Runtime `_,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0 - :doc:`ROCr Runtime `,1.14.0,1.14.0,1.14.0,1.14.0,1.14.0,1.13.0,1.13.0,1.13.0,1.13.0,1.12.0,1.12.0 +ROCm Version,6.3.2,6.3.1,6.3.0,6.2.4,6.2.2,6.2.1,6.2.0, 6.1.2, 6.1.1, 6.1.0, 6.0.2, 6.0.0 + :ref:`Operating systems & kernels `,Ubuntu 24.04.2,Ubuntu 24.04.2,Ubuntu 24.04.2,"Ubuntu 24.04.1, 24.04","Ubuntu 24.04.1, 24.04","Ubuntu 24.04.1, 24.04",Ubuntu 24.04,,,,, + ,Ubuntu 22.04.5,Ubuntu 22.04.5,Ubuntu 22.04.5,"Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.5, 22.04.4","Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3","Ubuntu 22.04.4, 22.04.3, 22.04.2","Ubuntu 22.04.4, 22.04.3, 22.04.2" + ,,,,,,,,"Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5","Ubuntu 20.04.6, 20.04.5" + ,"RHEL 9.5, 9.4","RHEL 9.5, 9.4","RHEL 9.5, 9.4","RHEL 9.4, 9.3","RHEL 9.4, 9.3","RHEL 9.4, 9.3","RHEL 9.4, 9.3","RHEL 9.4, 9.3, 9.2","RHEL 9.4, 9.3, 9.2","RHEL 9.4, 9.3, 9.2","RHEL 9.3, 9.2","RHEL 9.3, 9.2" + ,RHEL 8.10,RHEL 8.10,RHEL 8.10,"RHEL 8.10, 8.9","RHEL 8.10, 8.9","RHEL 8.10, 8.9","RHEL 8.10, 8.9","RHEL 8.9, 8.8","RHEL 8.9, 8.8","RHEL 8.9, 8.8","RHEL 8.9, 8.8","RHEL 8.9, 8.8" + ,"SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP5, SP4","SLES 15 SP5, SP4","SLES 15 SP5, SP4","SLES 15 SP5, SP4","SLES 15 SP5, SP4" + ,,,,,,,,CentOS 7.9,CentOS 7.9,CentOS 7.9,CentOS 7.9,CentOS 7.9 + ,Oracle Linux 8.10 [#mi300x-past-60]_,Oracle Linux 8.10 [#mi300x-past-60]_,Oracle Linux 8.10 [#mi300x-past-60]_,Oracle Linux 8.9 [#mi300x-past-60]_,Oracle Linux 8.9 [#mi300x-past-60]_,Oracle Linux 8.9 [#mi300x-past-60]_,Oracle Linux 8.9 [#mi300x-past-60]_,Oracle Linux 8.9 [#mi300x-past-60]_,Oracle Linux 8.9 [#mi300x-past-60]_,,, +,Debian 12 [#mi300x-past-60]_,Debian 12 [#mi300x-past-60]_,,,,,,,,,, +,Azure Linux 3.0 [#mi300x-past-60]_,,,,,,,,,,, + ,.. _architecture-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`Architecture `,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3,CDNA3 + ,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2,CDNA2 + ,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA,CDNA + ,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3,RDNA3 + ,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2,RDNA2 + ,.. _gpu-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`GPU / LLVM target `,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100,gfx1100 + ,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030,gfx1030 + ,gfx942,gfx942,gfx942,gfx942 [#mi300_624-past-60]_,gfx942 [#mi300_622-past-60]_,gfx942 [#mi300_621-past-60]_,gfx942 [#mi300_620-past-60]_, gfx942 [#mi300_612-past-60]_, gfx942 [#mi300_611-past-60]_, gfx942 [#mi300_610-past-60]_, gfx942 [#mi300_602-past-60]_, gfx942 [#mi300_600-past-60]_ + ,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a,gfx90a + ,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908,gfx908 +,,,,,,,,,,,, + FRAMEWORK SUPPORT,.. _framework-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`PyTorch <../compatibility/ml-compatibility/pytorch-compatibility>`,"2.4, 2.3, 2.2, 1.13","2.4, 2.3, 2.2, 1.13","2.4, 2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13","2.1, 2.0, 1.13" + :doc:`TensorFlow <../compatibility/ml-compatibility/tensorflow-compatibility>`,"2.17.0, 2.16.2, 2.15.1","2.17.0, 2.16.2, 2.15.1","2.17.0, 2.16.2, 2.15.1","2.16.1, 2.15.1, 2.14.1","2.16.1, 2.15.1, 2.14.1","2.16.1, 2.15.1, 2.14.1","2.16.1, 2.15.1, 2.14.1","2.15.0, 2.14.0, 2.13.1","2.15.0, 2.14.0, 2.13.1","2.15.0, 2.14.0, 2.13.1","2.14.0, 2.13.1, 2.12.1","2.14.0, 2.13.1, 2.12.1" + :doc:`JAX <../compatibility/ml-compatibility/jax-compatibility>`,0.4.31,0.4.31,0.4.31,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26,0.4.26 + `ONNX Runtime `_,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.17.3,1.14.1,1.14.1 + ,,,,,,,,,,,, + THIRD PARTY COMMS,.. _thirdpartycomms-support-compatibility-matrix-past-60:,,,,,,,,,,, + `UCC `_,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.3.0,>=1.2.0,>=1.2.0 + `UCX `_,>=1.15.0,>=1.15.0,>=1.15.0,>=1.15.0,>=1.15.0,>=1.15.0,>=1.15.0,>=1.14.1,>=1.14.1,>=1.14.1,>=1.14.1,>=1.14.1 + ,,,,,,,,,,,, + THIRD PARTY ALGORITHM,.. _thirdpartyalgorithm-support-compatibility-matrix-past-60:,,,,,,,,,,, + Thrust,2.3.2,2.3.2,2.3.2,2.2.0,2.2.0,2.2.0,2.2.0,2.1.0,2.1.0,2.1.0,2.0.1,2.0.1 + CUB,2.3.2,2.3.2,2.3.2,2.2.0,2.2.0,2.2.0,2.2.0,2.1.0,2.1.0,2.1.0,2.0.1,2.0.1 +,,,,,,,,,,,, + KMD & USER SPACE [#kfd_support-past-60]_,.. _kfd-userspace-support-compatibility-matrix-past-60:,,,,,,,,,,, + Tested user space versions,"6.3.x, 6.2.x, 6.1.x","6.3.x, 6.2.x, 6.1.x","6.3.x, 6.2.x, 6.1.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x","6.3.x, 6.2.x, 6.1.x, 6.0.x, 5.7.x","6.3.x, 6.2.x, 6.1.x, 6.0.x, 5.7.x","6.3.x, 6.2.x, 6.1.x, 6.0.x, 5.7.x","6.2.x, 6.1.x, 6.0.x, 5.7.x, 5.6.x","6.2.x, 6.1.x, 6.0.x, 5.7.x, 5.6.x" + ,,,,,,,,,,,, + ML & COMPUTER VISION,.. _mllibs-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`Composable Kernel `,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0,1.1.0 + :doc:`MIGraphX `,2.11.0,2.11.0,2.11.0,2.10.0,2.10.0,2.10.0,2.10.0,2.9.0,2.9.0,2.9.0,2.8.0,2.8.0 + :doc:`MIOpen `,3.3.0,3.3.0,3.3.0,3.2.0,3.2.0,3.2.0,3.2.0,3.1.0,3.1.0,3.1.0,3.0.0,3.0.0 + :doc:`MIVisionX `,3.1.0,3.1.0,3.1.0,3.0.0,3.0.0,3.0.0,3.0.0,2.5.0,2.5.0,2.5.0,2.5.0,2.5.0 + :doc:`rocAL `,2.1.0,2.1.0,2.1.0,2.0.0,2.0.0,2.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0 + :doc:`rocDecode `,0.8.0,0.8.0,0.8.0,0.6.0,0.6.0,0.6.0,0.6.0,0.6.0,0.5.0,0.5.0,N/A,N/A + :doc:`rocJPEG `,0.6.0,0.6.0,0.6.0,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A + :doc:`rocPyDecode `,0.2.0,0.2.0,0.2.0,0.1.0,0.1.0,0.1.0,0.1.0,N/A,N/A,N/A,N/A,N/A + :doc:`RPP `,1.9.1,1.9.1,1.9.1,1.8.0,1.8.0,1.8.0,1.8.0,1.5.0,1.5.0,1.5.0,1.4.0,1.4.0 + ,,,,,,,,,,,, + COMMUNICATION,.. _commlibs-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`RCCL `,2.21.5,2.21.5,2.21.5,2.20.5,2.20.5,2.20.5,2.20.5,2.18.6,2.18.6,2.18.6,2.18.3,2.18.3 + ,,,,,,,,,,,, + MATH LIBS,.. _mathlibs-support-compatibility-matrix-past-60:,,,,,,,,,,, + `half `_ ,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0,1.12.0 + :doc:`hipBLAS `,2.3.0,2.3.0,2.3.0,2.2.0,2.2.0,2.2.0,2.2.0,2.1.0,2.1.0,2.1.0,2.0.0,2.0.0 + :doc:`hipBLASLt `,0.10.0,0.10.0,0.10.0,0.8.0,0.8.0,0.8.0,0.8.0,0.7.0,0.7.0,0.7.0,0.6.0,0.6.0 + :doc:`hipFFT `,1.0.17,1.0.17,1.0.17,1.0.16,1.0.15,1.0.15,1.0.14,1.0.14,1.0.14,1.0.14,1.0.13,1.0.13 + :doc:`hipfort `,0.5.1,0.5.0,0.5.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0 + :doc:`hipRAND `,2.11.1,2.11.1,2.11.0,2.11.1,2.11.0,2.11.0,2.11.0,2.10.16,2.10.16,2.10.16,2.10.16,2.10.16 + :doc:`hipSOLVER `,2.3.0,2.3.0,2.3.0,2.2.0,2.2.0,2.2.0,2.2.0,2.1.1,2.1.1,2.1.0,2.0.0,2.0.0 + :doc:`hipSPARSE `,3.1.2,3.1.2,3.1.2,3.1.1,3.1.1,3.1.1,3.1.1,3.0.1,3.0.1,3.0.1,3.0.0,3.0.0 + :doc:`hipSPARSELt `,0.2.2,0.2.2,0.2.2,0.2.1,0.2.1,0.2.1,0.2.1,0.2.0,0.1.0,0.1.0,0.1.0,0.1.0 + :doc:`rocALUTION `,3.2.1,3.2.1,3.2.1,3.2.1,3.2.0,3.2.0,3.2.0,3.1.1,3.1.1,3.1.1,3.0.3,3.0.3 + :doc:`rocBLAS `,4.3.0,4.3.0,4.3.0,4.2.4,4.2.1,4.2.1,4.2.0,4.1.2,4.1.0,4.1.0,4.0.0,4.0.0 + :doc:`rocFFT `,1.0.31,1.0.31,1.0.31,1.0.30,1.0.29,1.0.29,1.0.28,1.0.27,1.0.27,1.0.26,1.0.25,1.0.23 + :doc:`rocRAND `,3.2.0,3.2.0,3.2.0,3.1.1,3.1.0,3.1.0,3.1.0,3.0.1,3.0.1,3.0.1,3.0.0,2.10.17 + :doc:`rocSOLVER `,3.27.0,3.27.0,3.27.0,3.26.2,3.26.0,3.26.0,3.26.0,3.25.0,3.25.0,3.25.0,3.24.0,3.24.0 + :doc:`rocSPARSE `,3.3.0,3.3.0,3.3.0,3.2.1,3.2.0,3.2.0,3.2.0,3.1.2,3.1.2,3.1.2,3.0.2,3.0.2 + :doc:`rocWMMA `,1.6.0,1.6.0,1.6.0,1.5.0,1.5.0,1.5.0,1.5.0,1.4.0,1.4.0,1.4.0,1.3.0,1.3.0 + :doc:`Tensile `,4.42.0,4.42.0,4.42.0,4.41.0,4.41.0,4.41.0,4.41.0,4.40.0,4.40.0,4.40.0,4.39.0,4.39.0 + ,,,,,,,,,,,, + PRIMITIVES,.. _primitivelibs-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`hipCUB `,3.3.0,3.3.0,3.3.0,3.2.1,3.2.0,3.2.0,3.2.0,3.1.0,3.1.0,3.1.0,3.0.0,3.0.0 + :doc:`hipTensor `,1.4.0,1.4.0,1.4.0,1.3.0,1.3.0,1.3.0,1.3.0,1.2.0,1.2.0,1.2.0,1.1.0,1.1.0 + :doc:`rocPRIM `,3.3.0,3.3.0,3.3.0,3.2.2,3.2.0,3.2.0,3.2.0,3.1.0,3.1.0,3.1.0,3.0.0,3.0.0 + :doc:`rocThrust `,3.3.0,3.3.0,3.3.0,3.1.1,3.1.0,3.1.0,3.0.1,3.0.1,3.0.1,3.0.1,3.0.0,3.0.0 + ,,,,,,,,,,,, + SUPPORT LIBS,,,,,,,,,,,, + `hipother `_,6.3.42134,6.3.42133,6.3.42131,6.2.41134,6.2.41134,6.2.41134,6.2.41133,6.1.40093,6.1.40092,6.1.40091,6.1.32831,6.1.32830 + `rocm-core `_,6.3.2,6.3.1,6.3.0,6.2.4,6.2.2,6.2.1,6.2.0,6.1.2,6.1.1,6.1.0,6.0.2,6.0.0 + `ROCT-Thunk-Interface `_,N/A [#ROCT-rocr-past-60]_,N/A [#ROCT-rocr-past-60]_,N/A [#ROCT-rocr-past-60]_,20240607.5.7,20240607.5.7,20240607.4.05,20240607.1.4246,20240125.5.08,20240125.5.08,20240125.3.30,20231016.2.245,20231016.2.245 + ,,,,,,,,,,,, + SYSTEM MGMT TOOLS,.. _tools-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`AMD SMI `,24.7.1,24.7.1,24.7.1,24.6.3,24.6.3,24.6.3,24.6.2,24.5.1,24.5.1,24.4.1,23.4.2,23.4.2 + :doc:`ROCm Data Center Tool `,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0,0.3.0 + :doc:`rocminfo `,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0 + :doc:`ROCm SMI `,7.4.0,7.4.0,7.4.0,7.3.0,7.3.0,7.3.0,7.3.0,7.2.0,7.0.0,7.0.0,6.0.2,6.0.0 + :doc:`ROCm Validation Suite `,1.1.0,1.1.0,1.1.0,1.0.60204,1.0.60202,1.0.60201,1.0.60200,1.0.60102,1.0.60101,1.0.60100,1.0.60002,1.0.60000 + ,,,,,,,,,,,, + PERFORMANCE TOOLS,,,,,,,,,,,, + :doc:`ROCm Bandwidth Test `,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0,1.4.0 + :doc:`ROCm Compute Profiler `,3.0.0,3.0.0,3.0.0,2.0.1,2.0.1,2.0.1,2.0.1,N/A,N/A,N/A,N/A,N/A + :doc:`ROCm Systems Profiler `,0.1.1,0.1.0,0.1.0,1.11.2,1.11.2,1.11.2,1.11.2,N/A,N/A,N/A,N/A,N/A + :doc:`ROCProfiler `,2.0.60302,2.0.60301,2.0.60300,2.0.60204,2.0.60202,2.0.60201,2.0.60200,2.0.60102,2.0.60101,2.0.60100,2.0.60002,2.0.60000 + :doc:`ROCprofiler-SDK `,0.5.0,0.5.0,0.5.0,0.4.0,0.4.0,0.4.0,0.4.0,N/A,N/A,N/A,N/A,N/A + :doc:`ROCTracer `,4.1.60302,4.1.60301,4.1.60300,4.1.60204,4.1.60202,4.1.60201,4.1.60200,4.1.60102,4.1.60101,4.1.60100,4.1.60002,4.1.60000 + ,,,,,,,,,,,, + DEVELOPMENT TOOLS,,,,,,,,,,,, + :doc:`HIPIFY `,18.0.0.25012,18.0.0.24491,18.0.0.24455,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 + :doc:`ROCm CMake `,0.14.0,0.14.0,0.14.0,0.13.0,0.13.0,0.13.0,0.13.0,0.12.0,0.12.0,0.12.0,0.11.0,0.11.0 + :doc:`ROCdbgapi `,0.77.0,0.77.0,0.77.0,0.76.0,0.76.0,0.76.0,0.76.0,0.71.0,0.71.0,0.71.0,0.71.0,0.71.0 + :doc:`ROCm Debugger (ROCgdb) `,15.2.0,15.2.0,15.2.0,14.2.0,14.2.0,14.2.0,14.2.0,14.1.0,14.1.0,14.1.0,13.2.0,13.2.0 + `rocprofiler-register `_,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.4.0,0.3.0,0.3.0,0.3.0,N/A,N/A + :doc:`ROCr Debug Agent `,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3,2.0.3 + ,,,,,,,,,,,, + COMPILERS,.. _compilers-support-compatibility-matrix-past-60:,,,,,,,,,,, + `clang-ocl `_,N/A,N/A,N/A,N/A,N/A,N/A,N/A,0.5.0,0.5.0,0.5.0,0.5.0,0.5.0 + :doc:`hipCC `,1.1.1,1.1.1,1.1.1,1.1.1,1.1.1,1.1.1,1.1.1,1.0.0,1.0.0,1.0.0,1.0.0,1.0.0 + `Flang `_,18.0.0.25012,18.0.0.24491,18.0.0.24455,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 + :doc:`llvm-project `,18.0.0.25012,18.0.0.24491,18.0.0.24491,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 + `OpenMP `_,18.0.0.25012,18.0.0.24491,18.0.0.24491,18.0.0.24392,18.0.0.24355,18.0.0.24355,18.0.0.24232,17.0.0.24193,17.0.0.24154,17.0.0.24103,17.0.0.24012,17.0.0.23483 +,,,,,,,,,,,, + RUNTIMES,.. _runtime-support-compatibility-matrix-past-60:,,,,,,,,,,, + :doc:`AMD CLR `,6.3.42134,6.3.42133,6.3.42131,6.2.41134,6.2.41134,6.2.41134,6.2.41133,6.1.40093,6.1.40092,6.1.40091,6.1.32831,6.1.32830 + :doc:`HIP `,6.3.42134,6.3.42133,6.3.42131,6.2.41134,6.2.41134,6.2.41134,6.2.41133,6.1.40093,6.1.40092,6.1.40091,6.1.32831,6.1.32830 + `OpenCL Runtime `_,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0,2.0.0 + :doc:`ROCr Runtime `,1.14.0,1.14.0,1.14.0,1.14.0,1.14.0,1.14.0,1.13.0,1.13.0,1.13.0,1.13.0,1.12.0,1.12.0 diff --git a/docs/compatibility/compatibility-matrix.rst b/docs/compatibility/compatibility-matrix.rst index d5550f04b..8f5152c86 100644 --- a/docs/compatibility/compatibility-matrix.rst +++ b/docs/compatibility/compatibility-matrix.rst @@ -23,7 +23,7 @@ compatibility and system requirements. .. container:: format-big-table .. csv-table:: - :header: "ROCm Version", "6.3.1", "6.3.0", "6.2.0" + :header: "ROCm Version", "6.3.2", "6.3.1", "6.2.0" :stub-columns: 1 :ref:`Operating systems & kernels `,Ubuntu 24.04.2,Ubuntu 24.04.2,Ubuntu 24.04 @@ -32,7 +32,8 @@ compatibility and system requirements. ,RHEL 8.10,RHEL 8.10,"RHEL 8.10, 8.9" ,"SLES 15 SP6, SP5","SLES 15 SP6, SP5","SLES 15 SP6, SP5" ,Oracle Linux 8.10 [#mi300x]_,Oracle Linux 8.10 [#mi300x]_,Oracle Linux 8.9 [#mi300x]_ - ,Debian 12 [#mi300x]_,, + ,Debian 12 [#mi300x]_,Debian 12 [#mi300x]_, + ,Azure Linux 3.0 [#mi300x]_,, ,.. _architecture-support-compatibility-matrix:,, :doc:`Architecture `,CDNA3,CDNA3,CDNA3 ,CDNA2,CDNA2,CDNA2 @@ -47,9 +48,9 @@ compatibility and system requirements. ,gfx908,gfx908,gfx908 ,,, FRAMEWORK SUPPORT,.. _framework-support-compatibility-matrix:,, - :doc:`PyTorch <../compatibility/pytorch-compatibility>`,"2.4, 2.3, 2.2, 1.13","2.4, 2.3, 2.2, 2.1, 2.0, 1.13","2.3, 2.2, 2.1, 2.0, 1.13" - :doc:`TensorFlow `,"2.17.0, 2.16.2, 2.15.1","2.17.0, 2.16.2, 2.15.1","2.16.1, 2.15.1, 2.14.1" - :doc:`JAX `,0.4.35,0.4.35,0.4.26 + :doc:`PyTorch <../compatibility/ml-compatibility/pytorch-compatibility>`,"2.4, 2.3, 2.2, 1.13","2.4, 2.3, 2.2, 1.13","2.3, 2.2, 2.1, 2.0, 1.13" + :doc:`TensorFlow <../compatibility/ml-compatibility/tensorflow-compatibility>`,"2.17.0, 2.16.2, 2.15.1","2.17.0, 2.16.2, 2.15.1","2.16.1, 2.15.1, 2.14.1" + :doc:`JAX <../compatibility/ml-compatibility/jax-compatibility>`,0.4.31,0.4.31,0.4.26 `ONNX Runtime `_,1.17.3,1.17.3,1.17.3 ,,, THIRD PARTY COMMS,.. _thirdpartycomms-support-compatibility-matrix:,, @@ -82,8 +83,8 @@ compatibility and system requirements. :doc:`hipBLAS `,2.3.0,2.3.0,2.2.0 :doc:`hipBLASLt `,0.10.0,0.10.0,0.8.0 :doc:`hipFFT `,1.0.17,1.0.17,1.0.14 - :doc:`hipfort `,0.5.0,0.5.0,0.4.0 - :doc:`hipRAND `,2.11.1,2.11.0,2.11.0 + :doc:`hipfort `,0.5.1,0.5.0,0.4.0 + :doc:`hipRAND `,2.11.1,2.11.1,2.11.0 :doc:`hipSOLVER `,2.3.0,2.3.0,2.2.0 :doc:`hipSPARSE `,3.1.2,3.1.2,3.1.1 :doc:`hipSPARSELt `,0.2.2,0.2.2,0.2.1 @@ -94,7 +95,7 @@ compatibility and system requirements. :doc:`rocSOLVER `,3.27.0,3.27.0,3.26.0 :doc:`rocSPARSE `,3.3.0,3.3.0,3.2.0 :doc:`rocWMMA `,1.6.0,1.6.0,1.5.0 - :doc:`Tensile `,4.42.0,4.42.0,4.41.0 + :doc:`Tensile `,4.42.0,4.42.0,4.41.0 ,,, PRIMITIVES,.. _primitivelibs-support-compatibility-matrix:,, :doc:`hipCUB `,3.3.0,3.3.0,3.2.0 @@ -103,8 +104,8 @@ compatibility and system requirements. :doc:`rocThrust `,3.3.0,3.3.0,3.0.1 ,,, SUPPORT LIBS,,, - `hipother `_,6.3.42133,6.3.42131,6.2.41133 - `rocm-core `_,6.3.1,6.3.0,6.2.0 + `hipother `_,6.3.42134,6.3.42133,6.2.41133 + `rocm-core `_,6.3.2,6.3.1,6.2.0 `ROCT-Thunk-Interface `_,N/A [#ROCT-rocr]_,N/A [#ROCT-rocr]_,20240607.1.4246 ,,, SYSTEM MGMT TOOLS,.. _tools-support-compatibility-matrix:,, @@ -117,36 +118,37 @@ compatibility and system requirements. PERFORMANCE TOOLS,,, :doc:`ROCm Bandwidth Test `,1.4.0,1.4.0,1.4.0 :doc:`ROCm Compute Profiler `,3.0.0,3.0.0,2.0.1 - :doc:`ROCm Systems Profiler `,0.1.0,0.1.0,1.11.2 - :doc:`ROCProfiler `,2.0.60301,2.0.60300,2.0.60200 + :doc:`ROCm Systems Profiler `,0.1.1,0.1.0,1.11.2 + :doc:`ROCProfiler `,2.0.60302,2.0.60301,2.0.60200 :doc:`ROCprofiler-SDK `,0.5.0,0.5.0,0.4.0 - :doc:`ROCTracer `,4.1.60301,4.1.60300,4.1.60200 + :doc:`ROCTracer `,4.1.60302,4.1.60301,4.1.60200 ,,, DEVELOPMENT TOOLS,,, - :doc:`HIPIFY `,18.0.0.24491,18.0.0.24455,18.0.0.24232 + :doc:`HIPIFY `,18.0.0.25012,18.0.0.24491,18.0.0.24232 :doc:`ROCm CMake `,0.14.0,0.14.0,0.13.0 :doc:`ROCdbgapi `,0.77.0,0.77.0,0.76.0 :doc:`ROCm Debugger (ROCgdb) `,15.2.0,15.2.0,14.2.0 `rocprofiler-register `_,0.4.0,0.4.0,0.4.0 :doc:`ROCr Debug Agent `,2.0.3,2.0.3,2.0.3 ,,, - COMPILERS,.. _compilers-support-compatibility-matrix:,, + COMPILERS,.. _compilers-support-compatibility-matrix:,.. `clang-ocl `_,N/A,N/A,N/A :doc:`hipCC `,1.1.1,1.1.1,1.1.1 - `Flang `_,18.0.0.24491,18.0.0.24455,18.0.0.24232 - :doc:`llvm-project `,18.0.0.24491,18.0.0.24455,18.0.0.24232 - `OpenMP `_,18.0.0.24491,18.0.0.24455,18.0.0.24232 + `Flang `_,18.0.0.25012,18.0.0.24491,18.0.0.24232 + :doc:`llvm-project `,18.0.0.25012,18.0.0.24491,18.0.0.24232 + `OpenMP `_,18.0.0.25012,18.0.0.24491,18.0.0.24232 ,,, - RUNTIMES,.. _runtime-support-compatibility-matrix:,, - :doc:`AMD CLR `,6.3.42133,6.3.42131,6.2.41133 - :doc:`HIP `,6.3.42133,6.3.42131,6.2.41133 + RUNTIMES,.. _runtime-support-compatibility-matrix:,.. + :doc:`AMD CLR `,6.3.42134,6.3.42133,6.2.41133 + :doc:`HIP `,6.3.42134,6.3.42133,6.2.41133 `OpenCL Runtime `_,2.0.0,2.0.0,2.0.0 :doc:`ROCr Runtime `,1.14.0,1.14.0,1.13.0 + .. rubric:: Footnotes -.. [#mi300x] Oracle Linux and Debian are supported only on AMD Instinct MI300X. +.. [#mi300x] Oracle Linux, Debian, and Azure Linux are supported only on AMD Instinct MI300X. .. [#mi300_620] **For ROCm 6.2.0** - MI300X (gfx942) is supported on listed operating systems *except* Ubuntu 22.04.5 [6.8 HWE] and Ubuntu 22.04.4 [6.5 HWE]. .. [#kfd_support] ROCm provides forward and backward compatibility between the AMD Kernel-mode GPU Driver (KMD) and its user space software for +/- 2 releases. These are the compatibility combinations that are currently supported. .. [#ROCT-rocr] Starting from ROCm 6.3.0, the ROCT Thunk Interface is included as part of the ROCr runtime package. @@ -158,7 +160,7 @@ Operating systems and kernel versions Use this lookup table to confirm which operating system and kernel versions are supported with ROCm. -.. csv-table:: +.. csv-table:: :header: "OS", "Version", "Kernel" :widths: 40, 20, 40 :stub-columns: 1 @@ -169,11 +171,11 @@ Use this lookup table to confirm which operating system and kernel versions are `Ubuntu `_, 22.04.5, "5.15 GA, 6.8 HWE" , 22.04.4, "5.15 GA, 6.5 HWE" ,, - `Red Hat Enterprise Linux (RHEL) `_, 9.5, 5.14.0 + `Red Hat Enterprise Linux (RHEL 9) `_, 9.5, 5.14.0 ,9.4, 5.14.0 ,9.3, 5.14.0 ,, - `Red Hat Enterprise Linux (RHEL) `_, 8.10, 4.18.0 + `Red Hat Enterprise Linux (RHEL 8) `_, 8.10, 4.18.0 ,8.9, 4.18.0 ,, `SUSE Linux Enterprise Server (SLES) `_, 15 SP6, 6.4.0 @@ -183,11 +185,14 @@ Use this lookup table to confirm which operating system and kernel versions are ,8.9, 5.15.0 ,, `Debian `_,12, 6.1 + ,, + `Azure Linux `_,3.0, 6.6 + ,, .. - Footnotes and ref anchors in below historical tables should be appended with "-past-60", to differentiate from the + Footnotes and ref anchors in below historical tables should be appended with "-past-60", to differentiate from the footnote references in the above, latest, compatibility matrix. It also allows to easily find & replace. - An easy way to work is to download the historical.CSV file, and update open it in excel. Then when content is ready, + An easy way to work is to download the historical.CSV file, and update open it in excel. Then when content is ready, delete the columns you don't need, to build the current compatibility matrix to use in above table. Find & replace all instances of "-past-60" to make it ready for above table. @@ -210,7 +215,7 @@ Expand for full historical view of: .. rubric:: Footnotes - .. [#mic300x-past-60] Oracle Linux and Debian are supported only on AMD Instinct MI300X. + .. [#mi300x-past-60] Oracle Linux, Debian, and Azure Linux are supported only on AMD Instinct MI300X. .. [#mi300_624-past-60] **For ROCm 6.2.4** - MI300X (gfx942) is supported on listed operating systems *except* Ubuntu 22.04.5 [6.8 HWE] and Ubuntu 22.04.4 [6.5 HWE]. .. [#mi300_622-past-60] **For ROCm 6.2.2** - MI300X (gfx942) is supported on listed operating systems *except* Ubuntu 22.04.5 [6.8 HWE] and Ubuntu 22.04.4 [6.5 HWE]. .. [#mi300_621-past-60] **For ROCm 6.2.1** - MI300X (gfx942) is supported on listed operating systems *except* Ubuntu 22.04.5 [6.8 HWE] and Ubuntu 22.04.4 [6.5 HWE]. diff --git a/docs/compatibility/ml-compatibility/jax-compatibility.rst b/docs/compatibility/ml-compatibility/jax-compatibility.rst new file mode 100644 index 000000000..eb3350ae8 --- /dev/null +++ b/docs/compatibility/ml-compatibility/jax-compatibility.rst @@ -0,0 +1,665 @@ +:orphan: + +.. meta:: + :description: JAX compatibility + :keywords: GPU, JAX compatibility + +******************************************************************************* +JAX compatibility +******************************************************************************* + +JAX provides a NumPy-like API, which combines automatic differentiation and the +Accelerated Linear Algebra (XLA) compiler to achieve high-performance machine +learning at scale. + +JAX uses composable transformations of Python and NumPy through just-in-time (JIT) compilation, +automatic vectorization, and parallelization. To learn about JAX, including profiling and +optimizations, see the official `JAX documentation +`_. + +ROCm support for JAX is upstreamed and users can build the official source code with ROCm +support: + +- ROCm JAX release: + + - Offers AMD-validated and community :ref:`Docker images ` with ROCm and JAX pre-installed. + + - ROCm JAX repository: `ROCm/jax `_ + + - See the :doc:`ROCm JAX installation guide ` + to get started. + +- Official JAX release: + + - Official JAX repository: `jax-ml/jax `_ + + - See the `AMD GPU (Linux) installation section + `_ in the JAX + documentation. + +.. note:: + + AMD releases official `ROCm JAX Docker images `_ + quarterly alongside new ROCm releases. These images undergo full AMD testing. + `Community ROCm JAX Docker images `_ + follow upstream JAX releases and use the latest available ROCm version. + +.. _jax-docker-compat: + +Docker image compatibility +================================================================================ + +.. |docker-icon| raw:: html + + + +AMD validates and publishes ready-made `ROCm JAX Docker images `_ +with ROCm backends on Docker Hub. The following Docker image tags and +associated inventories are validated for +`ROCm 6.3.1 `_. Click the |docker-icon| +icon to view the image on Docker Hub. + +.. list-table:: JAX Docker image components + :header-rows: 1 + + * - Docker image + - JAX + - Linux + - Python + * - .. raw:: html + + rocm/jax + + - `0.4.31 `_ + - Ubuntu 24.04 + - `3.12.7 `_ + * - .. raw:: html + + rocm/jax + + - `0.4.31 `_ + - Ubuntu 22.04 + - `3.10.14 `_ + +AMD publishes `Community ROCm JAX Docker images `_ +with ROCm backends on Docker Hub. The following Docker image tags and +associated inventories are tested for `ROCm 6.2.4 `_. + +.. list-table:: JAX community Docker image components + :header-rows: 1 + + * - Docker image + - JAX + - Linux + - Python + * - .. raw:: html + + rocm/jax-community + + - `0.4.35 `_ + - Ubuntu 22.04 + - `3.12.7 `_ + * - .. raw:: html + + rocm/jax-community + + - `0.4.35 `_ + - Ubuntu 22.04 + - `3.11.10 `_ + * - .. raw:: html + + rocm/jax-community + + - `0.4.35 `_ + - Ubuntu 22.04 + - `3.10.15 `_ + +Critical ROCm libraries for JAX +================================================================================ + +The functionality of JAX with ROCm is determined by its underlying library +dependencies. These critical ROCm components affect the capabilities, +performance, and feature set available to developers. + +.. list-table:: + :header-rows: 1 + + * - ROCm library + - Version + - Purpose + - Used in + * - `hipBLAS `_ + - 2.3.0 + - Provides GPU-accelerated Basic Linear Algebra Subprograms (BLAS) for + matrix and vector operations. + - Matrix multiplication in ``jax.numpy.matmul``, ``jax.lax.dot`` and + ``jax.lax.dot_general``, operations like ``jax.numpy.dot``, which + involve vector and matrix computations and batch matrix multiplications + ``jax.numpy.einsum`` with matrix-multiplication patterns algebra + operations. + * - `hipBLASLt `_ + - 0.10.0 + - hipBLASLt is an extension of hipBLAS, providing additional + features like epilogues fused into the matrix multiplication kernel or + use of integer tensor cores. + - Matrix multiplication in ``jax.numpy.matmul`` or ``jax.lax.dot``, and + the XLA (Accelerated Linear Algebra) use hipBLASLt for optimized matrix + operations, mixed-precision support, and hardware-specific + optimizations. + * - `hipCUB `_ + - 3.3.0 + - Provides a C++ template library for parallel algorithms for reduction, + scan, sort and select. + - Reduction functions (``jax.numpy.sum``, ``jax.numpy.mean``, + ``jax.numpy.prod``, ``jax.numpy.max`` and ``jax.numpy.min``), prefix sum + (``jax.numpy.cumsum``, ``jax.numpy.cumprod``) and sorting + (``jax.numpy.sort``, ``jax.numpy.argsort``). + * - `hipFFT `_ + - 1.0.17 + - Provides GPU-accelerated Fast Fourier Transform (FFT) operations. + - Used in functions like ``jax.numpy.fft``. + * - `hipRAND `_ + - 2.11.0 + - Provides fast random number generation for GPUs. + - The ``jax.random.uniform``, ``jax.random.normal``, + ``jax.random.randint`` and ``jax.random.split``. + * - `hipSOLVER `_ + - 2.3.0 + - Provides GPU-accelerated solvers for linear systems, eigenvalues, and + singular value decompositions (SVD). + - Solving linear systems (``jax.numpy.linalg.solve``), matrix + factorizations, SVD (``jax.numpy.linalg.svd``) and eigenvalue problems + (``jax.numpy.linalg.eig``). + * - `hipSPARSE `_ + - 3.1.2 + - Accelerates operations on sparse matrices, such as sparse matrix-vector + or matrix-matrix products. + - Sparse matrix multiplication (``jax.numpy.matmul``), sparse + matrix-vector and matrix-matrix products + (``jax.experimental.sparse.dot``), sparse linear system solvers and + sparse data handling. + * - `hipSPARSELt `_ + - 0.2.2 + - Accelerates operations on sparse matrices, such as sparse matrix-vector + or matrix-matrix products. + - Sparse matrix multiplication (``jax.numpy.matmul``), sparse + matrix-vector and matrix-matrix products + (``jax.experimental.sparse.dot``) and sparse linear system solvers. + * - `MIOpen `_ + - 3.3.0 + - Optimized for deep learning primitives such as convolutions, pooling, + normalization, and activation functions. + - Speeds up convolutional neural networks (CNNs), recurrent neural + networks (RNNs), and other layers. Used in operations like + ``jax.nn.conv``, ``jax.nn.relu``, and ``jax.nn.batch_norm``. + * - `RCCL `_ + - 2.21.5 + - Optimized for multi-GPU communication for operations like all-reduce, + broadcast, and scatter. + - Distribute computations across multiple GPU with ``pmap`` and + ``jax.distributed``. XLA automatically uses rccl when executing + operations across multiple GPUs on AMD hardware. + * - `rocThrust `_ + - 3.3.0 + - Provides a C++ template library for parallel algorithms like sorting, + reduction, and scanning. + - Reduction operations like ``jax.numpy.sum``, ``jax.pmap`` for + distributed training, which involves parallel reductions or + operations like ``jax.numpy.cumsum`` can use rocThrust. + +Supported and unsupported features +=============================================================================== + +The following table maps GPU-accelerated JAX modules to their supported +ROCm and JAX versions. + +.. list-table:: + :header-rows: 1 + + * - Module + - Description + - Since JAX + - Since ROCm + * - ``jax.numpy`` + - Implements the NumPy API, using the primitives in ``jax.lax``. + - 0.1.56 + - 5.0.0 + * - ``jax.scipy`` + - Provides GPU-accelerated and differentiable implementations of many + functions from the SciPy library, leveraging JAX's transformations + (e.g., ``grad``, ``jit``, ``vmap``). + - 0.1.56 + - 5.0.0 + * - ``jax.lax`` + - A library of primitives operations that underpins libraries such as + ``jax.numpy.`` Transformation rules, such as Jacobian-vector product + (JVP) and batching rules, are typically defined as transformations on + ``jax.lax`` primitives. + - 0.1.57 + - 5.0.0 + * - ``jax.random`` + - Provides a number of routines for deterministic generation of sequences + of pseudorandom numbers. + - 0.1.58 + - 5.0.0 + * - ``jax.sharding`` + - Allows to define partitioning and distributing arrays across multiple + devices. + - 0.3.20 + - 5.1.0 + * - ``jax.dlpack`` + - For exchanging tensor data between JAX and other libraries that support the + DLPack standard. + - 0.1.57 + - 5.0.0 + * - ``jax.distributed`` + - Enables the scaling of computations across multiple devices on a single + machine or across multiple machines. + - 0.1.74 + - 5.0.0 + * - ``jax.dtypes`` + - Provides utilities for working with and managing data types in JAX + arrays and computations. + - 0.1.66 + - 5.0.0 + * - ``jax.image`` + - Contains image manipulation functions like resize, scale and translation. + - 0.1.57 + - 5.0.0 + * - ``jax.nn`` + - Contains common functions for neural network libraries. + - 0.1.56 + - 5.0.0 + * - ``jax.ops`` + - Computes the minimum, maximum, sum or product within segments of an + array. + - 0.1.57 + - 5.0.0 + * - ``jax.profiler`` + - Contains JAX’s tracing and time profiling features. + - 0.1.57 + - 5.0.0 + * - ``jax.stages`` + - Contains interfaces to stages of the compiled execution process. + - 0.3.4 + - 5.0.0 + * - ``jax.tree`` + - Provides utilities for working with tree-like container data structures. + - 0.4.26 + - 5.6.0 + * - ``jax.tree_util`` + - Provides utilities for working with nested data structures, or + ``pytrees``. + - 0.1.65 + - 5.0.0 + * - ``jax.typing`` + - Provides JAX-specific static type annotations. + - 0.3.18 + - 5.1.0 + * - ``jax.extend`` + - Provides modules for access to JAX internal machinery module. The + ``jax.extend`` module defines a library view of some of JAX’s internal + components. + - 0.4.15 + - 5.5.0 + * - ``jax.example_libraries`` + - Serves as a collection of example code and libraries that demonstrate + various capabilities of JAX. + - 0.1.74 + - 5.0.0 + * - ``jax.experimental`` + - Namespace for experimental features and APIs that are in development or + are not yet fully stable for production use. + - 0.1.56 + - 5.0.0 + * - ``jax.lib`` + - Set of internal tools and types for bridging between JAX’s Python + frontend and its XLA backend. + - 0.4.6 + - 5.3.0 + * - ``jax_triton`` + - Library that integrates the Triton deep learning compiler with JAX. + - jax_triton 0.2.0 + - 6.2.4 + +jax.scipy module +------------------------------------------------------------------------------- + +A SciPy-like API for scientific computing. + +.. list-table:: + :header-rows: 1 + + * - Module + - Since JAX + - Since ROCm + * - ``jax.scipy.cluster`` + - 0.3.11 + - 5.1.0 + * - ``jax.scipy.fft`` + - 0.1.71 + - 5.0.0 + * - ``jax.scipy.integrate`` + - 0.4.15 + - 5.5.0 + * - ``jax.scipy.interpolate`` + - 0.1.76 + - 5.0.0 + * - ``jax.scipy.linalg`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.ndimage`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.optimize`` + - 0.1.57 + - 5.0.0 + * - ``jax.scipy.signal`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.spatial.transform`` + - 0.4.12 + - 5.4.0 + * - ``jax.scipy.sparse.linalg`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.special`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats`` + - 0.1.56 + - 5.0.0 + +jax.scipy.stats module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + + * - Module + - Since JAX + - Since ROCm + * - ``jax.scipy.stats.bernouli`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.beta`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.betabinom`` + - 0.1.61 + - 5.0.0 + * - ``jax.scipy.stats.binom`` + - 0.4.14 + - 5.4.0 + * - ``jax.scipy.stats.cauchy`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.chi2`` + - 0.1.61 + - 5.0.0 + * - ``jax.scipy.stats.dirichlet`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.expon`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.gamma`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.gennorm`` + - 0.3.15 + - 5.2.0 + * - ``jax.scipy.stats.geom`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.laplace`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.logistic`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.multinomial`` + - 0.3.18 + - 5.1.0 + * - ``jax.scipy.stats.multivariate_normal`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.nbinom`` + - 0.1.72 + - 5.0.0 + * - ``jax.scipy.stats.norm`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.pareto`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.poisson`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.t`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.truncnorm`` + - 0.4.0 + - 5.3.0 + * - ``jax.scipy.stats.uniform`` + - 0.1.56 + - 5.0.0 + * - ``jax.scipy.stats.vonmises`` + - 0.4.2 + - 5.3.0 + * - ``jax.scipy.stats.wrapcauchy`` + - 0.4.20 + - 5.6.0 + +jax.extend module +------------------------------------------------------------------------------- + +Modules for JAX extensions. + +.. list-table:: + :header-rows: 1 + + * - Module + - Since JAX + - Since ROCm + * - ``jax.extend.ffi`` + - 0.4.30 + - 6.0.0 + * - ``jax.extend.linear_util`` + - 0.4.17 + - 5.6.0 + * - ``jax.extend.mlir`` + - 0.4.26 + - 5.6.0 + * - ``jax.extend.random`` + - 0.4.15 + - 5.5.0 + +jax.experimental module +------------------------------------------------------------------------------- + +Experimental modules and APIs. + +.. list-table:: + :header-rows: 1 + + * - Module + - Since JAX + - Since ROCm + * - ``jax.experimental.checkify`` + - 0.1.75 + - 5.0.0 + * - ``jax.experimental.compilation_cache.compilation_cache`` + - 0.1.68 + - 5.0.0 + * - ``jax.experimental.custom_partitioning`` + - 0.4.0 + - 5.3.0 + * - ``jax.experimental.jet`` + - 0.1.56 + - 5.0.0 + * - ``jax.experimental.key_reuse`` + - 0.4.26 + - 5.6.0 + * - ``jax.experimental.mesh_utils`` + - 0.1.76 + - 5.0.0 + * - ``jax.experimental.multihost_utils`` + - 0.3.2 + - 5.0.0 + * - ``jax.experimental.pallas`` + - 0.4.15 + - 5.5.0 + * - ``jax.experimental.pjit`` + - 0.1.61 + - 5.0.0 + * - ``jax.experimental.serialize_executable`` + - 0.4.0 + - 5.3.0 + * - ``jax.experimental.shard_map`` + - 0.4.3 + - 5.3.0 + * - ``jax.experimental.sparse`` + - 0.1.75 + - 5.0.0 + +.. list-table:: + :header-rows: 1 + + * - API + - Since JAX + - Since ROCm + * - ``jax.experimental.enable_x64`` + - 0.1.60 + - 5.0.0 + * - ``jax.experimental.disable_x64`` + - 0.1.60 + - 5.0.0 + +jax.experimental.pallas module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Module for Pallas, a JAX extension for custom kernels. + +.. list-table:: + :header-rows: 1 + + * - Module + - Since JAX + - Since ROCm + * - ``jax.experimental.pallas.mosaic_gpu`` + - 0.4.31 + - 6.1.3 + * - ``jax.experimental.pallas.tpu`` + - 0.4.15 + - 5.5.0 + * - ``jax.experimental.pallas.triton`` + - 0.4.32 + - 6.1.3 + +jax.experimental.sparse module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Experimental support for sparse matrix operations. + +.. list-table:: + :header-rows: 1 + + * - Module + - Since JAX + - Since ROCm + * - ``jax.experimental.sparse.linalg`` + - 0.3.15 + - 5.2.0 + * - ``jax.experimental.sparse.sparsify`` + - 0.3.25 + - ❌ + +.. list-table:: + :header-rows: 1 + + * - ``sparse`` data structure API + - Since JAX + - Since ROCm + * - ``jax.experimental.sparse.BCOO`` + - 0.1.72 + - 5.0.0 + * - ``jax.experimental.sparse.BCSR`` + - 0.3.20 + - 5.1.0 + * - ``jax.experimental.sparse.CSR`` + - 0.1.75 + - 5.0.0 + * - ``jax.experimental.sparse.NM`` + - 0.4.27 + - 5.6.0 + * - ``jax.experimental.sparse.COO`` + - 0.1.75 + - 5.0.0 + +Unsupported JAX features +------------------------ + +The following are GPU-accelerated JAX features not currently supported by +ROCm. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since JAX + * - Mixed Precision with TF32 + - Mixed precision with TF32 is used for matrix multiplications, + convolutions, and other linear algebra operations, particularly in + deep learning workloads like CNNs and transformers. + - 0.2.25 + * - RNN support + - Currently only LSTM with double bias is supported with float32 input + and weight. + - 0.3.25 + * - XLA int4 support + - 4-bit integer (int4) precision in the XLA compiler. + - 0.4.0 + * - ``jax.experimental.sparsify`` + - Converts a dense matrix to a sparse matrix representation. + - Experimental + +Use cases and recommendations +================================================================================ + +* The `nanoGPT in JAX `_ + blog explores the implementation and training of a Generative Pre-trained + Transformer (GPT) model in JAX, inspired by Andrej Karpathy’s PyTorch-based + nanoGPT. By comparing how essential GPT components—such as self-attention + mechanisms and optimizers—are realized in PyTorch and JAX, also highlight + JAX’s unique features. + +* The `Optimize GPT Training: Enabling Mixed Precision Training in JAX using + ROCm on AMD GPUs `_ + blog post provides a comprehensive guide on enhancing the training efficiency + of GPT models by implementing mixed precision techniques in JAX, specifically + tailored for AMD GPUs utilizing the ROCm platform. + +* The `Supercharging JAX with Triton Kernels on AMD GPUs `_ + blog demonstrates how to develop a custom fused dropout-activation kernel for + matrices using Triton, integrate it with JAX, and benchmark its performance + using ROCm. + +* The `Distributed fine-tuning with JAX on AMD GPUs `_ + outlines the process of fine-tuning a Bidirectional Encoder Representations + from Transformers (BERT)-based large language model (LLM) using JAX for a text + classification task. The blog post discuss techniques for parallelizing the + fine-tuning across multiple AMD GPUs and assess the model's performance on a + holdout dataset. During the fine-tuning, a BERT-base-cased transformer model + and the General Language Understanding Evaluation (GLUE) benchmark dataset was + used on a multi-GPU setup. + +* The `MI300X workload optimization guide `_ + provides detailed guidance on optimizing workloads for the AMD Instinct MI300X + accelerator using ROCm. The page is aimed at helping users achieve optimal + performance for deep learning and other high-performance computing tasks on + the MI300X GPU. + +For more use cases and recommendations, see `ROCm JAX blog posts `_. diff --git a/docs/compatibility/ml-compatibility/pytorch-compatibility.rst b/docs/compatibility/ml-compatibility/pytorch-compatibility.rst new file mode 100644 index 000000000..cf92ac846 --- /dev/null +++ b/docs/compatibility/ml-compatibility/pytorch-compatibility.rst @@ -0,0 +1,924 @@ +:orphan: + +.. meta:: + :description: PyTorch compatibility + :keywords: GPU, PyTorch compatibility + +******************************************************************************** +PyTorch compatibility +******************************************************************************** + +`PyTorch `_ is an open-source tensor library designed for +deep learning. PyTorch on ROCm provides mixed-precision and large-scale training +using `MIOpen `_ and +`RCCL `_ libraries. + +ROCm support for PyTorch is upstreamed into the official PyTorch repository. Due +to independent compatibility considerations, this results in two distinct +release cycles for PyTorch on ROCm: + +- ROCm PyTorch release: + + - Provides the latest version of ROCm but doesn't immediately support the latest stable PyTorch + version. + + - Offers :ref:`Docker images ` with ROCm and PyTorch + pre-installed. + + - ROCm PyTorch repository: ``_ + + - See the :doc:`ROCm PyTorch installation guide ` to get started. + +- Official PyTorch release: + + - Provides the latest stable version of PyTorch but doesn't immediately support the latest ROCm version. + + - Official PyTorch repository: ``_ + + - See the `Nightly and latest stable version installation guide `_ + or `Previous versions `_ to get started. + +The upstream PyTorch includes an automatic HIPification solution that automatically generates HIP +source code from the CUDA backend. This approach allows PyTorch to support ROCm without requiring +manual code modifications. + +Development of ROCm is aligned with the stable release of PyTorch while upstream PyTorch testing uses +the stable release of ROCm to maintain consistency. + +.. _pytorch-docker-compat: + +Docker image compatibility +================================================================================ + +.. |docker-icon| raw:: html + + + +AMD validates and publishes ready-made `PyTorch images `_ +with ROCm backends on Docker Hub. The following Docker image tags and +associated inventories are validated for `ROCm 6.3.0 `_. +Click the |docker-icon| icon to view the image on Docker Hub. + +.. list-table:: PyTorch Docker image components + :header-rows: 1 + :class: docker-image-compatibility + + * - Docker + - PyTorch + - Ubuntu + - Python + - Apex + - torchvision + - TensorBoard + - MAGMA + - UCX + - OMPI + - OFED + + * - .. raw:: html + + + + - `2.4.0 `_ + - 24.04 + - `3.12 `_ + - `1.4.0 `_ + - `0.19.0 `_ + - `2.13.0 `_ + - `master `_ + - `1.10.0 `_ + - `4.0.7 `_ + - `5.3-1.0.5.0 `_ + + * - .. raw:: html + + + + - `2.4.0 `_ + - 22.04 + - `3.10 `_ + - `1.4.0 `_ + - `0.19.0 `_ + - `2.13.0 `_ + - `master `_ + - `1.10.0 `_ + - `4.0.7 `_ + - `5.3-1.0.5.0 `_ + + * - .. raw:: html + + + + - `2.4.0 `_ + - 22.04 + - `3.9.18 `_ + - `1.4.0 `_ + - `0.19.0 `_ + - `2.13.0 `_ + - `master `_ + - `1.10.0 `_ + - `4.0.7 `_ + - `5.3-1.0.5.0 `_ + + * - .. raw:: html + + + + - `2.3.0 `_ + - 22.04 + - `3.10 `_ + - `1.3.0 `_ + - `0.18.0 `_ + - `2.13.0 `_ + - `master `_ + - `1.14.1 `_ + - `4.1.5 `_ + - `5.3-1.0.5.0 `_ + + * - .. raw:: html + + + + - `2.2.1 `_ + - 22.04 + - `3.10 `_ + - `1.2.0 `_ + - `0.17.1 `_ + - `2.13.0 `_ + - `master `_ + - `1.14.1 `_ + - `4.1.5 `_ + - `5.3-1.0.5.0 `_ + + * - .. raw:: html + + + + - `2.2.1 `_ + - 20.04 + - `3.9.21 `_ + - `1.2.0 `_ + - `0.17.1 `_ + - `2.13.0 `_ + - `master `_ + - `1.10.0 `_ + - `4.0.3 `_ + - `5.3-1.0.5.0 `_ + + * - .. raw:: html + + + + - `1.13.1 `_ + - 22.04 + - `3.9.21 `_ + - `1.0.0 `_ + - `0.14.0 `_ + - `2.18.0 `_ + - `master `_ + - `1.14.1 `_ + - `4.1.5 `_ + - `5.3-1.0.5.0 `_ + + * - .. raw:: html + + + + - `1.13.1 `_ + - 20.04 + - `3.9.21 `_ + - `1.0.0 `_ + - `0.14.0 `_ + - `2.18.0 `_ + - `master `_ + - `1.10.0 `_ + - `4.0.3 `_ + - `5.3-1.0.5.0 `_ + +Critical ROCm libraries for PyTorch +================================================================================ + +The functionality of PyTorch with ROCm is determined by its underlying library +dependencies. These critical ROCm components affect the capabilities, +performance, and feature set available to developers. + +.. list-table:: + :header-rows: 1 + + * - ROCm library + - Version + - Purpose + - Used in + * - `Composable Kernel `_ + - 1.1.0 + - Enables faster execution of core operations like matrix multiplication + (GEMM), convolutions and transformations. + - Speeds up ``torch.permute``, ``torch.view``, ``torch.matmul``, + ``torch.mm``, ``torch.bmm``, ``torch.nn.Conv2d``, ``torch.nn.Conv3d`` + and ``torch.nn.MultiheadAttention``. + * - `hipBLAS `_ + - 2.3.0 + - Provides GPU-accelerated Basic Linear Algebra Subprograms (BLAS) for + matrix and vector operations. + - Supports operations like matrix multiplication, matrix-vector products, + and tensor contractions. Utilized in both dense and batched linear + algebra operations. + * - `hipBLASLt `_ + - 0.10.0 + - hipBLASLt is an extension of the hipBLAS library, providing additional + features like epilogues fused into the matrix multiplication kernel or + use of integer tensor cores. + - It accelerates operations like ``torch.matmul``, ``torch.mm``, and the + matrix multiplications used in convolutional and linear layers. + * - `hipCUB `_ + - 3.3.0 + - Provides a C++ template library for parallel algorithms for reduction, + scan, sort and select. + - Supports operations like ``torch.sum``, ``torch.cumsum``, ``torch.sort`` + and ``torch.topk``. Operations on sparse tensors or tensors with + irregular shapes often involve scanning, sorting, and filtering, which + hipCUB handles efficiently. + * - `hipFFT `_ + - 1.0.17 + - Provides GPU-accelerated Fast Fourier Transform (FFT) operations. + - Used in functions like the ``torch.fft`` module. + * - `hipRAND `_ + - 2.11.0 + - Provides fast random number generation for GPUs. + - The ``torch.rand``, ``torch.randn`` and stochastic layers like + ``torch.nn.Dropout``. + * - `hipSOLVER `_ + - 2.3.0 + - Provides GPU-accelerated solvers for linear systems, eigenvalues, and + singular value decompositions (SVD). + - Supports functions like ``torch.linalg.solve``, + ``torch.linalg.eig``, and ``torch.linalg.svd``. + * - `hipSPARSE `_ + - 3.1.2 + - Accelerates operations on sparse matrices, such as sparse matrix-vector + or matrix-matrix products. + - Sparse tensor operations ``torch.sparse``. + * - `hipSPARSELt `_ + - 0.2.2 + - Accelerates operations on sparse matrices, such as sparse matrix-vector + or matrix-matrix products. + - Sparse tensor operations ``torch.sparse``. + * - `hipTensor `_ + - 1.4.0 + - Optimizes for high-performance tensor operations, such as contractions. + - Accelerates tensor algebra, especially in deep learning and scientific + computing. + * - `MIOpen `_ + - 3.3.0 + - Optimizes deep learning primitives such as convolutions, pooling, + normalization, and activation functions. + - Speeds up convolutional neural networks (CNNs), recurrent neural + networks (RNNs), and other layers. Used in operations like + ``torch.nn.Conv2d``, ``torch.nn.ReLU``, and ``torch.nn.LSTM``. + * - `MIGraphX `_ + - 2.11.0 + - Adds graph-level optimizations, ONNX models and mixed precision support + and enable Ahead-of-Time (AOT) Compilation. + - Speeds up inference models and executes ONNX models for + compatibility with other frameworks. + ``torch.nn.Conv2d``, ``torch.nn.ReLU``, and ``torch.nn.LSTM``. + * - `MIVisionX `_ + - 3.1.0 + - Optimizes acceleration for computer vision and AI workloads like + preprocessing, augmentation, and inferencing. + - Faster data preprocessing and augmentation pipelines for datasets like + ImageNet or COCO and easy to integrate into PyTorch's ``torch.utils.data`` + and ``torchvision`` workflows. + * - `rocAL `_ + - 2.1.0 + - Accelerates the data pipeline by offloading intensive preprocessing and + augmentation tasks. rocAL is part of MIVisionX. + - Easy to integrate into PyTorch's ``torch.utils.data`` and + ``torchvision`` data load workloads. + * - `RCCL `_ + - 2.21.5 + - Optimizes for multi-GPU communication for operations like AllReduce and + Broadcast. + - Distributed data parallel training (``torch.nn.parallel.DistributedDataParallel``). + Handles communication in multi-GPU setups. + * - `rocDecode `_ + - 0.8.0 + - Provides hardware-accelerated data decoding capabilities, particularly + for image, video, and other dataset formats. + - Can be integrated in ``torch.utils.data``, ``torchvision.transforms`` + and ``torch.distributed``. + * - `rocJPEG `_ + - 0.6.0 + - Provides hardware-accelerated JPEG image decoding and encoding. + - GPU accelerated ``torchvision.io.decode_jpeg`` and + ``torchvision.io.encode_jpeg`` and can be integrated in + ``torch.utils.data`` and ``torchvision``. + * - `RPP `_ + - 1.9.1 + - Speeds up data augmentation, transformation, and other preprocessing steps. + - Easy to integrate into PyTorch's ``torch.utils.data`` and + ``torchvision`` data load workloads. + * - `rocThrust `_ + - 3.3.0 + - Provides a C++ template library for parallel algorithms like sorting, + reduction, and scanning. + - Utilized in backend operations for tensor computations requiring + parallel processing. + * - `rocWMMA `_ + - 1.6.0 + - Accelerates warp-level matrix-multiply and matrix-accumulate to speed up matrix + multiplication (GEMM) and accumulation operations with mixed precision + support. + - Linear layers (``torch.nn.Linear``), convolutional layers + (``torch.nn.Conv2d``), attention layers, general tensor operations that + involve matrix products, such as ``torch.matmul``, ``torch.bmm``, and + more. + +Supported and unsupported features +================================================================================ + +The following section maps GPU-accelerated PyTorch features to their supported +ROCm and PyTorch versions. + +torch +-------------------------------------------------------------------------------- + +`torch `_ is the central module of +PyTorch, providing data structures for multi-dimensional tensors and +implementing mathematical operations on them. It also includes utilities for +efficient serialization of tensors and arbitrary data types, along with various +other tools. + +Tensor data types +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The data type of a tensor is specified using the ``dtype`` attribute or argument, and PyTorch supports a wide range of data types for different use cases. + +The following table lists `torch.Tensor `_'s single data types: + +.. list-table:: + :header-rows: 1 + + * - Data type + - Description + - Since PyTorch + - Since ROCm + * - ``torch.float8_e4m3fn`` + - 8-bit floating point, e4m3 + - 2.3 + - 5.5 + * - ``torch.float8_e5m2`` + - 8-bit floating point, e5m2 + - 2.3 + - 5.5 + * - ``torch.float16`` or ``torch.half`` + - 16-bit floating point + - 0.1.6 + - 2.0 + * - ``torch.bfloat16`` + - 16-bit floating point + - 1.6 + - 2.6 + * - ``torch.float32`` or ``torch.float`` + - 32-bit floating point + - 0.1.12_2 + - 2.0 + * - ``torch.float64`` or ``torch.double`` + - 64-bit floating point + - 0.1.12_2 + - 2.0 + * - ``torch.complex32`` or ``torch.chalf`` + - PyTorch provides native support for 32-bit complex numbers + - 1.6 + - 2.0 + * - ``torch.complex64`` or ``torch.cfloat`` + - PyTorch provides native support for 64-bit complex numbers + - 1.6 + - 2.0 + * - ``torch.complex128`` or ``torch.cdouble`` + - PyTorch provides native support for 128-bit complex numbers + - 1.6 + - 2.0 + * - ``torch.uint8`` + - 8-bit integer (unsigned) + - 0.1.12_2 + - 2.0 + * - ``torch.uint16`` + - 16-bit integer (unsigned) + - 2.3 + - Not natively supported + * - ``torch.uint32`` + - 32-bit integer (unsigned) + - 2.3 + - Not natively supported + * - ``torch.uint64`` + - 32-bit integer (unsigned) + - 2.3 + - Not natively supported + * - ``torch.int8`` + - 8-bit integer (signed) + - 1.12 + - 5.0 + * - ``torch.int16`` or ``torch.short`` + - 16-bit integer (signed) + - 0.1.12_2 + - 2.0 + * - ``torch.int32`` or ``torch.int`` + - 32-bit integer (signed) + - 0.1.12_2 + - 2.0 + * - ``torch.int64`` or ``torch.long`` + - 64-bit integer (signed) + - 0.1.12_2 + - 2.0 + * - ``torch.bool`` + - Boolean + - 1.2 + - 2.0 + * - ``torch.quint8`` + - Quantized 8-bit integer (unsigned) + - 1.8 + - 5.0 + * - ``torch.qint8`` + - Quantized 8-bit integer (signed) + - 1.8 + - 5.0 + * - ``torch.qint32`` + - Quantized 32-bit integer (signed) + - 1.8 + - 5.0 + * - ``torch.quint4x2`` + - Quantized 4-bit integer (unsigned) + - 1.8 + - 5.0 + +.. note:: + + Unsigned types aside from ``uint8`` are currently only have limited support in + eager mode (they primarily exist to assist usage with ``torch.compile``). + + The :doc:`ROCm precision support page ` + collected the native HW support of different data types. + +torch.cuda +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +``torch.cuda`` in PyTorch is a module that provides utilities and functions for +managing and utilizing AMD and NVIDIA GPUs. It enables GPU-accelerated +computations, memory management, and efficient execution of tensor operations, +leveraging ROCm and CUDA as the underlying frameworks. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since PyTorch + - Since ROCm + * - Device management + - Utilities for managing and interacting with GPUs. + - 0.4.0 + - 3.8 + * - Tensor operations on GPU + - Performs tensor operations such as addition and matrix multiplications on + the GPU. + - 0.4.0 + - 3.8 + * - Streams and events + - Streams allow overlapping computation and communication for optimized + performance. Events enable synchronization. + - 1.6.0 + - 3.8 + * - Memory management + - Functions to manage and inspect memory usage like + ``torch.cuda.memory_allocated()``, ``torch.cuda.max_memory_allocated()``, + ``torch.cuda.memory_reserved()`` and ``torch.cuda.empty_cache()``. + - 0.3.0 + - 1.9.2 + * - Running process lists of memory management + - Returns a human-readable printout of the running processes and their GPU + memory use for a given device with functions like + ``torch.cuda.memory_stats()`` and ``torch.cuda.memory_summary()``. + - 1.8.0 + - 4.0 + * - Communication collectives + - Set of APIs that enable efficient communication between multiple GPUs, + allowing for distributed computing and data parallelism. + - 1.9.0 + - 5.0 + * - ``torch.cuda.CUDAGraph`` + - Graphs capture sequences of GPU operations to minimize kernel launch + overhead and improve performance. + - 1.10.0 + - 5.3 + * - TunableOp + - A mechanism that allows certain operations to be more flexible and + optimized for performance. It enables automatic tuning of kernel + configurations and other settings to achieve the best possible + performance based on the specific hardware (GPU) and workload. + - 2.0 + - 5.4 + * - NVIDIA Tools Extension (NVTX) + - Integration with NVTX for profiling and debugging GPU performance using + NVIDIA's Nsight tools. + - 1.8.0 + - ❌ + * - Lazy loading NVRTC + - Delays JIT compilation with NVRTC until the code is explicitly needed. + - 1.13.0 + - ❌ + * - Jiterator (beta) + - Jiterator allows asynchronous data streaming into computation streams + during training loops. + - 1.13.0 + - 5.2 + +.. Need to validate and extend. + +torch.backends.cuda +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +``torch.backends.cuda`` is a PyTorch module that provides configuration options +and flags to control the behavior of ROCm or CUDA operations. It is part of the +PyTorch backend configuration system, which allows users to fine-tune how +PyTorch interacts with the ROCm or CUDA environment. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since PyTorch + - Since ROCm + * - ``cufft_plan_cache`` + - Manages caching of GPU FFT plans to optimize repeated FFT computations. + - 1.7.0 + - 5.0 + * - ``matmul.allow_tf32`` + - Enables or disables the use of TensorFloat-32 (TF32) precision for + faster matrix multiplications on GPUs with Tensor Cores. + - 1.10.0 + - ❌ + * - ``matmul.allow_fp16_reduced_precision_reduction`` + - Reduced precision reductions (e.g., with fp16 accumulation type) are + allowed with fp16 GEMMs. + - 2.0 + - ❌ + * - ``matmul.allow_bf16_reduced_precision_reduction`` + - Reduced precision reductions are allowed with bf16 GEMMs. + - 2.0 + - ❌ + * - ``enable_cudnn_sdp`` + - Globally enables cuDNN SDPA's kernels within SDPA. + - 2.0 + - ❌ + * - ``enable_flash_sdp`` + - Globally enables or disables FlashAttention for SDPA. + - 2.1 + - ❌ + * - ``enable_mem_efficient_sdp`` + - Globally enables or disables Memory-Efficient Attention for SDPA. + - 2.1 + - ❌ + * - ``enable_math_sdp`` + - Globally enables or disables the PyTorch C++ implementation within SDPA. + - 2.1 + - ❌ + +.. Need to validate and extend. + +torch.backends.cudnn +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Supported ``torch`` options include: + +.. list-table:: + :header-rows: 1 + + * - Option + - Description + - Since PyTorch + - Since ROCm + * - ``allow_tf32`` + - TensorFloat-32 tensor cores may be used in cuDNN convolutions on NVIDIA + Ampere or newer GPUs. + - 1.12.0 + - ❌ + * - ``deterministic`` + - A bool that, if True, causes cuDNN to only use deterministic + convolution algorithms. + - 1.12.0 + - 6.0 + +Automatic mixed precision: torch.amp +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +PyTorch that automates the process of using both 16-bit (half-precision, +float16) and 32-bit (single-precision, float32) floating-point types in model +training and inference. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since PyTorch + - Since ROCm + * - Autocasting + - Instances of autocast serve as context managers or decorators that allow + regions of your script to run in mixed precision. + - 1.9 + - 2.5 + * - Gradient scaling + - To prevent underflow, “gradient scaling” multiplies the network’s + loss(es) by a scale factor and invokes a backward pass on the scaled + loss(es). Gradients flowing backward through the network are then + scaled by the same factor. In other words, gradient values have a + larger magnitude, so they don’t flush to zero. + - 1.9 + - 2.5 + * - CUDA op-specific behavior + - These ops always go through autocasting whether they are invoked as part + of a ``torch.nn.Module``, as a function, or as a ``torch.Tensor`` method. If + functions are exposed in multiple namespaces, they go through + autocasting regardless of the namespace. + - 1.9 + - 2.5 + +Distributed library features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The PyTorch distributed library includes a collective of parallelism modules, a +communications layer, and infrastructure for launching and debugging large +training jobs. See :ref:`rocm-for-ai-pytorch-distributed` for more information. + +The Distributed Library feature in PyTorch provides tools and APIs for building +and running distributed machine learning workflows. It allows training models +across multiple processes, GPUs, or nodes in a cluster, enabling efficient use +of computational resources and scalability for large-scale tasks. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since PyTorch + - Since ROCm + * - TensorPipe + - A point-to-point communication library integrated into + PyTorch for distributed training. It is designed to handle tensor data + transfers efficiently between different processes or devices, including + those on separate machines. + - 1.8 + - 5.4 + * - Gloo + - Designed for multi-machine and multi-GPU setups, enabling + efficient communication and synchronization between processes. Gloo is + one of the default backends for PyTorch's Distributed Data Parallel + (DDP) and RPC frameworks, alongside other backends like NCCL and MPI. + - 1.0 + - 2.0 + +torch.compiler +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since PyTorch + - Since ROCm + * - ``torch.compiler`` (AOT Autograd) + - Autograd captures not only the user-level code, but also backpropagation, + which results in capturing the backwards pass “ahead-of-time”. This + enables acceleration of both forwards and backwards pass using + ``TorchInductor``. + - 2.0 + - 5.3 + * - ``torch.compiler`` (TorchInductor) + - The default ``torch.compile`` deep learning compiler that generates fast + code for multiple accelerators and backends. You need to use a backend + compiler to make speedups through ``torch.compile`` possible. For AMD, + NVIDIA, and Intel GPUs, it leverages OpenAI Triton as the key building block. + - 2.0 + - 5.3 + +torchaudio +-------------------------------------------------------------------------------- + +The `torchaudio `_ library provides +utilities for processing audio data in PyTorch, such as audio loading, +transformations, and feature extraction. + +To ensure GPU-acceleration with ``torchaudio.transforms``, you need to move audio +data (waveform tensor) explicitly to GPU using ``.to('cuda')``. + +The following ``torchaudio`` features are GPU-accelerated. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since torchaudio version + - Since ROCm + * - ``torchaudio.transforms.Spectrogram`` + - Generates spectrogram of an input waveform using STFT. + - 0.6.0 + - 4.5 + * - ``torchaudio.transforms.MelSpectrogram`` + - Generates the mel-scale spectrogram of raw audio signals. + - 0.9.0 + - 4.5 + * - ``torchaudio.transforms.MFCC`` + - Extract of MFCC features. + - 0.9.0 + - 4.5 + * - ``torchaudio.transforms.Resample`` + - Resamples a signal from one frequency to another. + - 0.9.0 + - 4.5 + +torchvision +-------------------------------------------------------------------------------- + +The `torchvision `_ library +provide datasets, model architectures, and common image transformations for +computer vision. + +The following ``torchvision`` features are GPU-accelerated. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since torchvision version + - Since ROCm + * - ``torchvision.transforms.functional`` + - Provides GPU-compatible transformations for image preprocessing like + resize, normalize, rotate and crop. + - 0.2.0 + - 4.0 + * - ``torchvision.ops`` + - GPU-accelerated operations for object detection and segmentation tasks. + ``torchvision.ops.roi_align``, ``torchvision.ops.nms`` and + ``box_convert``. + - 0.6.0 + - 3.3 + * - ``torchvision.models`` with ``.to('cuda')`` + - ``torchvision`` provides several pre-trained models (ResNet, Faster + R-CNN, Mask R-CNN, ...) that can run on CUDA for faster inference and + training. + - 0.1.6 + - 2.x + * - ``torchvision.io`` + - Enables video decoding and frame extraction using GPU acceleration with NVIDIA’s + NVDEC and nvJPEG (rocJPEG) on CUDA-enabled GPUs. + - 0.4.0 + - 6.3 + +torchtext +-------------------------------------------------------------------------------- + +The `torchtext `_ library provides +utilities for processing and working with text data in PyTorch, including +tokenization, vocabulary management, and text embeddings. torchtext supports +preprocessing pipelines and integration with PyTorch models, simplifying the +implementation of natural language processing (NLP) tasks. + +To leverage GPU acceleration in torchtext, you need to move tensors +explicitly to the GPU using ``.to('cuda')``. + +* torchtext does not implement its own kernels. ROCm support is enabled by linking against ROCm libraries. + +* Only official release exists. + +torchtune +-------------------------------------------------------------------------------- + +The `torchtune `_ library for +authoring, fine-tuning and experimenting with LLMs. + +* Usage: It works out-of-the-box, enabling developers to fine-tune ROCm PyTorch solutions. + +* Only official release exists. + +torchserve +-------------------------------------------------------------------------------- + +The `torchserve `_ is a PyTorch domain library +for common sparsity and parallelism primitives needed for large-scale recommender +systems. + +* torchtext does not implement its own kernels. ROCm support is enabled by linking against ROCm libraries. + +* Only official release exists. + +torchrec +-------------------------------------------------------------------------------- + +The `torchrec `_ is a PyTorch domain library for +common sparsity and parallelism primitives needed for large-scale recommender +systems. + +* torchrec does not implement its own kernels. ROCm support is enabled by linking against ROCm libraries. + +* Only official release exists. + +Unsupported PyTorch features +---------------------------- + +The following are GPU-accelerated PyTorch features not currently supported by ROCm. + +.. list-table:: + :widths: 30, 60, 10 + :header-rows: 1 + + * - Feature + - Description + - Since PyTorch + * - APEX batch norm + - Use APEX batch norm instead of PyTorch batch norm. + - 1.6.0 + * - ``torch.backends.cuda`` / ``matmul.allow_tf32`` + - A bool that controls whether TensorFloat-32 tensor cores may be used in + matrix multiplications. + - 1.7 + * - ``torch.cuda`` / NVIDIA Tools Extension (NVTX) + - Integration with NVTX for profiling and debugging GPU performance using + NVIDIA's Nsight tools. + - 1.7.0 + * - ``torch.cuda`` / Lazy loading NVRTC + - Delays JIT compilation with NVRTC until the code is explicitly needed. + - 1.8.0 + * - ``torch-tensorrt`` + - Integrate TensorRT library for optimizing and deploying PyTorch models. + ROCm does not have equialent library for TensorRT. + - 1.9.0 + * - ``torch.backends`` / ``cudnn.allow_tf32`` + - TensorFloat-32 tensor cores may be used in cuDNN convolutions. + - 1.10.0 + * - ``torch.backends.cuda`` / ``matmul.allow_fp16_reduced_precision_reduction`` + - Reduced precision reductions with fp16 accumulation type are + allowed with fp16 GEMMs. + - 2.0 + * - ``torch.backends.cuda`` / ``matmul.allow_bf16_reduced_precision_reduction`` + - Reduced precision reductions are allowed with bf16 GEMMs. + - 2.0 + * - ``torch.nn.functional`` / ``scaled_dot_product_attention`` + - Flash attention backend for SDPA to accelerate attention computation in + transformer-based models. + - 2.0 + * - ``torch.backends.cuda`` / ``enable_cudnn_sdp`` + - Globally enables cuDNN SDPA's kernels within SDPA. + - 2.0 + * - ``torch.backends.cuda`` / ``enable_flash_sdp`` + - Globally enables or disables FlashAttention for SDPA. + - 2.1 + * - ``torch.backends.cuda`` / ``enable_mem_efficient_sdp`` + - Globally enables or disables Memory-Efficient Attention for SDPA. + - 2.1 + * - ``torch.backends.cuda`` / ``enable_math_sdp`` + - Globally enables or disables the PyTorch C++ implementation within SDPA. + - 2.1 + * - Dynamic parallelism + - PyTorch itself does not directly expose dynamic parallelism as a core + feature. Dynamic parallelism allow GPU threads to launch additional + threads which can be reached using custom operations via the + ``torch.utils.cpp_extension`` module. + - Not a core feature + * - Unified memory support in PyTorch + - Unified Memory is not directly exposed in PyTorch's core API, it can be + utilized effectively through custom CUDA extensions or advanced + workflows. + - Not a core feature + +Use cases and recommendations +================================================================================ + +* :doc:`Using ROCm for AI: training a model ` provides + guidance on how to leverage the ROCm platform for training AI models. It covers the steps, tools, and best practices + for optimizing training workflows on AMD GPUs using PyTorch features. + +* :doc:`Single-GPU fine-tuning and inference ` + describes and demonstrates how to use the ROCm platform for the fine-tuning and inference of + machine learning models, particularly large language models (LLMs), on systems with a single AMD + Instinct MI300X accelerator. This page provides a detailed guide for setting up, optimizing, and + executing fine-tuning and inference workflows in such environments. + +* :doc:`Multi-GPU fine-tuning and inference optimization ` + describes and demonstrates the fine-tuning and inference of machine learning models on systems + with multi MI300X accelerators. + +* The :doc:`Instinct MI300X workload optimization guide ` provides detailed + guidance on optimizing workloads for the AMD Instinct MI300X accelerator using ROCm. This guide is aimed at helping + users achieve optimal performance for deep learning and other high-performance computing tasks on the MI300X + accelerator. + +* The :doc:`Inception with PyTorch documentation ` + describes how PyTorch integrates with ROCm for AI workloads It outlines the use of PyTorch on the ROCm platform and + focuses on how to efficiently leverage AMD GPU hardware for training and inference tasks in AI applications. + +For more use cases and recommendations, see `ROCm PyTorch blog posts `_. diff --git a/docs/compatibility/ml-compatibility/tensorflow-compatibility.rst b/docs/compatibility/ml-compatibility/tensorflow-compatibility.rst new file mode 100644 index 000000000..355a70b67 --- /dev/null +++ b/docs/compatibility/ml-compatibility/tensorflow-compatibility.rst @@ -0,0 +1,491 @@ +:orphan: + +.. meta:: + :description: TensorFlow compatibility + :keywords: GPU, TensorFlow compatibility + +******************************************************************************* +TensorFlow compatibility +******************************************************************************* + +`TensorFlow `_ is an open-source library for +solving machine learning, deep learning, and AI problems. It can solve many +problems across different sectors and industries but primarily focuses on +neural network training and inference. It is one of the most popular and +in-demand frameworks and is very active in open-source contribution and +development. + +The `official TensorFlow repository `_ +includes full ROCm support. AMD maintains a TensorFlow `ROCm repository +`_ in order to quickly add bug +fixes, updates, and support for the latest ROCM versions. + +- ROCm TensorFlow release: + + - Offers :ref:`Docker images ` with + ROCm and TensorFlow pre-installed. + + - ROCm TensorFlow repository: ``_ + + - See the :doc:`ROCm TensorFlow installation guide ` + to get started. + +- Official TensorFlow release: + + - Official TensorFlow repository: ``_ + + - See the `TensorFlow API versions `_ list. + + .. note:: + + The official TensorFlow documentation does not cover ROCm support. Use the + ROCm documentation for installation instructions for Tensorflow on ROCm. + See :doc:`rocm-install-on-linux:install/3rd-party/tensorflow-install`. + +.. _tensorflow-docker-compat: + +Docker image compatibility +=============================================================================== + +.. |docker-icon| raw:: html + + + +AMD validates and publishes ready-made `TensorFlow images +`_ with ROCm backends on +Docker Hub. The following Docker image tags and associated inventories are +validated for `ROCm 6.3.1 `_. Click +the |docker-icon| icon to view the image on Docker Hub. + +.. list-table:: TensorFlow Docker image components + :header-rows: 1 + + * - Docker image + - TensorFlow + - Dev + - Python + - TensorBoard + + * - .. raw:: html + + rocm/tensorflow + + - `tensorflow-rocm 2.17.0 `__ + - dev + - `Python 3.12 `_ + - `TensorBoard 2.17.1 `_ + + * - .. raw:: html + + rocm/tensorflow + + - `tensorflow-rocm 2.17.0 `__ + - dev + - `Python 3.10 `_ + - `TensorBoard 2.17.0 `_ + + * - .. raw:: html + + rocm/tensorflow + + - `tensorflow-rocm 2.16.2 `__ + - dev + - `Python 3.12 `_ + - `TensorBoard 2.16.2 `_ + + * - .. raw:: html + + rocm/tensorflow + + - `tensorflow-rocm 2.16.2 `__ + - dev + - `Python 3.10 `_ + - `TensorBoard 2.16.2 `_ + + * - .. raw:: html + + rocm/tensorflow + + - `tensorflow-rocm 2.15.1 `_ + - dev + - `Python 3.10 `_ + - `TensorBoard 2.15.2 `_ + +Critical ROCm libraries for TensorFlow +=============================================================================== + +TensorFlow depends on multiple components and the supported features of those +components can affect the TensorFlow ROCm supported feature set. The versions +in the following table refer to the first TensorFlow version where the ROCm +library was introduced as a dependency. + +.. list-table:: + :widths: 25, 10, 35, 30 + :header-rows: 1 + + * - ROCm library + - Version + - Purpose + - Used in + * - `hipBLAS `_ + - 2.3.0 + - Provides GPU-accelerated Basic Linear Algebra Subprograms (BLAS) for + matrix and vector operations. + - Accelerates operations like ``tf.matmul``, ``tf.linalg.matmul``, and + other matrix multiplications commonly used in neural network layers. + * - `hipBLASLt `_ + - 0.10.0 + - Extends hipBLAS with additional optimizations like fused kernels and + integer tensor cores. + - Optimizes matrix multiplications and linear algebra operations used in + layers like dense, convolutional, and RNNs in TensorFlow. + * - `hipCUB `_ + - 3.3.0 + - Provides a C++ template library for parallel algorithms for reduction, + scan, sort and select. + - Supports operations like ``tf.reduce_sum``, ``tf.cumsum``, ``tf.sort`` + and other tensor operations in TensorFlow, especially those involving + scanning, sorting, and filtering. + * - `hipFFT `_ + - 1.0.17 + - Accelerates Fast Fourier Transforms (FFT) for signal processing tasks. + - Used for operations like signal processing, image filtering, and + certain types of neural networks requiring FFT-based transformations. + * - `hipSOLVER `_ + - 2.3.0 + - Provides GPU-accelerated direct linear solvers for dense and sparse + systems. + - Optimizes linear algebra functions such as solving systems of linear + equations, often used in optimization and training tasks. + * - `hipSPARSE `_ + - 3.1.2 + - Optimizes sparse matrix operations for efficient computations on sparse + data. + - Accelerates sparse matrix operations in models with sparse weight + matrices or activations, commonly used in neural networks. + * - `MIOpen `_ + - 3.3.0 + - Provides optimized deep learning primitives such as convolutions, + pooling, + normalization, and activation functions. + - Speeds up convolutional neural networks (CNNs) and other layers. Used + in TensorFlow for layers like ``tf.nn.conv2d``, ``tf.nn.relu``, and + ``tf.nn.lstm_cell``. + * - `RCCL `_ + - 2.21.5 + - Optimizes for multi-GPU communication for operations like AllReduce and + Broadcast. + - Distributed data parallel training (``tf.distribute.MirroredStrategy``). + Handles communication in multi-GPU setups. + * - `rocThrust `_ + - 3.3.0 + - Provides a C++ template library for parallel algorithms like sorting, + reduction, and scanning. + - Reduction operations like ``tf.reduce_sum``, ``tf.cumsum`` for computing + the cumulative sum of elements along a given axis or ``tf.unique`` to + finds unique elements in a tensor can use rocThrust. + +Supported and unsupported features +=============================================================================== + +The following section maps supported data types and GPU-accelerated TensorFlow +features to their minimum supported ROCm and TensorFlow versions. + +Data types +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The data type of a tensor is specified using the ``dtype`` attribute or +argument, and TensorFlow supports a wide range of data types for different use +cases. + +The basic, single data types of `tf.dtypes `_ +are as follows: + +.. list-table:: + :header-rows: 1 + + * - Data type + - Description + - Since TensorFlow + - Since ROCm + * - ``bfloat16`` + - 16-bit bfloat (brain floating point). + - 1.0.0 + - 1.7 + * - ``bool`` + - Boolean. + - 1.0.0 + - 1.7 + * - ``complex128`` + - 128-bit complex. + - 1.0.0 + - 1.7 + * - ``complex64`` + - 64-bit complex. + - 1.0.0 + - 1.7 + * - ``double`` + - 64-bit (double precision) floating-point. + - 1.0.0 + - 1.7 + * - ``float16`` + - 16-bit (half precision) floating-point. + - 1.0.0 + - 1.7 + * - ``float32`` + - 32-bit (single precision) floating-point. + - 1.0.0 + - 1.7 + * - ``float64`` + - 64-bit (double precision) floating-point. + - 1.0.0 + - 1.7 + * - ``half`` + - 16-bit (half precision) floating-point. + - 2.0.0 + - 2.0 + * - ``int16`` + - Signed 16-bit integer. + - 1.0.0 + - 1.7 + * - ``int32`` + - Signed 32-bit integer. + - 1.0.0 + - 1.7 + * - ``int64`` + - Signed 64-bit integer. + - 1.0.0 + - 1.7 + * - ``int8`` + - Signed 8-bit integer. + - 1.0.0 + - 1.7 + * - ``qint16`` + - Signed quantized 16-bit integer. + - 1.0.0 + - 1.7 + * - ``qint32`` + - Signed quantized 32-bit integer. + - 1.0.0 + - 1.7 + * - ``qint8`` + - Signed quantized 8-bit integer. + - 1.0.0 + - 1.7 + * - ``quint16`` + - Unsigned quantized 16-bit integer. + - 1.0.0 + - 1.7 + * - ``quint8`` + - Unsigned quantized 8-bit integer. + - 1.0.0 + - 1.7 + * - ``resource`` + - Handle to a mutable, dynamically allocated resource. + - 1.0.0 + - 1.7 + * - ``string`` + - Variable-length string, represented as byte array. + - 1.0.0 + - 1.7 + * - ``uint16`` + - Unsigned 16-bit (word) integer. + - 1.0.0 + - 1.7 + * - ``uint32`` + - Unsigned 32-bit (dword) integer. + - 1.5.0 + - 1.7 + * - ``uint64`` + - Unsigned 64-bit (qword) integer. + - 1.5.0 + - 1.7 + * - ``uint8`` + - Unsigned 8-bit (byte) integer. + - 1.0.0 + - 1.7 + * - ``variant`` + - Data of arbitrary type (known at runtime). + - 1.4.0 + - 1.7 + +Features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This table provides an overview of key features in TensorFlow and their +availability in ROCm. + +.. list-table:: + :header-rows: 1 + + * - Module + - Description + - Since TensorFlow + - Since ROCm + * - ``tf.linalg`` (Linear Algebra) + - Operations for matrix and tensor computations, such as + ``tf.linalg.matmul`` (matrix multiplication), ``tf.linalg.inv`` + (matrix inversion) and ``tf.linalg.cholesky`` (Cholesky decomposition). + These leverage GPUs for high-performance linear algebra operations. + - 1.4 + - 1.8.2 + * - ``tf.nn`` (Neural Network Operations) + - GPU-accelerated building blocks for deep learning models, such as 2D + convolutions with ``tf.nn.conv2d``, max pooling operations with + ``tf.nn.max_pool``, activation functions like ``tf.nn.relu`` or softmax + for output layers with ``tf.nn.softmax``. + - 1.0 + - 1.8.2 + * - ``tf.image`` (Image Processing) + - GPU-accelerated functions for image preprocessing and augmentations, + such as resize images with ``tf.image.resize``, flip images horizontally + with ``tf.image.flip_left_right`` and adjust image brightness randomly + with ``tf.image.random_brightness``. + - 1.1 + - 1.8.2 + * - ``tf.keras`` (High-Level API) + - GPU acceleration for Keras layers and models, including dense layers + (``tf.keras.layers.Dense``), convolutional layers + (``tf.keras.layers.Conv2D``) and recurrent layers + (``tf.keras.layers.LSTM``). + - 1.4 + - 1.8.2 + * - ``tf.math`` (Mathematical Operations) + - GPU-accelerated mathematical operations, such as sum across dimensions + with ``tf.math.reduce_sum``, elementwise exponentiation with + ``tf.math.exp`` and sigmoid activation (``tf.math.sigmoid``). + - 1.5 + - 1.8.2 + * - ``tf.signal`` (Signal Processing) + - Functions for spectral analysis and signal transformations. + - 1.13 + - 2.1 + * - ``tf.data`` (Data Input Pipeline) + - GPU-accelerated data preprocessing for efficient input pipelines, + Prefetching with ``tf.data.experimental.AUTOTUNE``. GPU-enabled + transformations like map and batch. + - 1.4 + - 1.8.2 + * - ``tf.distribute`` (Distributed Training) + - Enabling to scale computations across multiple devices on a single + machine or across multiple machines. + - 1.13 + - 2.1 + * - ``tf.random`` (Random Number Generation) + - GPU-accelerated random number generation + - 1.12 + - 1.9.2 + * - ``tf.TensorArray`` (Dynamic Array Operations) + - Enables dynamic tensor manipulation on GPUs. + - 1.0 + - 1.8.2 + * - ``tf.sparse`` (Sparse Tensor Operations) + - GPU-accelerated sparse matrix manipulations. + - 1.9 + - 1.9.0 + * - ``tf.experimental.numpy`` + - GPU-accelerated NumPy-like API for numerical computations. + - 2.4 + - 4.1.1 + * - ``tf.RaggedTensor`` + - Handling of variable-length sequences and ragged tensors with GPU + support. + - 1.13 + - 2.1 + * - ``tf.function`` with XLA (Accelerated Linear Algebra) + - Enable GPU-accelerated functions in optimization. + - 1.14 + - 2.4 + * - ``tf.quantization`` + - Quantized operations for inference, accelerated on GPUs. + - 1.12 + - 1.9.2 + +Distributed library features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Enables developers to scale computations across multiple devices on a single machine or +across multiple machines. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since TensorFlow + - Since ROCm + * - ``MultiWorkerMirroredStrategy`` + - Synchronous training across multiple workers using mirrored variables. + - 2.0 + - 3.0 + * - ``MirroredStrategy`` + - Synchronous training across multiple GPUs on one machine. + - 1.5 + - 2.5 + * - ``TPUStrategy`` + - Efficiently trains models on Google TPUs. + - 1.9 + - ❌ + * - ``ParameterServerStrategy`` + - Asynchronous training using parameter servers for variable management. + - 2.1 + - 4.0 + * - ``CentralStorageStrategy`` + - Keeps variables on a single device and performs computation on multiple + devices. + - 2.3 + - 4.1 + * - ``CollectiveAllReduceStrategy`` + - Synchronous training across multiple devices and hosts. + - 1.14 + - 3.5 + * - Distribution Strategies API + - High-level API to simplify distributed training configuration and + execution. + - 1.10 + - 3.0 + +Unsupported TensorFlow features +=============================================================================== + +The following are GPU-accelerated TensorFlow features not currently supported by +ROCm. + +.. list-table:: + :header-rows: 1 + + * - Feature + - Description + - Since TensorFlow + * - Mixed Precision with TF32 + - Mixed precision with TF32 is used for matrix multiplications, + convolutions, and other linear algebra operations, particularly in + deep learning workloads like CNNs and transformers. + - 2.4 + * - ``tf.distribute.TPUStrategy`` + - Efficiently trains models on Google TPUs. + - 1.9 + +Use cases and recommendations +=============================================================================== + +* The `Training a Neural Collaborative Filtering (NCF) Recommender on an AMD + GPU `_ + blog post discusses training an NCF recommender system using TensorFlow. It + explains how NCF improves traditional collaborative filtering methods by + leveraging neural networks to model non-linear user-item interactions. The + post outlines the implementation using the recommenders library, focusing on + the use of implicit data (for example, user interactions like viewing or + purchasing) and how it addresses challenges like the lack of negative values. + +* The `Creating a PyTorch/TensorFlow code environment on AMD GPUs + `_ + blog post provides instructions for creating a machine learning environment + for PyTorch and TensorFlow on AMD GPUs using ROCm. It covers steps like + installing the libraries, cloning code repositories, installing dependencies, + and troubleshooting potential issues with CUDA-based code. Additionally, it + explains how to HIPify code (port CUDA code to HIP) and manage Docker images + for a better experience on AMD GPUs. This guide aims to help data scientists + and ML practitioners adapt their code for AMD GPUs. + +For more use cases and recommendations, see the `ROCm Tensorflow blog posts `_. diff --git a/docs/conceptual/ai-pytorch-inception.md b/docs/conceptual/ai-pytorch-inception.md index 083dfea7d..9dc1b628c 100644 --- a/docs/conceptual/ai-pytorch-inception.md +++ b/docs/conceptual/ai-pytorch-inception.md @@ -53,7 +53,7 @@ The following sections contain case studies for the Inception V3 model. ### Inception V3 with PyTorch -Convolution Neural Networks are forms of artificial neural networks commonly used for image processing. One of the core layers of such a network is the convolutional layer, which convolves the input with a weight tensor and passes the result to the next layer. Inception V3[^inception_arch] is an architectural development over the ImageNet competition-winning entry, AlexNet, using more profound and broader networks while attempting to meet computational and memory budgets. +Convolution Neural Networks are forms of artificial neural networks commonly used for image processing. One of the core layers of such a network is the convolutional layer, which convolves the input with a weight tensor and passes the result to the next layer. Inception V3 is an architectural development over the ImageNet competition-winning entry, AlexNet, using more profound and broader networks while attempting to meet computational and memory budgets. The implementation uses PyTorch as a framework. This case study utilizes [TorchVision](https://pytorch.org/vision/stable/index.html), a repository of popular datasets and model architectures, for obtaining the model. TorchVision also provides pre-trained weights as a starting point to develop new models or fine-tune the model for a new task. @@ -162,7 +162,7 @@ Follow these steps: docker run -it --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 8G rocm/pytorch:latest ``` -2. Download an ImageNet database. For this example, the `tiny-imagenet-200`[^Stanford_deep_learning], a smaller ImageNet variant with 200 image classes and a training dataset with 100,000 images, was downsized to 64x64 color images. +2. Download an ImageNet database. For this example, the `tiny-imagenet-200`, a smaller ImageNet variant with 200 image classes and a training dataset with 100,000 images, was downsized to 64x64 color images. ```bash wget http://cs231n.stanford.edu/tiny-imagenet-200.zip @@ -366,7 +366,7 @@ Follow these steps: model.to(device) ``` -13. Set the loss criteria. For this example, Cross Entropy Loss[^cross_entropy] is used. +13. Set the loss criteria. For this example, Cross Entropy Loss is used. ```py criterion = torch.nn.CrossEntropyLoss() @@ -586,7 +586,7 @@ Follow these steps: import torch.optim as optim ``` -10. Set the loss criteria. For this example, Cross Entropy Loss[^cross_entropy] is used. +10. Set the loss criteria. For this example, Cross Entropy Loss is used. ```py criterion = nn.CrossEntropyLoss() diff --git a/docs/conceptual/gpu-arch/mi100.md b/docs/conceptual/gpu-arch/mi100.md index 2262a60eb..f98d4c0db 100644 --- a/docs/conceptual/gpu-arch/mi100.md +++ b/docs/conceptual/gpu-arch/mi100.md @@ -1,8 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description lang=en": "Learn about the AMD Instinct MI100 series architecture." + "keywords": "Instinct, MI100, microarchitecture, AMD, ROCm" +--- # AMD Instinct™ MI100 microarchitecture diff --git a/docs/conceptual/gpu-arch/mi250.md b/docs/conceptual/gpu-arch/mi250.md index ce357ca68..47f7f8b1b 100644 --- a/docs/conceptual/gpu-arch/mi250.md +++ b/docs/conceptual/gpu-arch/mi250.md @@ -1,8 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description lang=en": "Learn about the AMD Instinct MI250 series architecture." + "keywords": "Instinct, MI250, microarchitecture, AMD, ROCm" +--- # AMD Instinct™ MI250 microarchitecture diff --git a/docs/conceptual/gpu-arch/mi300-mi200-performance-counters.rst b/docs/conceptual/gpu-arch/mi300-mi200-performance-counters.rst index e9453e4ef..f35afb070 100644 --- a/docs/conceptual/gpu-arch/mi300-mi200-performance-counters.rst +++ b/docs/conceptual/gpu-arch/mi300-mi200-performance-counters.rst @@ -615,7 +615,6 @@ The following table shows the hardware counters *by* all texture addressing unit "``TA_FLAT_READ_WAVEFRONTS_sum``", "Sum of flat opcode reads processed" "``TA_FLAT_WRITE_WAVEFRONTS_sum``", "Sum of flat opcode writes processed" "``TA_FLAT_WAVEFRONTS_sum``", "Total number of flat opcode wavefronts processed" - "``TA_FLAT_READ_WAVEFRONTS_sum``", "Total number of flat opcode read wavefronts processed" "``TA_FLAT_ATOMIC_WAVEFRONTS_sum``", "Total number of flat opcode atomic wavefronts processed" "``TA_TOTAL_WAVEFRONTS_sum``", "Total number of wavefronts processed" diff --git a/docs/conceptual/gpu-arch/mi300.md b/docs/conceptual/gpu-arch/mi300.md index b178af558..f5b66ceae 100644 --- a/docs/conceptual/gpu-arch/mi300.md +++ b/docs/conceptual/gpu-arch/mi300.md @@ -1,3 +1,10 @@ +--- +myst: + html_meta: + "description lang=en": "Learn about the AMD Instinct MI300 series architecture." + "keywords": "Instinct, MI300X, MI300A, microarchitecture, AMD, ROCm" +--- + # AMD Instinct™ MI300 series microarchitecture The AMD Instinct MI300 series accelerators are based on the AMD CDNA 3 diff --git a/docs/conf.py b/docs/conf.py index 2e13cadc9..4fb5ce5e0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -29,60 +29,49 @@ if os.environ.get("READTHEDOCS", "") == "True": # configurations for PDF output by Read the Docs project = "ROCm Documentation" author = "Advanced Micro Devices, Inc." -copyright = "Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved." -version = "6.3.1" -release = "6.3.1" +copyright = "Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved." +version = "6.3.2" +release = "6.3.2" setting_all_article_info = True all_article_info_os = ["linux", "windows"] all_article_info_author = "" # pages with specific settings article_pages = [ - {"file": "about/release-notes", "os": ["linux", "windows"], "date": "2024-12-20"}, + {"file": "about/release-notes", "os": ["linux"], "date": "2025-01-27"}, + {"file": "compatibility/compatibility-matrix", "os": ["linux"]}, + {"file": "compatibility/ml-compatibility/pytorch-compatibility", "os": ["linux"]}, + {"file": "compatibility/ml-compatibility/tensorflow-compatibility", "os": ["linux"]}, + {"file": "compatibility/ml-compatibility/jax-compatibility", "os": ["linux"]}, {"file": "how-to/deep-learning-rocm", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/index", "os": ["linux"]}, - {"file": "how-to/rocm-for-ai/install", "os": ["linux"]}, - {"file": "how-to/rocm-for-ai/train-a-model", "os": ["linux"]}, - {"file": "how-to/rocm-for-ai/accelerate-training", "os": ["linux"]}, - {"file": "how-to/rocm-for-ai/deploy-your-model", "os": ["linux"]}, - {"file": "how-to/rocm-for-ai/hugging-face-models", "os": ["linux"]}, - {"file": "how-to/rocm-for-hpc/index", "os": ["linux"]}, - {"file": "how-to/llm-fine-tuning-optimization/index", "os": ["linux"]}, - {"file": "how-to/llm-fine-tuning-optimization/overview", "os": ["linux"]}, - { - "file": "how-to/llm-fine-tuning-optimization/fine-tuning-and-inference", - "os": ["linux"], - }, - { - "file": "how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference", - "os": ["linux"], - }, - { - "file": "how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference", - "os": ["linux"], - }, - { - "file": "how-to/llm-fine-tuning-optimization/llm-inference-frameworks", - "os": ["linux"], - }, - { - "file": "how-to/llm-fine-tuning-optimization/model-acceleration-libraries", - "os": ["linux"], - }, - {"file": "how-to/llm-fine-tuning-optimization/model-quantization", "os": ["linux"]}, - { - "file": "how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel", - "os": ["linux"], - }, - { - "file": "how-to/llm-fine-tuning-optimization/optimizing-triton-kernel", - "os": ["linux"], - }, - { - "file": "how-to/llm-fine-tuning-optimization/profiling-and-debugging", - "os": ["linux"], - }, - {"file": "how-to/performance-validation/mi300x/vllm-benchmark", "os": ["linux"]}, + + {"file": "how-to/rocm-for-ai/training/index", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/training/train-a-model", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/training/scale-model-training", "os": ["linux"]}, + + {"file": "how-to/rocm-for-ai/fine-tuning/index", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/fine-tuning/overview", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/fine-tuning/fine-tuning-and-inference", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/fine-tuning/single-gpu-fine-tuning-and-inference", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/fine-tuning/multi-gpu-fine-tuning-and-inference", "os": ["linux"]}, + + {"file": "how-to/rocm-for-ai/inference/index", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference/install", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference/hugging-face-models", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference/llm-inference-frameworks", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference/vllm-benchmark", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference/deploy-your-model", "os": ["linux"]}, + + {"file": "how-to/rocm-for-ai/inference-optimization/index", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference-optimization/model-quantization", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference-optimization/optimizing-with-composable-kernel", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference-optimization/optimizing-triton-kernel", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference-optimization/profiling-and-debugging", "os": ["linux"]}, + {"file": "how-to/rocm-for-ai/inference-optimization/workload", "os": ["linux"]}, + {"file": "how-to/system-optimization/index", "os": ["linux"]}, {"file": "how-to/system-optimization/mi300x", "os": ["linux"]}, {"file": "how-to/system-optimization/mi200", "os": ["linux"]}, @@ -101,6 +90,9 @@ extensions = ["rocm_docs", "sphinx_reredirects", "sphinx_sitemap"] external_projects_current_project = "rocm" +# Uncomment if facing rate limit exceed issue with local build +# external_projects_remote_repository = "" + html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "https://rocm-stg.amd.com/") html_context = {} if os.environ.get("READTHEDOCS", "") == "True": diff --git a/docs/data/how-to/gpu-enabled-mpi-1.png b/docs/data/how-to/gpu-enabled-mpi-1.png deleted file mode 100644 index 9146acb94..000000000 Binary files a/docs/data/how-to/gpu-enabled-mpi-1.png and /dev/null differ diff --git a/docs/data/rocm-software-stack-6_3_2.jpg b/docs/data/rocm-software-stack-6_3_2.jpg new file mode 100644 index 000000000..760a4ff2e Binary files /dev/null and b/docs/data/rocm-software-stack-6_3_2.jpg differ diff --git a/docs/how-to/deep-learning-rocm.rst b/docs/how-to/deep-learning-rocm.rst index c96a82668..606e13cf2 100644 --- a/docs/how-to/deep-learning-rocm.rst +++ b/docs/how-to/deep-learning-rocm.rst @@ -14,9 +14,9 @@ frameworks to ensure that framework-specific optimizations take advantage of AMD The following guides provide information on compatibility and supported features for these ROCm-enabled deep learning frameworks. -* :doc:`PyTorch compatibility <../compatibility/pytorch-compatibility>` -.. * :doc:`TensorFlow compatibility <../compatibility/tensorflow-compatibility>` -.. * :doc:`JAX compatibility <../compatibility/jax-compatibility>` +* :doc:`PyTorch compatibility <../compatibility/ml-compatibility/pytorch-compatibility>` +* :doc:`TensorFlow compatibility <../compatibility/ml-compatibility/tensorflow-compatibility>` +* :doc:`JAX compatibility <../compatibility/ml-compatibility/jax-compatibility>` This chart steps through typical installation workflows for installing deep learning frameworks for ROCm. @@ -39,5 +39,11 @@ through the following guides. * :doc:`rocm-for-ai/index` -* :doc:`llm-fine-tuning-optimization/index` +* :doc:`Training ` + +* :doc:`Fine-tuning LLMs ` + +* :doc:`Inference ` + +* :doc:`Inference optimization ` diff --git a/docs/how-to/gpu-enabled-mpi.rst b/docs/how-to/gpu-enabled-mpi.rst deleted file mode 100644 index f85920a85..000000000 --- a/docs/how-to/gpu-enabled-mpi.rst +++ /dev/null @@ -1,264 +0,0 @@ -.. meta:: - :description: GPU-enabled Message Passing Interface - :keywords: Message Passing Interface, MPI, AMD, ROCm - -*************************************************************************************************** -GPU-enabled Message Passing Interface -*************************************************************************************************** - -The Message Passing Interface (`MPI `_) is a standard API for distributed -and parallel application development that can scale to multi-node clusters. To facilitate the porting of -applications to clusters with GPUs, ROCm enables various technologies. You can use these -technologies add GPU pointers to MPI calls and enable ROCm-aware MPI libraries to deliver optimal -performance for both intra-node and inter-node GPU-to-GPU communication. - -The AMD kernel driver exposes remote direct memory access (RDMA) through *PeerDirect* interfaces. -This allows network interface cards (NICs) to directly read and write to RDMA-capable GPU device -memory, resulting in high-speed direct memory access (DMA) transfers between GPU and NIC. These -interfaces are used to optimize inter-node MPI message communication. - -The Open MPI project is an open source implementation of the MPI. It's developed and maintained by -a consortium of academic, research, and industry partners. To compile Open MPI with ROCm support, -refer to the following sections: - -* :ref:`open-mpi-ucx` -* :ref:`open-mpi-libfabric` - -.. _open-mpi-ucx: - -ROCm-aware Open MPI on InfiniBand and RoCE networks using UCX -================================================================ - -The `Unified Communication Framework `_ (UCX), is an -open source, cross-platform framework designed to provide a common set of communication -interfaces for various network programming models and interfaces. UCX uses ROCm technologies to -implement various network operation primitives. UCX is the standard communication library for -InfiniBand and RDMA over Converged Ethernet (RoCE) network interconnect. To optimize data -transfer operations, many MPI libraries, including Open MPI, can leverage UCX internally. - -UCX and Open MPI have a compile option to enable ROCm support. To install and configure UCX to compile Open MPI for ROCm, use the following instructions. - -1. Set environment variables to install all software components in the same base directory. We use the -home directory in our example, but you can specify a different location if you want. - - .. code-block:: shell - - export INSTALL_DIR=$HOME/ompi_for_gpu - export BUILD_DIR=/tmp/ompi_for_gpu_build - mkdir -p $BUILD_DIR - -2. Install UCX. To view UCX and ROCm version compatibility, refer to the -`communication libraries tables `_ - - .. code-block:: shell - - export UCX_DIR=$INSTALL_DIR/ucx - cd $BUILD_DIR - git clone https://github.com/openucx/ucx.git -b v1.15.x - cd ucx - ./autogen.sh - mkdir build - cd build - ../configure -prefix=$UCX_DIR \ - --with-rocm=/opt/rocm - make -j $(nproc) - make -j $(nproc) install - -3. Install Open MPI. - - .. code-block:: shell - - export OMPI_DIR=$INSTALL_DIR/ompi - cd $BUILD_DIR - git clone --recursive https://github.com/open-mpi/ompi.git \ - -b v5.0.x - cd ompi - ./autogen.pl - mkdir build - cd build - ../configure --prefix=$OMPI_DIR --with-ucx=$UCX_DIR \ - --with-rocm=/opt/rocm - make -j $(nproc) - make install - -.. _rocm-enabled-osu: - -ROCm-enabled OSU benchmarks ---------------------------------------------------------------------------------------------------------------- - -You can use OSU Micro Benchmarks (OMB) to evaluate the performance of various primitives on -ROCm-supported AMD GPUs. The ``--enable-rocm`` option exposes this functionality. - -.. code-block:: shell - - export OSU_DIR=$INSTALL_DIR/osu - cd $BUILD_DIR - wget http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.2.tar.gz - tar xfz osu-micro-benchmarks-7.2.tar.gz - cd osu-micro-benchmarks-7.2 - ./configure --enable-rocm \ - --with-rocm=/opt/rocm \ - CC=$OMPI_DIR/bin/mpicc CXX=$OMPI_DIR/bin/mpicxx \ - LDFLAGS="-L$OMPI_DIR/lib/ -lmpi -L/opt/rocm/lib/ \ - $(hipconfig -C) -lamdhip64" CXXFLAGS="-std=c++11" - make -j $(nproc) - -Intra-node run ----------------------------------------------------------------------------------------------------------------- - -Before running an Open MPI job, you must set the following environment variables to ensure that -you're using the correct versions of Open MPI and UCX. - -.. code-block:: shell - - export LD_LIBRARY_PATH=$OMPI_DIR/lib:$UCX_DIR/lib:/opt/rocm/lib - export PATH=$OMPI_DIR/bin:$PATH - -To run the OSU bandwidth benchmark between the first two GPU devices (``GPU 0`` and ``GPU 1``) -inside the same node, use the following code. - -.. code-block:: shell - - $OMPI_DIR/bin/mpirun -np 2 \ - -x UCX_TLS=sm,self,rocm \ - --mca pml ucx \ - ./c/mpi/pt2pt/standard/osu_bw D D - -This measures the unidirectional bandwidth from the first device (``GPU 0``) to the second device -(``GPU 1``). To select specific devices, for example ``GPU 2`` and ``GPU 3``, include the following -command: - -.. code-block:: shell - - export HIP_VISIBLE_DEVICES=2,3 - -To force using a copy kernel instead of a DMA engine for the data transfer, use the following -command: - -.. code-block:: shell - - export HSA_ENABLE_SDMA=0 - -The following output shows the effective transfer bandwidth measured for inter-die data transfer -between ``GPU 2`` and ``GPU 3`` on a system with MI250 GPUs. For messages larger than 67 MB, an effective -utilization of about 150 GB/sec is achieved: - -.. image:: ../data/how-to/gpu-enabled-mpi-1.png - :width: 400 - :alt: Inter-GPU bandwidth for various payload sizes - -Collective operations ----------------------------------------------------------------------------------------------------------------- - -Collective operations on GPU buffers are best handled through the Unified Collective Communication -(UCC) library component in Open MPI. To accomplish this, you must configure and compile the UCC -library with ROCm support. - -.. note:: - - You can verify UCC and ROCm version compatibility using the - `communication libraries tables `_ - -.. code-block:: shell - - export UCC_DIR=$INSTALL_DIR/ucc - git clone https://github.com/openucx/ucc.git -b v1.2.x - cd ucc - ./autogen.sh - ./configure --with-rocm=/opt/rocm \ - --with-ucx=$UCX_DIR \ - --prefix=$UCC_DIR - make -j && make install - - # Configure and compile Open MPI with UCX, UCC, and ROCm support - cd ompi - ./configure --with-rocm=/opt/rocm \ - --with-ucx=$UCX_DIR \ - --with-ucc=$UCC_DIR - --prefix=$OMPI_DIR - -To use the UCC component with an MPI application, you must set additional parameters: - -.. code-block:: shell - - mpirun --mca pml ucx --mca osc ucx \ - --mca coll_ucc_enable 1 \ - --mca coll_ucc_priority 100 -np 64 ./my_mpi_app - -.. _open-mpi-libfabric: - -ROCm-aware Open MPI using libfabric -================================================================ - -For network interconnects that are not covered in the previous category, such as HPE Slingshot, -ROCm-aware communication can often be achieved through the libfabric library. For more information, -refer to the `libfabric documentation `_. - -.. note:: - - When using Open MPI v5.0.x with libfabric support, shared memory communication between - processes on the same node goes through the *ob1/sm* component. This component has - fundamental support for GPU memory that is, accomplished by using a staging host buffer - Consequently, the performance of device-to-device shared memory communication is lower than - the theoretical peak performance allowed by the GPU-to-GPU interconnect. - -1. Install libfabric. Note that libfabric is often pre-installed. To determine if it's already installed, run: - - .. code-block:: shell - - module avail libfabric - - Alternatively, you can download and compile libfabric with ROCm support. Note that not all - components required to support some networks (e.g., HPE Slingshot) are available in the open source - repository. Therefore, using a pre-installed libfabric library is strongly recommended over compiling - libfabric manually. - - If a pre-compiled libfabric library is available on your system, you can skip the following step. - -2. Compile libfabric with ROCm support. - - .. code-block:: shell - - export OFI_DIR=$INSTALL_DIR/ofi - cd $BUILD_DIR - git clone https://github.com/ofiwg/libfabric.git -b v1.19.x - cd libfabric - ./autogen.sh - ./configure --prefix=$OFI_DIR \ - --with-rocr=/opt/rocm - make -j $(nproc) - make install - -Installing Open MPI with libfabric support ----------------------------------------------------------------------------------------------------------------- - -To build Open MPI with libfabric, use the following code: - -.. code-block:: shell - - export OMPI_DIR=$INSTALL_DIR/ompi - cd $BUILD_DIR - git clone --recursive https://github.com/open-mpi/ompi.git \ - -b v5.0.x - cd ompi - ./autogen.pl - mkdir build - cd build - ../configure --prefix=$OMPI_DIR --with-ofi=$OFI_DIR \ - --with-rocm=/opt/rocm - make -j $(nproc) - make install - -ROCm-aware OSU with Open MPI and libfabric ----------------------------------------------------------------------------------------------------------------- - -Compiling a ROCm-aware version of OSU benchmarks with Open MPI and libfabric uses the same -process described in :ref:`rocm-enabled-osu`. - -To run an OSU benchmark using multiple nodes, use the following code: - -.. code-block:: shell - - export LD_LIBRARY_PATH=$OMPI_DIR/lib:$OFI_DIR/lib64:/opt/rocm/lib - $OMPI_DIR/bin/mpirun --mca pml ob1 --mca btl_ofi_mode 2 -np 2 \ - ./c/mpi/pt2pt/standard/osu_bw D D diff --git a/docs/how-to/llm-fine-tuning-optimization/index.rst b/docs/how-to/llm-fine-tuning-optimization/index.rst deleted file mode 100644 index a966a9b95..000000000 --- a/docs/how-to/llm-fine-tuning-optimization/index.rst +++ /dev/null @@ -1,37 +0,0 @@ -.. meta:: - :description: How to fine-tune LLMs with ROCm - :keywords: ROCm, LLM, fine-tuning, usage, tutorial - -******************************************* -Fine-tuning LLMs and inference optimization -******************************************* - -ROCm empowers the fine-tuning and optimization of large language models, making them accessible and efficient for -specialized tasks. ROCm supports the broader AI ecosystem to ensure seamless integration with open frameworks, -models, and tools. - -For more information, see `What is ROCm? `_ - -Throughout the following topics, this guide discusses the goals and :ref:`challenges of fine-tuning a large language -model ` like Llama 2. Then, it introduces :ref:`common methods of optimizing your -fine-tuning ` using techniques like LoRA with libraries like PEFT. In the -sections that follow, you'll find practical guides on libraries and tools to accelerate your fine-tuning. - -- :doc:`Conceptual overview of fine-tuning LLMs ` - -- :doc:`Fine-tuning and inference ` using a - :doc:`single-accelerator ` or - :doc:`multi-accelerator ` system. - -- :doc:`Model quantization ` - -- :doc:`Model acceleration libraries ` - -- :doc:`LLM inference frameworks ` - -- :doc:`Optimizing with Composable Kernel ` - -- :doc:`Optimizing Triton kernels ` - -- :doc:`Profiling and debugging ` - diff --git a/docs/how-to/programming_guide.rst b/docs/how-to/programming_guide.rst index 8a489b20d..54ebc93e9 100644 --- a/docs/how-to/programming_guide.rst +++ b/docs/how-to/programming_guide.rst @@ -1,3 +1,5 @@ +:orphan: + .. meta:: :description: Programming guide :keywords: HIP, programming guide, heterogeneous programming, AMD GPU programming @@ -12,7 +14,7 @@ ROCm provides a robust environment for heterogeneous programs running on CPUs and AMD GPUs. ROCm supports various programming languages and frameworks to help developers access the power of AMD GPUs. The natively supported programming languages are HIP (Heterogeneous-Compute Interface for Portability) and -OpenCL, but HIP bindings are available for Python and Fortran. +OpenCL, but HIP bindings are available for Python and Fortran. HIP is an API based on C++ that provides a runtime and kernel language for GPU programming and is the essential ROCm programming language. HIP is also designed diff --git a/docs/how-to/llm-fine-tuning-optimization/fine-tuning-and-inference.rst b/docs/how-to/rocm-for-ai/fine-tuning/fine-tuning-and-inference.rst similarity index 83% rename from docs/how-to/llm-fine-tuning-optimization/fine-tuning-and-inference.rst rename to docs/how-to/rocm-for-ai/fine-tuning/fine-tuning-and-inference.rst index 0c0251fd1..3542706db 100644 --- a/docs/how-to/llm-fine-tuning-optimization/fine-tuning-and-inference.rst +++ b/docs/how-to/rocm-for-ai/fine-tuning/fine-tuning-and-inference.rst @@ -1,6 +1,6 @@ .. meta:: - :description: How to fine-tune LLMs with ROCm - :keywords: ROCm, LLM, fine-tuning, inference, usage, tutorial + :description: How to fine-tune models with ROCm + :keywords: ROCm, LLM, fine-tuning, inference, usage, tutorial, deep learning, PyTorch, TensorFlow, JAX ************************* Fine-tuning and inference @@ -9,7 +9,7 @@ Fine-tuning and inference Fine-tuning using ROCm involves leveraging AMD's GPU-accelerated :doc:`libraries ` and :doc:`tools ` to optimize and train deep learning models. ROCm provides a comprehensive ecosystem for deep learning development, including open-source libraries for optimized deep learning operations and -ROCm-aware versions of :doc:`deep learning frameworks <../deep-learning-rocm>` such as PyTorch, TensorFlow, and JAX. +ROCm-aware versions of :doc:`deep learning frameworks <../../deep-learning-rocm>` such as PyTorch, TensorFlow, and JAX. Single-accelerator systems, such as a machine equipped with a single accelerator or GPU, are commonly used for smaller-scale deep learning tasks, including fine-tuning pre-trained models and running inference on moderately diff --git a/docs/how-to/rocm-for-ai/fine-tuning/index.rst b/docs/how-to/rocm-for-ai/fine-tuning/index.rst new file mode 100644 index 000000000..112f39cbb --- /dev/null +++ b/docs/how-to/rocm-for-ai/fine-tuning/index.rst @@ -0,0 +1,25 @@ +.. meta:: + :description: How to fine-tune LLMs with ROCm + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, GPUs, Llama, accelerators + +******************************************* +Use ROCm for fine-tuning LLMs +******************************************* + +Fine-tuning is an essential technique in machine learning, where a pre-trained model, typically trained on a large-scale dataset, is further refined to achieve better performance and adapt to a particular task or dataset of interest. + +With AMD GPUs, the fine-tuning process benefits from the parallel processing capabilities and efficient resource management, ultimately leading to improved performance and faster model adaptation to the target domain. + +The ROCm™ software platform helps you optimize this fine-tuning process by supporting various optimization techniques tailored for AMD GPUs. It empowers the fine-tuning of large language models, making them accessible and efficient for specialized tasks. ROCm supports the broader AI ecosystem to ensure seamless integration with open frameworks, models, and tools. + +Throughout the following topics, this guide discusses the goals and :ref:`challenges of fine-tuning a large language +model ` like Llama 2. In the +sections that follow, you'll find practical guides on libraries and tools to accelerate your fine-tuning. + +- :doc:`Conceptual overview of fine-tuning LLMs ` + +- :doc:`Fine-tuning and inference ` using a + :doc:`single-accelerator ` or + :doc:`multi-accelerator ` system. + + diff --git a/docs/how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference.rst b/docs/how-to/rocm-for-ai/fine-tuning/multi-gpu-fine-tuning-and-inference.rst similarity index 98% rename from docs/how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference.rst rename to docs/how-to/rocm-for-ai/fine-tuning/multi-gpu-fine-tuning-and-inference.rst index 9f8e3e4b0..0d6ba2b9c 100644 --- a/docs/how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference.rst +++ b/docs/how-to/rocm-for-ai/fine-tuning/multi-gpu-fine-tuning-and-inference.rst @@ -1,6 +1,6 @@ .. meta:: :description: Model fine-tuning and inference on a multi-GPU system - :keywords: ROCm, LLM, fine-tuning, usage, tutorial, multi-GPU, distributed, inference + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, multi-GPU, distributed, inference, accelerators, PyTorch, HuggingFace, torchtune ***************************************************** Fine-tuning and inference using multiple accelerators @@ -233,4 +233,4 @@ GPU model fine-tuning and inference with LLMs. INFO:torchtune.utils.logging:Learning rate scheduler is initialized. 1|111|Loss: 1.5790324211120605: 7%|█ | 114/1618 -Read more about inference frameworks in :doc:`LLM inference frameworks `. +Read more about inference frameworks in :doc:`LLM inference frameworks <../inference/llm-inference-frameworks>`. diff --git a/docs/how-to/llm-fine-tuning-optimization/overview.rst b/docs/how-to/rocm-for-ai/fine-tuning/overview.rst similarity index 96% rename from docs/how-to/llm-fine-tuning-optimization/overview.rst rename to docs/how-to/rocm-for-ai/fine-tuning/overview.rst index 061470a99..f5dea82a4 100644 --- a/docs/how-to/llm-fine-tuning-optimization/overview.rst +++ b/docs/how-to/rocm-for-ai/fine-tuning/overview.rst @@ -1,6 +1,6 @@ .. meta:: - :description: How to fine-tune LLMs with ROCm - :keywords: ROCm, LLM, fine-tuning, usage, tutorial, optimzation, LoRA, walkthrough + :description: Conceptual overview of fine-tuning LLMs + :keywords: ROCm, LLM, Llama, fine-tuning, usage, tutorial, optimzation, LoRA, walkthrough, PEFT, Reinforcement *************************************** Conceptual overview of fine-tuning LLMs @@ -41,7 +41,7 @@ The weight update is as follows: :math:`W_{updated} = W + ΔW`. If the weight matrix :math:`W` contains 7B parameters, then the weight update matrix :math:`ΔW` should also contain 7B parameters. Therefore, the :math:`ΔW` calculation is computationally and memory intensive. -.. figure:: ../../data/how-to/llm-fine-tuning-optimization/weight-update.png +.. figure:: ../../../data/how-to/llm-fine-tuning-optimization/weight-update.png :alt: Weight update diagram (a) Weight update in regular fine-tuning. (b) Weight update in LoRA where the product of matrix A (:math:`M\times K`) diff --git a/docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst b/docs/how-to/rocm-for-ai/fine-tuning/single-gpu-fine-tuning-and-inference.rst similarity index 99% rename from docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst rename to docs/how-to/rocm-for-ai/fine-tuning/single-gpu-fine-tuning-and-inference.rst index 6b1946ea3..dc66d9a75 100644 --- a/docs/how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst +++ b/docs/how-to/rocm-for-ai/fine-tuning/single-gpu-fine-tuning-and-inference.rst @@ -1,6 +1,6 @@ .. meta:: :description: Model fine-tuning and inference on a single-GPU system - :keywords: ROCm, LLM, fine-tuning, usage, tutorial, single-GPU, LoRA, PEFT, inference + :keywords: ROCm, LLM, fine-tuning, usage, tutorial, single-GPU, LoRA, PEFT, inference, SFTTrainer **************************************************** Fine-tuning and inference using a single accelerator @@ -80,7 +80,7 @@ Setting up the base implementation environment #. Install the required dependencies. bitsandbytes is a library that facilitates quantization to improve the efficiency of deep learning models. Learn more - about its use in :doc:`model-quantization`. + about its use in :doc:`../inference-optimization/model-quantization`. See the :ref:`Optimizations for model fine-tuning ` for a brief discussion on PEFT and TRL. @@ -507,4 +507,4 @@ If using multiple accelerators, see popular libraries that simplify fine-tuning and inference in a multi-accelerator system. Read more about inference frameworks like vLLM and Hugging Face TGI in -:doc:`LLM inference frameworks `. +:doc:`LLM inference frameworks <../inference/llm-inference-frameworks>`. diff --git a/docs/how-to/rocm-for-ai/index.rst b/docs/how-to/rocm-for-ai/index.rst index e0852ffc4..2440b8c66 100644 --- a/docs/how-to/rocm-for-ai/index.rst +++ b/docs/how-to/rocm-for-ai/index.rst @@ -1,28 +1,27 @@ .. meta:: - :description: How to use ROCm for AI + :description: Learn how to use ROCm for AI. :keywords: ROCm, AI, machine learning, LLM, usage, tutorial -***************** -Using ROCm for AI -***************** +************************** +Use ROCm for AI +************************** -ROCm offers a suite of optimizations for AI workloads from large language models (LLMs) to image and video detection and -recognition, life sciences and drug discovery, autonomous driving, robotics, and more. ROCm proudly supports the broader -AI software ecosystem, including open frameworks, models, and tools. +ROCm™ is an open-source software platform that enables high-performance computing and machine learning applications. It features the ability to accelerate training, fine-tuning, and inference for AI application development. With ROCm, you can access the full power of AMD GPUs, which can significantly improve the performance and efficiency of AI workloads. -For more information, see `What is ROCm? `_ +You can use ROCm to perform distributed training, which enables you to train models across multiple GPUs or nodes simultaneously. Additionally, ROCm supports mixed-precision training, which can help reduce the memory and compute requirements of training workloads. For fine-tuning, ROCm provides access to various algorithms and optimization techniques. In terms of inference, ROCm provides several techniques that can help you optimize your models for deployment, such as quantization, GEMM tuning, and optimization with composable kernel. + +Overall, ROCm can be used to improve the performance and efficiency of your AI applications. With its training, fine-tuning, and inference support, ROCm provides a complete solution for optimizing AI workflows and achieving the optimum results possible on AMD GPUs. -In this guide, you'll learn about: +In this guide, you'll learn how to use ROCm for AI: -- :doc:`Installing ROCm and machine learning frameworks ` +- :doc:`Training ` -- :doc:`Scaling model training ` +- :doc:`Fine-tuning LLMs ` -- :doc:`Training a model ` +- :doc:`Inference ` -- :doc:`Running models from Hugging Face ` +- :doc:`Inference optimization ` -- :doc:`Deploying your model ` To learn about ROCm for HPC applications and scientific computing, see :doc:`../rocm-for-hpc/index`. diff --git a/docs/how-to/rocm-for-ai/inference-optimization/index.rst b/docs/how-to/rocm-for-ai/inference-optimization/index.rst new file mode 100644 index 000000000..80f932a6c --- /dev/null +++ b/docs/how-to/rocm-for-ai/inference-optimization/index.rst @@ -0,0 +1,36 @@ +.. meta:: + :description: How to Use ROCm for AI inference optimization + :keywords: ROCm, LLM, AI inference, Optimization, GPUs, usage, tutorial + +******************************************* +Use ROCm for AI inference optimization +******************************************* + +AI inference optimization is the process of improving the performance of machine learning models and speeding up the inference process. It includes: + +- **Quantization**: This involves reducing the precision of model weights and activations while maintaining acceptable accuracy levels. Reduced precision improves inference efficiency because lower precision data requires less storage and better utilizes the hardware's computation power. + +- **Kernel optimization**: This technique involves optimizing computation kernels to exploit the underlying hardware capabilities. For example, the kernels can be optimized to use multiple GPU cores or utilize specialized hardware like tensor cores to accelerate the computations. + +- **Libraries**: Libraries such as Flash Attention, xFormers, and PyTorch TunableOp are used to accelerate deep learning models and improve the performance of inference workloads. + +- **Hardware acceleration**: Hardware acceleration techniques, like GPUs for AI inference, can significantly improve performance due to their parallel processing capabilities. + +- **Pruning**: This involves removing unnecessary connections, layers, or weights from a pre-trained model while maintaining acceptable accuracy levels, resulting in a smaller model that requires fewer computational resources to run inference. + +Utilizing these optimization techniques with the ROCm™ software platform can significantly reduce inference time, improve performance, and reduce the cost of your AI applications. + +Throughout the following topics, this guide discusses optimization techniques for inference workloads. + +- :doc:`Model quantization ` + +- :doc:`Model acceleration libraries ` + +- :doc:`Optimizing with Composable Kernel ` + +- :doc:`Optimizing Triton kernels ` + +- :doc:`Profiling and debugging ` + +- :doc:`Workload tuning ` + diff --git a/docs/how-to/llm-fine-tuning-optimization/model-acceleration-libraries.rst b/docs/how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries.rst similarity index 98% rename from docs/how-to/llm-fine-tuning-optimization/model-acceleration-libraries.rst rename to docs/how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries.rst index 38e2f8f5d..5763ff385 100644 --- a/docs/how-to/llm-fine-tuning-optimization/model-acceleration-libraries.rst +++ b/docs/how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries.rst @@ -1,5 +1,5 @@ .. meta:: - :description: How to fine-tune LLMs with ROCm + :description: How to use model acceleration techniques and libraries to improve memory efficiency and performance. :keywords: ROCm, LLM, fine-tuning, usage, tutorial, Flash Attention, Hugging Face, xFormers, vLLM, PyTorch **************************** @@ -20,7 +20,7 @@ Attention (GQA), and Multi-Query Attention (MQA). This reduction in memory movem time-to-first-token (TTFT) latency for large batch sizes and long prompt sequences, thereby enhancing overall performance. -.. image:: ../../data/how-to/llm-fine-tuning-optimization/attention-module.png +.. image:: ../../../data/how-to/llm-fine-tuning-optimization/attention-module.png :alt: Attention module of a large language module utilizing tiling :align: center @@ -245,7 +245,7 @@ page describes the options. Validator,ROCBLAS_VERSION,4.1.0-cefa4a9b-dirty GemmTunableOp_float_TN,tn_200_100_20,Gemm_Rocblas_32323,0.00669595 -.. image:: ../../data/how-to/llm-fine-tuning-optimization/tunableop.png +.. image:: ../../../data/how-to/llm-fine-tuning-optimization/tunableop.png :alt: GEMM and TunableOp :align: center diff --git a/docs/how-to/llm-fine-tuning-optimization/model-quantization.rst b/docs/how-to/rocm-for-ai/inference-optimization/model-quantization.rst similarity index 99% rename from docs/how-to/llm-fine-tuning-optimization/model-quantization.rst rename to docs/how-to/rocm-for-ai/inference-optimization/model-quantization.rst index 479f37b49..9de27c20e 100644 --- a/docs/how-to/llm-fine-tuning-optimization/model-quantization.rst +++ b/docs/how-to/rocm-for-ai/inference-optimization/model-quantization.rst @@ -1,5 +1,5 @@ .. meta:: - :description: How to fine-tune LLMs with ROCm + :description: How to use model quantization techniques to speed up inference. :keywords: ROCm, LLM, fine-tuning, usage, tutorial, quantization, GPTQ, transformers, bitsandbytes ***************************** diff --git a/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst b/docs/how-to/rocm-for-ai/inference-optimization/optimizing-triton-kernel.rst similarity index 77% rename from docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst rename to docs/how-to/rocm-for-ai/inference-optimization/optimizing-triton-kernel.rst index b49ddf078..44633164f 100644 --- a/docs/how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst +++ b/docs/how-to/rocm-for-ai/inference-optimization/optimizing-triton-kernel.rst @@ -1,6 +1,6 @@ .. meta:: - :description: How to fine-tune LLMs with ROCm - :keywords: ROCm, LLM, fine-tuning, usage, tutorial, Triton, kernel, performance, optimization + :description: How to optimize Triton kernels for ROCm. + :keywords: ROCm, LLM, fine-tuning, usage, MI300X, tutorial, Triton, kernel, performance, optimization ************************* Optimizing Triton kernels @@ -13,7 +13,7 @@ and CUDA kernel optimization. Refer to the :ref:`Triton kernel performance optimization ` -section of the :doc:`/how-to/tuning-guides/mi300x/workload` guide +section of the :doc:`workload` guide for detailed information. Triton kernel performance optimization includes the following topics. diff --git a/docs/how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel.md b/docs/how-to/rocm-for-ai/inference-optimization/optimizing-with-composable-kernel.md similarity index 96% rename from docs/how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel.md rename to docs/how-to/rocm-for-ai/inference-optimization/optimizing-with-composable-kernel.md index 458bc8e30..cc68823f3 100644 --- a/docs/how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel.md +++ b/docs/how-to/rocm-for-ai/inference-optimization/optimizing-with-composable-kernel.md @@ -1,8 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description": "How to optimize machine learning workloads with Composable Kernel (CK)." + "keywords": "mixed, precision, kernel, inference, linear, algebra, ck, GEMM" +--- # Optimizing with Composable Kernel @@ -32,7 +33,7 @@ The template parameters of the instance are grouped into four parameter types: ================ ### Figure 2 ================ --> -```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-template_parameters.jpg +```{figure} ../../../data/how-to/llm-fine-tuning-optimization/ck-template_parameters.jpg The template parameters of the selected GEMM kernel are classified into four groups. These template parameter groups should be defined properly before running the instance. ``` @@ -126,7 +127,7 @@ The row and column, and stride information of input matrices are also passed to ================ ### Figure 3 ================ --> -```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-kernel_launch.jpg +```{figure} ../../../data/how-to/llm-fine-tuning-optimization/ck-kernel_launch.jpg Templated kernel launching consists of kernel instantiation, making arguments by passing in actual application parameters, creating an invoker, and running the instance through the invoker. ``` @@ -155,7 +156,7 @@ The first operation in the process is to perform the multiplication of input mat ================ ### Figure 4 ================ --> -```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-operation_flow.jpg +```{figure} ../../../data/how-to/llm-fine-tuning-optimization/ck-operation_flow.jpg Operation flow. ``` @@ -171,7 +172,7 @@ Here, we use [DeviceBatchedGemmMultiD_Xdl](https://github.com/ROCm/composable_ke ================ ### Figure 5 ================ --> -```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-root_instance.jpg +```{figure} ../../../data/how-to/llm-fine-tuning-optimization/ck-root_instance.jpg Use the ‘DeviceBatchedGemmMultiD_Xdl’ instance as a root. ``` @@ -421,7 +422,7 @@ Run `python setup.py install` to build and install the extension. It should look ================ ### Figure 6 ================ --> -```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-compilation.jpg +```{figure} ../../../data/how-to/llm-fine-tuning-optimization/ck-compilation.jpg Compilation and installation of the INT8 kernels. ``` @@ -433,7 +434,7 @@ The implementation architecture of running SmoothQuant models on MI300X GPUs is ================ ### Figure 7 ================ --> -```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-inference_flow.jpg +```{figure} ../../../data/how-to/llm-fine-tuning-optimization/ck-inference_flow.jpg The implementation architecture of running SmoothQuant models on AMD MI300X accelerators. ``` @@ -459,7 +460,7 @@ Figure 8 shows the performance comparisons between the original FP16 and the Smo ================ ### Figure 8 ================ --> -```{figure} ../../data/how-to/llm-fine-tuning-optimization/ck-comparisons.jpg +```{figure} ../../../data/how-to/llm-fine-tuning-optimization/ck-comparisons.jpg Performance comparisons between the original FP16 and the SmoothQuant-quantized INT8 models on a single MI300X accelerator. ``` diff --git a/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst b/docs/how-to/rocm-for-ai/inference-optimization/profiling-and-debugging.rst similarity index 76% rename from docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst rename to docs/how-to/rocm-for-ai/inference-optimization/profiling-and-debugging.rst index cc3c9ebb5..6b9b29341 100644 --- a/docs/how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst +++ b/docs/how-to/rocm-for-ai/inference-optimization/profiling-and-debugging.rst @@ -1,12 +1,12 @@ .. meta:: - :description: How to fine-tune LLMs with ROCm - :keywords: ROCm, LLM, fine-tuning, usage, tutorial, profiling, debugging, performance, Triton + :description: How to use ROCm profiling and debugging tools. + :keywords: ROCm, LLM, fine-tuning, usage, MI300X, tutorial, profiling, debugging, performance, Triton *********************** Profiling and debugging *********************** -This section provides an index for further documentation on profiling and +This section provides an index for further documentation on profiling and debugging tools and their common usage patterns. See :ref:`AMD Instinct MI300X™ workload optimization ` diff --git a/docs/how-to/tuning-guides/mi300x/workload.rst b/docs/how-to/rocm-for-ai/inference-optimization/workload.rst similarity index 99% rename from docs/how-to/tuning-guides/mi300x/workload.rst rename to docs/how-to/rocm-for-ai/inference-optimization/workload.rst index 9b2183807..750f9443f 100644 --- a/docs/how-to/tuning-guides/mi300x/workload.rst +++ b/docs/how-to/rocm-for-ai/inference-optimization/workload.rst @@ -1,5 +1,5 @@ .. meta:: - :description: AMD Instinct MI300X workload tuning + :description: Learn about workload tuning on AMD Instinct MI300X accelerators for optimal performance. :keywords: AMD, Instinct, MI300X, HPC, tuning, BIOS settings, NBIO, ROCm, environment variable, performance, HIP, Triton, PyTorch TunableOp, vLLM, RCCL, MIOpen, accelerator, GPU, resource utilization @@ -152,7 +152,7 @@ address any new bottlenecks that may emerge. ROCm provides a prebuilt optimized Docker image that has everything required to implement the tips in this section. It includes ROCm, vLLM, PyTorch, and tuning files in the CSV -format. For more information, see :doc:`/how-to/performance-validation/mi300x/vllm-benchmark`. +format. For more information, see :doc:`../inference/vllm-benchmark`. .. _mi300x-profiling-tools: @@ -173,7 +173,7 @@ tools available depending on their specific profiling needs. For more information, see :doc:`ROCm Compute Profiler documentation `. -Refer to :doc:`/how-to/llm-fine-tuning-optimization/profiling-and-debugging` +Refer to :doc:`profiling-and-debugging` to explore commonly used profiling tools and their usage patterns. Once performance bottlenecks are identified, you can implement an informed workload @@ -412,7 +412,7 @@ usage with ROCm. ROCm provides a prebuilt optimized Docker image for validating the performance of LLM inference with vLLM on the MI300X accelerator. The Docker image includes ROCm, vLLM, PyTorch, and tuning files in the CSV format. For more information, -see :doc:`/how-to/performance-validation/mi300x/vllm-benchmark`. +see :doc:`../inference/vllm-benchmark`. .. _mi300x-vllm-throughput-measurement: @@ -1304,7 +1304,7 @@ performance (reduce latency) and improve benchmarking stability. CK provides a rich set of template parameters for generating flexible accelerated computing kernels for difference application scenarios. -See :doc:`/how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel` +See :doc:`optimizing-with-composable-kernel` for an overview of Composable Kernel GEMM kernels, information on tunable parameters, and examples. diff --git a/docs/how-to/rocm-for-ai/deploy-your-model.rst b/docs/how-to/rocm-for-ai/inference/deploy-your-model.rst similarity index 95% rename from docs/how-to/rocm-for-ai/deploy-your-model.rst rename to docs/how-to/rocm-for-ai/inference/deploy-your-model.rst index 0435e83ee..41bfd6b6f 100644 --- a/docs/how-to/rocm-for-ai/deploy-your-model.rst +++ b/docs/how-to/rocm-for-ai/inference/deploy-your-model.rst @@ -1,5 +1,5 @@ .. meta:: - :description: How to use ROCm for AI + :description: How to deploy your model for AI inference using vLLM and Hugging Face TGI. :keywords: ROCm, AI, LLM, train, fine-tune, deploy, FSDP, DeepSpeed, LLaMA, tutorial ******************** @@ -119,4 +119,4 @@ TGI walkthrough vLLM and Hugging Face TGI are robust solutions for anyone looking to deploy LLMs for applications that demand high performance, low latency, and scalability. -Visit the topics in :doc:`Using ROCm for AI ` to learn about other ROCm-aware solutions for AI development. +Visit the topics in :doc:`Using ROCm for AI <../index>` to learn about other ROCm-aware solutions for AI development. diff --git a/docs/how-to/rocm-for-ai/hugging-face-models.rst b/docs/how-to/rocm-for-ai/inference/hugging-face-models.rst similarity index 99% rename from docs/how-to/rocm-for-ai/hugging-face-models.rst rename to docs/how-to/rocm-for-ai/inference/hugging-face-models.rst index 63b32e006..fe84e33d9 100644 --- a/docs/how-to/rocm-for-ai/hugging-face-models.rst +++ b/docs/how-to/rocm-for-ai/inference/hugging-face-models.rst @@ -1,5 +1,5 @@ .. meta:: - :description: How to use ROCm for AI + :description: How to run models from Hugging Face on AMD GPUs. :keywords: ROCm, AI, LLM, Hugging Face, Optimum, Flash Attention, GPTQ, ONNX, tutorial ******************************** diff --git a/docs/how-to/rocm-for-ai/inference/index.rst b/docs/how-to/rocm-for-ai/inference/index.rst new file mode 100644 index 000000000..88d0e4d15 --- /dev/null +++ b/docs/how-to/rocm-for-ai/inference/index.rst @@ -0,0 +1,22 @@ +.. meta:: + :description: How to use ROCm for AI inference workloads. + :keywords: ROCm, AI, machine learning, LLM, AI inference, NLP, GPUs, usage, tutorial + +**************************** +Use ROCm for AI inference +**************************** +AI inference is a process of deploying a trained machine learning model to make predictions or classifications on new data. This commonly involves using the model with real-time data and making quick decisions based on the predictions made by the model.  + +Understanding the ROCm™ software platform’s architecture and capabilities is vital for running AI inference. By leveraging the ROCm platform's capabilities, you can harness the power of high-performance computing and efficient resource management to run inference workloads, leading to faster predictions and classifications on real-time data. + +Throughout the following topics, this section provides a comprehensive guide to setting up and deploying AI inference on AMD GPUs. This includes instructions on how to install ROCm, how to use Hugging Face Transformers to manage pre-trained models for natural language processing (NLP) tasks, how to validate vLLM on AMD Instinct™ MI300X accelerators and illustrate how to deploy trained models in production environments. + +- :doc:`Installing ROCm and machine learning frameworks ` + +- :doc:`Running models from Hugging Face ` + +- :doc:`LLM inference frameworks ` + +- :doc:`Performance validation ` + +- :doc:`Deploying your model ` diff --git a/docs/how-to/rocm-for-ai/install.rst b/docs/how-to/rocm-for-ai/inference/install.rst similarity index 92% rename from docs/how-to/rocm-for-ai/install.rst rename to docs/how-to/rocm-for-ai/inference/install.rst index 50f6f4244..a3df14daa 100644 --- a/docs/how-to/rocm-for-ai/install.rst +++ b/docs/how-to/rocm-for-ai/inference/install.rst @@ -1,5 +1,5 @@ .. meta:: - :description: How to use ROCm for AI + :description: How to install ROCm and popular machine learning frameworks. :keywords: ROCm, AI, LLM, train, fine-tune, FSDP, DeepSpeed, LLaMA, tutorial .. _rocm-for-ai-install: @@ -59,4 +59,4 @@ images with the framework pre-installed. * :doc:`JAX for ROCm ` -The sections that follow in :doc:`Training a model ` are geared for a ROCm with PyTorch installation. +The sections that follow in :doc:`Training a model <../training/train-a-model>` are geared for a ROCm with PyTorch installation. diff --git a/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst b/docs/how-to/rocm-for-ai/inference/llm-inference-frameworks.rst similarity index 95% rename from docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst rename to docs/how-to/rocm-for-ai/inference/llm-inference-frameworks.rst index 5c3e8a32a..4a2bf1f46 100644 --- a/docs/how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst +++ b/docs/how-to/rocm-for-ai/inference/llm-inference-frameworks.rst @@ -1,5 +1,5 @@ .. meta:: - :description: How to fine-tune LLMs with ROCm + :description: How to implement the LLM inference frameworks with ROCm acceleration. :keywords: ROCm, LLM, fine-tuning, usage, tutorial, inference, vLLM, TGI, text generation inference ************************ @@ -8,8 +8,8 @@ LLM inference frameworks This section discusses how to implement `vLLM `_ and `Hugging Face TGI `_ using -:doc:`single-accelerator ` and -:doc:`multi-accelerator ` systems. +:doc:`single-accelerator <../fine-tuning/single-gpu-fine-tuning-and-inference>` and +:doc:`multi-accelerator <../fine-tuning/multi-gpu-fine-tuning-and-inference>` systems. .. _fine-tuning-llms-vllm: @@ -68,7 +68,7 @@ Installing vLLM The following log message is displayed in your command line indicates that the server is listening for requests. - .. image:: ../../data/how-to/llm-fine-tuning-optimization/vllm-single-gpu-log.png + .. image:: ../../../data/how-to/llm-fine-tuning-optimization/vllm-single-gpu-log.png :alt: vLLM API server log message :align: center @@ -141,7 +141,7 @@ Installing vLLM ROCm provides a prebuilt optimized Docker image for validating the performance of LLM inference with vLLM on the MI300X accelerator. The Docker image includes ROCm, vLLM, PyTorch, and tuning files in CSV - format. For more information, see :doc:`/how-to/performance-validation/mi300x/vllm-benchmark`. + format. For more information, see :doc:`vllm-benchmark`. .. _fine-tuning-llms-tgi: diff --git a/docs/how-to/performance-validation/mi300x/vllm-benchmark.rst b/docs/how-to/rocm-for-ai/inference/vllm-benchmark.rst similarity index 94% rename from docs/how-to/performance-validation/mi300x/vllm-benchmark.rst rename to docs/how-to/rocm-for-ai/inference/vllm-benchmark.rst index 0f35268aa..af6cb4c31 100644 --- a/docs/how-to/performance-validation/mi300x/vllm-benchmark.rst +++ b/docs/how-to/rocm-for-ai/inference/vllm-benchmark.rst @@ -1,6 +1,6 @@ .. meta:: - :description: Learn how to validate LLM inference performance on MI300X accelerators using AMD MAD and the unified - ROCm Docker image. + :description: Learn how to validate LLM inference performance on MI300X accelerators using AMD MAD and the + ROCm vLLM Docker image. :keywords: model, MAD, automation, dashboarding, validate *********************************************************** @@ -385,20 +385,26 @@ Further reading =============== - For application performance optimization strategies for HPC and AI workloads, - including inference with vLLM, see :doc:`/how-to/tuning-guides/mi300x/workload`. + including inference with vLLM, see :doc:`../inference-optimization/workload`. - To learn more about the options for latency and throughput benchmark scripts, see ``_. - To learn more about system settings and management practices to configure your system for - MI300X accelerators, see :doc:`/how-to/system-optimization/mi300x`. + MI300X accelerators, see :doc:`../../system-optimization/mi300x`. - To learn how to run LLM models from Hugging Face or your own model, see - :doc:`Using ROCm for AI `. + :doc:`Using ROCm for AI <../index>`. - To learn how to optimize inference on LLMs, see - :doc:`Fine-tuning LLMs and inference optimization `. + :doc:`Inference optimization <../inference-optimization/index>`. +<<<<<<< HEAD:docs/how-to/performance-validation/mi300x/vllm-benchmark.rst +======= +- To learn how to fine-tune LLMs, see + :doc:`Fine-tuning LLMs <../fine-tuning/index>`. + +>>>>>>> develop:docs/how-to/rocm-for-ai/inference/vllm-benchmark.rst - To compare with the previous version of the ROCm vLLM Docker image for performance validation, refer to `LLM inference performance validation on AMD Instinct MI300X (ROCm 6.2.0) `_. diff --git a/docs/how-to/rocm-for-ai/training/index.rst b/docs/how-to/rocm-for-ai/training/index.rst new file mode 100644 index 000000000..876788d27 --- /dev/null +++ b/docs/how-to/rocm-for-ai/training/index.rst @@ -0,0 +1,21 @@ +.. meta:: + :description: How to use ROCm for training models + :keywords: ROCm, LLM, training, GPUs, training model, scaling model, usage, tutorial + +======================= +Use ROCm for training +======================= + +Training models is the process of teaching a computer program to recognize patterns in data. This involves providing the computer with large amounts of labeled data and allowing it to learn from that data, adjusting the model's parameters. + +The process of training models is computationally intensive, requiring specialized hardware like GPUs to accelerate computations and reduce training time. Training models on AMD GPUs involves leveraging the parallel processing capabilities of these GPUs to significantly speed up the model training process in machine learning and deep learning tasks. + +Training models on AMD GPUs with the ROCm™ software platform allows you to use the powerful parallel processing capabilities and efficient compute resource management, significantly improving training time and overall performance in machine learning applications. + +The ROCm software platform makes it easier to train models on AMD GPUs while maintaining compatibility with existing code and tools. The platform also provides features like multi-GPU support, allowing for scaling and parallelization of model training across multiple GPUs to enhance performance. + +In this guide, you'll learn about: + +- :doc:`Training a model ` + +- :doc:`Scale model training ` \ No newline at end of file diff --git a/docs/how-to/rocm-for-ai/scale-model-training.rst b/docs/how-to/rocm-for-ai/training/scale-model-training.rst similarity index 98% rename from docs/how-to/rocm-for-ai/scale-model-training.rst rename to docs/how-to/rocm-for-ai/training/scale-model-training.rst index f01c75d7b..405206aaa 100644 --- a/docs/how-to/rocm-for-ai/scale-model-training.rst +++ b/docs/how-to/rocm-for-ai/training/scale-model-training.rst @@ -105,7 +105,7 @@ Fine-tuning your model ROCm supports multiple techniques for :ref:`optimizing fine-tuning `, for example, LoRA, QLoRA, PEFT, and FSDP. -Learn more about challenges and solutions for model fine-tuning in :doc:`../llm-fine-tuning-optimization/index`. +Learn more about challenges and solutions for model fine-tuning in :doc:`../fine-tuning/index`. The following developer blogs showcase examples of fine-tuning a model on an AMD accelerator or GPU. @@ -132,4 +132,4 @@ The following developer blogs showcase examples of fine-tuning a model on an AMD * Recipes for fine-tuning Llama2 and 3 with ``llama-recipes`` * `meta-llama/llama-recipes: Scripts for fine-tuning Meta Llama3 with composable FSDP & PEFT methods to cover - single/multi-node GPUs `_ + single/multi-node GPUs `_ diff --git a/docs/how-to/rocm-for-ai/train-a-model.rst b/docs/how-to/rocm-for-ai/training/train-a-model.rst similarity index 97% rename from docs/how-to/rocm-for-ai/train-a-model.rst rename to docs/how-to/rocm-for-ai/training/train-a-model.rst index b47f028bb..6bc87927f 100644 --- a/docs/how-to/rocm-for-ai/train-a-model.rst +++ b/docs/how-to/rocm-for-ai/training/train-a-model.rst @@ -164,7 +164,7 @@ Run on 8 GPUs (``-g 8``), scanning from 8 bytes to 10 GB: ./build/all_reduce_perf -b 8 -e 10G -f 2 -g 8 -.. image:: ../../data/how-to/rocm-for-ai/rccl-tests-8-gpu.png +.. image:: ../../../data/how-to/rocm-for-ai/rccl-tests-8-gpu.png :width: 800 Using one MPI process per GPU and ``-g 1`` for performance-oriented runs on both single-node and multi-node is @@ -174,7 +174,7 @@ recommended. So, a run on 8 GPUs looks something like: mpirun -np 8 --bind-to numa ./build/all_reduce_perf -b 8 -e 10G -f 2 -g 1 -.. image:: ../../data/how-to/rocm-for-ai/rccl-tests-1-mpi-process-per-gpu.png +.. image:: ../../../data/how-to/rocm-for-ai/rccl-tests-1-mpi-process-per-gpu.png :width: 800 Running with one MPI process per GPU ensures a one-to-one mapping for CPUs and GPUs, which can be beneficial @@ -195,7 +195,7 @@ Use the following script to run the RCCL test for four MI300X GPU nodes. Modify -x NCCL_DEBUG=version \ $HOME/rccl-tests/build/all_reduce_perf -b 8 -e 8g -f 2 -g 1 -.. image:: ../../data/how-to/rocm-for-ai/rccl-tests-4-mi300x-gpu-nodes.png +.. image:: ../../../data/how-to/rocm-for-ai/rccl-tests-4-mi300x-gpu-nodes.png :width: 800 .. _mi300x-amd-megatron-lm-training: @@ -264,7 +264,7 @@ end-of-document token, remove sentence splitting, and use the tokenizer type. In this case, the automatically generated output files are named ``my-gpt2_text_document.bin`` and ``my-gpt2_text_document.idx``. -.. image:: ../../data/how-to/rocm-for-ai/prep-training-datasets-my-gpt2-text-document.png +.. image:: ../../../data/how-to/rocm-for-ai/prep-training-datasets-my-gpt2-text-document.png :width: 800 .. _amd-megatron-lm-environment-setup: @@ -462,7 +462,7 @@ Benchmarking examples See the sample output: - .. image:: ../../data/how-to/rocm-for-ai/llama2-7b-training-log-sample.png + .. image:: ../../../data/how-to/rocm-for-ai/llama2-7b-training-log-sample.png :width: 800 .. tab-item:: Multi node training @@ -493,11 +493,11 @@ Benchmarking examples Master node: - .. image:: ../../data/how-to/rocm-for-ai/2-node-training-master.png + .. image:: ../../../data/how-to/rocm-for-ai/2-node-training-master.png :width: 800 Worker node: - .. image:: ../../data/how-to/rocm-for-ai/2-node-training-worker.png + .. image:: ../../../data/how-to/rocm-for-ai/2-node-training-worker.png :width: 800 diff --git a/docs/how-to/rocm-for-hpc/index.rst b/docs/how-to/rocm-for-hpc/index.rst index d6ad9312b..9fc0a80f3 100644 --- a/docs/how-to/rocm-for-hpc/index.rst +++ b/docs/how-to/rocm-for-hpc/index.rst @@ -1,6 +1,6 @@ .. meta:: - :description: How to use ROCm for HPC - :keywords: ROCm, AI, high performance computing, HPC + :description: How to use ROCm for high-performance computing (HPC). + :keywords: ROCm, AI, high performance computing, HPC, science, scientific ****************** Using ROCm for HPC @@ -20,7 +20,7 @@ applications. * For more information, see :doc:`What is ROCm? <../../what-is-rocm>`. * For guidance on installing ROCm, see :doc:`rocm-install-on-linux:index`. See - the :doc:`../../compatibility/compatibility-matrix` for details on hardware + the :doc:`Compatibility matrix <../../compatibility/compatibility-matrix>` for details on hardware and operating system support. Some of the most popular HPC frameworks are part of the ROCm platform, including @@ -32,7 +32,7 @@ handle memory hierarchies, and solve linear systems. :alt: Software and hardware ecosystem surrounding ROCm and AMD Instinct for HPC The following catalog of GPU-accelerated solutions includes a vast set of -platform-compatible HPC applications, including those for astrophysics, climate +platform-compatible HPC applications, including those for astrophysics, climate and weather, computational chemistry, computational fluid dynamics, earth science, genomics, geophysics, molecular dynamics, and physics computing. @@ -115,6 +115,12 @@ Ubuntu versions. for non-destructive testing or for ocean acoustics. * - Molecular dynamics + - `Amber `_ + - Amber is a suite of biomolecular simulation programs. It is a set of molecular mechanical force fields for + simulating biomolecules. Amber is also a package of molecular simulation + programs which includes source code and demos. + + * - - `GROMACS with HIP (AMD implementation) `_ - GROMACS is a versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations of motion for systems with hundreds @@ -129,6 +135,13 @@ Ubuntu versions. Parallel Simulator. * - Computational fluid dynamics + - `Ansys Fluent `_ + - Ansys Fluent is an advanced computational fluid dynamics (CFD) tool for + simulating and analyzing fluid flow, heat transfer, and related phenomena in complex systems. + It offers a range of powerful features for detailed and accurate modeling of various physical + processes, including turbulence, chemical reactions, and multiphase flows. + + * - - `NEKO `_ - Neko is a portable framework for high-order spectral element flow simulations. Written in modern Fortran, Neko adopts an object-oriented approach, allowing @@ -139,7 +152,27 @@ Ubuntu versions. * - - `nekRS `_ - nekRS is an open-source Navier Stokes solver based on the spectral element - method targeting classical processors and accelerators like GPUs. + method targeting classical processors and accelerators like GPUs. + + * - + - `OpenFOAM `_ + - OpenFOAM is a free, open-source computational fluid dynamics (CFD) + tool developed primarily by OpenCFD Ltd. It has a large user + base across most areas of engineering and science, from both commercial and + academic organizations. OpenFOAM has extensive features to solve + anything from complex fluid flows involving chemical reactions, turbulence, and + heat transfer, to acoustics, solid mechanics, and electromagnetics. + + * - + - `PeleC `_ + - PeleC is an adaptive mesh refinement(AMR) solver for compressible reacting flows. + + * - + - `Simcenter Star-CCM+ `_ + - Simcenter Star-CCM+ is a comprehensive computational fluid dynamics (CFD) and multiphysics + simulation tool developed by Siemens Digital Industries Software. It is designed to + help engineers and researchers analyze and optimize the performance of products and + systems across various industries. * - Computational chemistry - `QUDA `_ @@ -170,12 +203,30 @@ Ubuntu versions. developing atmosphere, ocean, and other earth-system simulation components for use in climate, regional climate, and weather studies. + * - Energy, Oil, and Gas + - `DevitoPRO `_ + - DevitoPRO is an advanced extension of the open-source Devito platform with added + features tailored for high-demand production workflows. It supports + high-performance computing (HPC) needs, especially in seismic imaging and inversion. + It is used to perform optimized finite difference (FD) computations + from high-level symbolic problem definitions. DevitoPro performs automated + code generation and Just-In-time (JIT) compilation based on symbolic equations + defined in SymPy to create and execute highly optimized Finite Difference stencil + kernels on multiple computer platforms. + + * - + - `ECHELON `_ + - ECHELON by Stone Ridge Technology is a reservoir simulation tool. With + fast processing, it retains precise accuracy and preserves legacy simulator results. + Faster reservoir simulation enables reservoir engineers to produce many realizations, + address larger models, and use advanced physics. It opens new workflows based on + ensemble methodologies for history matching and forecasting that yield + increased accuracy and more predictive results. + * - Benchmark - `rocHPL `_ - - HPL, or High-Performance Linpack, is a benchmark which solves a uniformly - random system of linear equations and reports floating-point execution rate. - This documentation supports the implementation of the HPL benchmark on - top of AMD's ROCm platform. + - HPL, or High-Performance Linpack, is a benchmark which solves a uniformly + random system of linear equations and reports floating-point execution rate. * - - `rocHPL-MxP `_ @@ -216,6 +267,14 @@ Ubuntu versions. range of hardware platforms via use of an in-built domain specific language derived from the Mako templating engine. + * - + - `PETSc `_ + - Portable, Extensible Toolkit for Scientific Computation (PETSc) is a suite of data structures + and routines for the scalable (parallel) solution of scientific applications modeled by partial + differential equations. It supports MPI, GPUs through CUDA, HIP, and OpenCL, + as well as hybrid MPI-GPU parallelism. It also supports the NEC-SX Tsubasa Vector Engine. + PETSc also includes the Toolkit for Advanced Optimization (TAO) library. + * - - `RAJA `_ - RAJA is a library of C++ software abstractions, primarily developed at Lawrence diff --git a/docs/how-to/system-debugging.md b/docs/how-to/system-debugging.md index 11c0d58d2..99435445b 100644 --- a/docs/how-to/system-debugging.md +++ b/docs/how-to/system-debugging.md @@ -1,9 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description": "Learn more about common system-level debugging measures for ROCm." + "keywords": "env, var, sys, PCIe, troubleshooting, admin, error" +--- # System debugging diff --git a/docs/how-to/system-optimization/index.rst b/docs/how-to/system-optimization/index.rst index 7e0f19926..1cd5694b0 100644 --- a/docs/how-to/system-optimization/index.rst +++ b/docs/how-to/system-optimization/index.rst @@ -1,5 +1,5 @@ .. meta:: - :description: AMD hardware optimization for specific workloads + :description: Learn about AMD hardware optimization for HPC-specific and workstation workloads. :keywords: high-performance computing, HPC, Instinct accelerators, Radeon, tuning, tuning guide, AMD, ROCm diff --git a/docs/how-to/system-optimization/mi100.md b/docs/how-to/system-optimization/mi100.md index 98bdd148a..d3115cdd8 100644 --- a/docs/how-to/system-optimization/mi100.md +++ b/docs/how-to/system-optimization/mi100.md @@ -1,9 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description": "AMD Instinct MI100 system settings optimization guide." + "keywords": "Instinct, MI100, microarchitecture, AMD, ROCm" +--- # AMD Instinct MI100 system optimization diff --git a/docs/how-to/system-optimization/mi200.md b/docs/how-to/system-optimization/mi200.md index 96d8a8f7b..d85320b2e 100644 --- a/docs/how-to/system-optimization/mi200.md +++ b/docs/how-to/system-optimization/mi200.md @@ -1,9 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description": "Learn about AMD Instinct MI200 system settings and performance tuning." + "keywords": "Instinct, MI200, microarchitecture, AMD, ROCm" +--- # AMD Instinct MI200 system optimization diff --git a/docs/how-to/system-optimization/mi300a.rst b/docs/how-to/system-optimization/mi300a.rst index b6f72d301..e447a61df 100644 --- a/docs/how-to/system-optimization/mi300a.rst +++ b/docs/how-to/system-optimization/mi300a.rst @@ -1,5 +1,5 @@ .. meta:: - :description: AMD Instinct MI300A system settings + :description: Learn about AMD Instinct MI300A system settings and performance tuning. :keywords: AMD, Instinct, MI300A, HPC, tuning, BIOS settings, NBIO, ROCm, environment variable, performance, accelerator, GPU, EPYC, GRUB, operating system diff --git a/docs/how-to/system-optimization/mi300x.rst b/docs/how-to/system-optimization/mi300x.rst index 4a0145c5b..e6b9ad8a5 100644 --- a/docs/how-to/system-optimization/mi300x.rst +++ b/docs/how-to/system-optimization/mi300x.rst @@ -1,5 +1,5 @@ .. meta:: - :description: AMD Instinct MI300X system settings + :description: Learn about AMD Instinct MI300X system settings and performance tuning. :keywords: AMD, Instinct, MI300X, HPC, tuning, BIOS settings, NBIO, ROCm, environment variable, performance, accelerator, GPU, EPYC, GRUB, operating system @@ -35,7 +35,7 @@ functioning correctly before trying to improve its overall performance. In this section, the settings discussed mostly ensure proper functionality of your Instinct-based system. Some settings discussed are known to improve performance for most applications running on a MI300X system. See -:doc:`/how-to/tuning-guides/mi300x/workload` for how to improve performance for +:doc:`../rocm-for-ai/inference-optimization/workload` for how to improve performance for specific applications or workloads. .. _mi300x-bios-settings: diff --git a/docs/how-to/system-optimization/w6000-v620.md b/docs/how-to/system-optimization/w6000-v620.md index 9c195720d..27ee9cab7 100644 --- a/docs/how-to/system-optimization/w6000-v620.md +++ b/docs/how-to/system-optimization/w6000-v620.md @@ -1,9 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description": "Learn about system settings and performance tuning for RDNA2-based GPUs." + "keywords": "RDNA2, workstation, desktop, BIOS, installation, Radeon, pro, v620, w6000" +--- # AMD RDNA2 system optimization diff --git a/docs/how-to/tuning-guides/mi300x/index.rst b/docs/how-to/tuning-guides/mi300x/index.rst index 28389f40a..3703dd2f3 100644 --- a/docs/how-to/tuning-guides/mi300x/index.rst +++ b/docs/how-to/tuning-guides/mi300x/index.rst @@ -1,3 +1,7 @@ +.. meta:: + :description: How to configure MI300X accelerators to fully leverage their capabilities and achieve optimal performance. + :keywords: ROCm, AI, machine learning, MI300X, LLM, usage, tutorial, optimization, tuning + ************************ AMD MI300X tuning guides ************************ @@ -8,8 +12,8 @@ accelerators. They include detailed instructions on system settings and application tuning suggestions to help you fully leverage the capabilities of these accelerators, thereby achieving optimal performance. -* :doc:`/how-to/performance-validation/mi300x/vllm-benchmark` +* :doc:`../../rocm-for-ai/inference/vllm-benchmark` -* :doc:`/how-to/tuning-guides/mi300x/system` +* :doc:`../../system-optimization/mi300x` -* :doc:`/how-to/tuning-guides/mi300x/workload` +* :doc:`../../rocm-for-ai/inference-optimization/workload` diff --git a/docs/how-to/tuning-guides/mi300x/system.rst b/docs/how-to/tuning-guides/mi300x/system.rst deleted file mode 100644 index 77ef8430a..000000000 --- a/docs/how-to/tuning-guides/mi300x/system.rst +++ /dev/null @@ -1,22 +0,0 @@ -*************************************** -AMD Instinct MI300X system optimization -*************************************** - -The :doc:`/how-to/system-optimization/mi300x` guide discusses system settings that are -required to configure your system for AMD Instinct™ MI300X accelerators. -Some settings discussed are known to improve performance for most applications -running on an MI300X system. - -Topics discussed therein include: - -* :ref:`System BIOS settings ` - -* :ref:`GRUB settings ` - -* :ref:`Operating system settings ` - -* :ref:`System management ` - -For a look into improving performance for specific applications or workloads, -see :doc:`/how-to/tuning-guides/mi300x/workload`. - diff --git a/docs/index.md b/docs/index.md index fc0c9676d..bdfc8c2d7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,9 +1,9 @@ - - - - - +--- +myst: + html_meta: + "description": "Start building for HPC and AI with the performance-first AMD ROCm software stack. Explore how-to guides and reference docs." + "keywords": "Radeon, open, compute, platform, install, how, conceptual, reference, home, docs" +--- # AMD ROCm documentation @@ -39,15 +39,12 @@ ROCm documentation is organized into the following categories: * [Use ROCm for AI](./how-to/rocm-for-ai/index.rst) * [Use ROCm for HPC](./how-to/rocm-for-hpc/index.rst) -* [Fine-tune LLMs and inference optimization](./how-to/llm-fine-tuning-optimization/index.rst) * [System optimization](./how-to/system-optimization/index.rst) * [AMD Instinct MI300X performance validation and tuning](./how-to/tuning-guides/mi300x/index.rst) -* [GPU cluster networking](https://dcgpu.docs.amd.com/projects/gpu-cluster-networking/en/latest/index.html) * [System debugging](./how-to/system-debugging.md) -* [Use MPI](./how-to/gpu-enabled-mpi.rst) * [Use advanced compiler features](./conceptual/compiler-topics.md) * [Set the number of CUs](./how-to/setting-cus) -* [Troubleshoot BAR access limitation](./how-to/Bar-Memory.rst) +* [Troubleshoot BAR access limitation](./how-to/Bar-Memory.rst) * [ROCm examples](https://github.com/amd/rocm-examples) ::: @@ -64,16 +61,15 @@ ROCm documentation is organized into the following categories: * [Oversubscription of hardware resources](./conceptual/oversubscription.rst) ::: - :::{grid-item-card} Reference :class-body: rocm-card-banner rocm-hue-6 - + * [ROCm libraries](./reference/api-libraries.md) * [ROCm tools, compilers, and runtimes](./reference/rocm-tools.md) * [Accelerator and GPU hardware specifications](./reference/gpu-arch-specs.rst) * [Precision support](./reference/precision-support.rst) * [Graph safe support](./reference/graph-safe-support.rst) -::: +::: :::: diff --git a/docs/reference/api-libraries.md b/docs/reference/api-libraries.md index 0b83e4e0c..38756fef9 100644 --- a/docs/reference/api-libraries.md +++ b/docs/reference/api-libraries.md @@ -12,11 +12,11 @@ :gutter: 3 :class-container: rocm-doc-grid -(artificial-intelligence-apis)= - :::{grid-item-card} Machine Learning and Computer Vision :class-body: rocm-card-banner rocm-hue-3 +(artificial-intelligence-apis)= + * {doc}`Composable Kernel ` * {doc}`MIGraphX ` * {doc}`MIOpen ` @@ -28,30 +28,30 @@ * {doc}`ROCm Performance Primitives (RPP) ` ::: -(cpp-primitives)= - :::{grid-item-card} Primitives :class-body: rocm-card-banner rocm-hue-12 +(cpp-primitives)= + * {doc}`hipCUB ` * {doc}`hipTensor ` * {doc}`rocPRIM ` * {doc}`rocThrust ` ::: -(communication-libraries)= - :::{grid-item-card} Communication :class-body: rocm-card-banner rocm-hue-7 +(communication-libraries)= + * {doc}`RCCL ` ::: -(math-apis)= - :::{grid-item-card} Math :class-body: rocm-card-banner rocm-hue-6 +(math-apis)= + * [half](https://github.com/ROCm/half) * {doc}`hipBLAS ` / {doc}`rocBLAS ` * {doc}`hipBLASLt ` diff --git a/docs/reference/precision-support.rst b/docs/reference/precision-support.rst index fadd4b7d1..8ca5e59f2 100644 --- a/docs/reference/precision-support.rst +++ b/docs/reference/precision-support.rst @@ -467,7 +467,7 @@ description, refer to the corresponding library data type support page. - ❌/❌ - ❌/❌ * - - rocRAND (:doc:`details `) + - rocRAND (:doc:`details `) - -/❌ - -/❌ - -/✅ diff --git a/docs/reference/rocm-tools.md b/docs/reference/rocm-tools.md index 9ff9452d5..6f3c1fbfd 100644 --- a/docs/reference/rocm-tools.md +++ b/docs/reference/rocm-tools.md @@ -12,11 +12,11 @@ :gutter: 3 :class-container: rocm-doc-grid -(system-tools)= - :::{grid-item-card} System Management :class-body: rocm-card-banner rocm-hue-1 +(system-tools)= + * {doc}`AMD SMI ` * {doc}`ROCm Data Center Tool ` * {doc}`rocminfo ` @@ -24,11 +24,11 @@ * {doc}`ROCm Validation Suite ` ::: -(performance-tools)= - :::{grid-item-card} Performance :class-body: rocm-card-banner rocm-hue-6 +(performance-tools)= + * {doc}`ROCm Bandwidth Test ` * {doc}`ROCm Compute Profiler ` * {doc}`ROCm Systems Profiler ` @@ -37,11 +37,11 @@ * {doc}`ROCTracer ` ::: -(development-tools)= - :::{grid-item-card} Development :class-body: rocm-card-banner rocm-hue-1 +(development-tools)= + * {doc}`ROCm CMake ` * {doc}`HIPIFY ` * {doc}`ROCdbgapi ` @@ -49,21 +49,21 @@ * {doc}`ROCr Debug Agent ` ::: -(compilers)= - :::{grid-item-card} Compilers :class-body: rocm-card-banner rocm-hue-8 +(compilers)= + * {doc}`ROCm Compilers ` * {doc}`HIPCC ` * [FLANG](https://github.com/ROCm/flang/) ::: -(runtimes)= - :::{grid-item-card} Runtimes :class-body: rocm-card-banner rocm-hue-12 +(runtimes)= + * {doc}`AMD Compute Language Runtime (CLR) ` * {doc}`HIP ` * {doc}`ROCR-Runtime ` diff --git a/docs/release/versions.md b/docs/release/versions.md index 6083f466e..4331f32a8 100644 --- a/docs/release/versions.md +++ b/docs/release/versions.md @@ -1,3 +1,5 @@ +:orphan: + diff --git a/docs/sphinx/_toc.yml.in b/docs/sphinx/_toc.yml.in index 157001b81..f40e88326 100644 --- a/docs/sphinx/_toc.yml.in +++ b/docs/sphinx/_toc.yml.in @@ -36,40 +36,62 @@ subtrees: title: Use ROCm for AI subtrees: - entries: - - file: how-to/rocm-for-ai/install.rst - title: Installation - - file: how-to/rocm-for-ai/train-a-model.rst - title: Train a model - - file: how-to/rocm-for-ai/scale-model-training.rst - title: Scale model training - - file: how-to/rocm-for-ai/hugging-face-models.rst - title: Run models from Hugging Face - - file: how-to/rocm-for-ai/deploy-your-model.rst - title: Deploy your model - - file: how-to/rocm-for-hpc/index.rst - title: Use ROCm for HPC - - file: how-to/llm-fine-tuning-optimization/index.rst - title: Fine-tune LLMs and inference optimization - subtrees: - - entries: - - file: how-to/llm-fine-tuning-optimization/overview.rst - title: Conceptual overview - - file: how-to/llm-fine-tuning-optimization/fine-tuning-and-inference.rst + - file: how-to/rocm-for-ai/training/index.rst + title: Training subtrees: - entries: - - file: how-to/llm-fine-tuning-optimization/single-gpu-fine-tuning-and-inference.rst - title: Use a single accelerator - - file: how-to/llm-fine-tuning-optimization/multi-gpu-fine-tuning-and-inference.rst - title: Use multiple accelerators - - file: how-to/llm-fine-tuning-optimization/model-quantization.rst - - file: how-to/llm-fine-tuning-optimization/model-acceleration-libraries.rst - - file: how-to/llm-fine-tuning-optimization/llm-inference-frameworks.rst - - file: how-to/llm-fine-tuning-optimization/optimizing-with-composable-kernel.md - title: Optimize with Composable Kernel - - file: how-to/llm-fine-tuning-optimization/optimizing-triton-kernel.rst - title: Optimize Triton kernels - - file: how-to/llm-fine-tuning-optimization/profiling-and-debugging.rst - title: Profile and debug + - file: how-to/rocm-for-ai/training/train-a-model.rst + title: Train a model + - file: how-to/rocm-for-ai/training/scale-model-training.rst + title: Scale model training + + - file: how-to/rocm-for-ai/fine-tuning/index.rst + title: Fine-tuning LLMs + subtrees: + - entries: + - file: how-to/rocm-for-ai/fine-tuning/overview.rst + title: Conceptual overview + - file: how-to/rocm-for-ai/fine-tuning/fine-tuning-and-inference.rst + title: Fine-tuning + subtrees: + - entries: + - file: how-to/rocm-for-ai/fine-tuning/single-gpu-fine-tuning-and-inference.rst + title: Use a single accelerator + - file: how-to/rocm-for-ai/fine-tuning/multi-gpu-fine-tuning-and-inference.rst + title: Use multiple accelerators + + - file: how-to/rocm-for-ai/inference/index.rst + title: Inference + subtrees: + - entries: + - file: how-to/rocm-for-ai/inference/install.rst + title: Installation + - file: how-to/rocm-for-ai/inference/hugging-face-models.rst + title: Run models from Hugging Face + - file: how-to/rocm-for-ai/inference/llm-inference-frameworks.rst + title: LLM inference frameworks + - file: how-to/rocm-for-ai/inference/vllm-benchmark.rst + title: Performance validation + - file: how-to/rocm-for-ai/inference/deploy-your-model.rst + title: Deploy your model + + - file: how-to/rocm-for-ai/inference-optimization/index.rst + title: Inference optimization + subtrees: + - entries: + - file: how-to/rocm-for-ai/inference-optimization/model-quantization.rst + - file: how-to/rocm-for-ai/inference-optimization/model-acceleration-libraries.rst + - file: how-to/rocm-for-ai/inference-optimization/optimizing-with-composable-kernel.md + title: Optimize with Composable Kernel + - file: how-to/rocm-for-ai/inference-optimization/optimizing-triton-kernel.rst + title: Optimize Triton kernels + - file: how-to/rocm-for-ai/inference-optimization/profiling-and-debugging.rst + title: Profile and debug + - file: how-to/rocm-for-ai/inference-optimization/workload.rst + title: Workload tuning + + - file: how-to/rocm-for-hpc/index.rst + title: Use ROCm for HPC - file: how-to/system-optimization/index.rst title: System optimization subtrees: @@ -86,18 +108,6 @@ subtrees: title: AMD RDNA 2 - file: how-to/tuning-guides/mi300x/index.rst title: AMD MI300X performance validation and tuning - subtrees: - - entries: - - file: how-to/performance-validation/mi300x/vllm-benchmark.rst - title: Performance validation - - file: how-to/tuning-guides/mi300x/system.rst - title: System tuning - - file: how-to/tuning-guides/mi300x/workload.rst - title: Workload tuning - - url: https://dcgpu.docs.amd.com/projects/gpu-cluster-networking/en/latest/index.html - title: GPU cluster networking - - file: how-to/gpu-enabled-mpi.rst - title: Use MPI - file: how-to/system-debugging.md - file: conceptual/compiler-topics.md title: Use advanced compiler features @@ -179,7 +189,7 @@ subtrees: - caption: Contribute entries: - file: contribute/contributing.md - title: Contributing to the ROCm docmentation + title: Contributing to the ROCm documentation subtrees: - entries: - file: contribute/toolchain.md diff --git a/docs/sphinx/requirements.in b/docs/sphinx/requirements.in index 083994559..3a921d2dd 100644 --- a/docs/sphinx/requirements.in +++ b/docs/sphinx/requirements.in @@ -1,3 +1,3 @@ -rocm-docs-core==1.12.0 +rocm-docs-core==1.13.0 sphinx-reredirects sphinx-sitemap diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt index 79157002d..a1d655053 100644 --- a/docs/sphinx/requirements.txt +++ b/docs/sphinx/requirements.txt @@ -46,7 +46,7 @@ idna==3.10 # via requests imagesize==1.4.1 # via sphinx -jinja2==3.1.4 +jinja2==3.1.5 # via # myst-parser # sphinx @@ -90,7 +90,7 @@ requests==2.32.3 # via # pygithub # sphinx -rocm-docs-core==1.12.0 +rocm-docs-core==1.13.0 # via -r requirements.in smmap==5.0.1 # via gitdb diff --git a/docs/what-is-rocm.rst b/docs/what-is-rocm.rst index e8bf73296..dece49eea 100644 --- a/docs/what-is-rocm.rst +++ b/docs/what-is-rocm.rst @@ -10,7 +10,7 @@ ROCm is a software stack, composed primarily of open-source software, that provides the tools for programming AMD Graphics Processing Units (GPUs), from low-level kernels to high-level end-user applications. -.. image:: data/rocm-software-stack-6_3_1.jpg +.. image:: data/rocm-software-stack-6_3_2.jpg :width: 800 :alt: AMD's ROCm software stack and enabling technologies. :align: center diff --git a/tools/autotag/templates/highlights/6.3.2.md b/tools/autotag/templates/highlights/6.3.2.md new file mode 100644 index 000000000..516244368 --- /dev/null +++ b/tools/autotag/templates/highlights/6.3.2.md @@ -0,0 +1,41 @@ +# ROCm 6.3.2 release notes + +The release notes provide a summary of notable changes since the previous ROCm release. + +- [Release highlights](#release-highlights) + +- [Operating system and hardware support changes](#operating-system-and-hardware-support-changes) + +- [ROCm components versioning](#rocm-components) + +- [Detailed component changes](#detailed-component-changes) + +- [ROCm known issues](#rocm-known-issues) + +- [ROCm resolved issues](#rocm-resolved-issues) + +- [ROCm upcoming changes](#rocm-upcoming-changes) + +```{note} +If you’re using Radeon™ PRO or Radeon GPUs in a workstation setting with a +display connected, continue to use ROCm 6.2.3. See the [Use ROCm on Radeon GPUs](https://rocm.docs.amd.com/projects/radeon/en/latest/index.html) +documentation to verify compatibility and system requirements. +``` +## Release highlights + +The following are notable improvements in ROCm 6.3.2. For changes to individual components, see +[Detailed component changes](#detailed-component-changes). + +### ROCm documentation updates + +ROCm documentation continues to be updated to provide clearer and more comprehensive guidance for a wider variety of user needs and use cases. + +* Documentation about ROCm compatibility with deep learning frameworks has been added. These topics outline ROCm-enabled features for each deep learning framework, key ROCm libraries that can influence the capabilities, validated Docker image tags, and features supported across the available ROCm and framework versions. For more information, see: + + * [PyTorch compatibility](https://rocm.docs.amd.com/en/latest/compatibility/ml-compatibility/pytorch-compatibility.html) + + * [TensorFlow compatibility](https://rocm.docs.amd.com/en/latest/compatibility/ml-compatibility/tensorflow-compatibility.html) + + * [JAX compatibility](https://rocm.docs.amd.com/en/latest/compatibility/ml-compatibility/jax-compatibility.html) + +* The [HIP C++ language extensions](https://rocm.docs.amd.com/projects/HIP/en/latest/how-to/hip_cpp_language_extensions.html) and [Kernel language C++ support](https://rocm.docs.amd.com/projects/HIP/en/latest/how-to/kernel_language_cpp_support.html) topics have been reorganized to make them easier to find and review. The topics have also been enhanced with new content. diff --git a/tools/autotag/templates/known_issues/6.3.2.md b/tools/autotag/templates/known_issues/6.3.2.md new file mode 100644 index 000000000..bded233f0 --- /dev/null +++ b/tools/autotag/templates/known_issues/6.3.2.md @@ -0,0 +1,4 @@ +## ROCm known issues + +ROCm known issues are noted on {fab}`github` [GitHub](https://github.com/ROCm/ROCm/labels/Verified%20Issue). For known +issues related to individual components, review the [Detailed component changes](#detailed-component-changes). \ No newline at end of file diff --git a/tools/autotag/templates/resolved_issues/6.3.2.md b/tools/autotag/templates/resolved_issues/6.3.2.md new file mode 100644 index 000000000..0f57c86ad --- /dev/null +++ b/tools/autotag/templates/resolved_issues/6.3.2.md @@ -0,0 +1,26 @@ +## ROCm resolved issues + +The following are previously known issues resolved in this release. For resolved issues related to +individual components, review the [Detailed component changes](#detailed-component-changes). + +### TransferBench packages not functional + +Issue with TransferBench packages not being compiled properly has been fixed. For more information, See [GitHub issue #4081](https://github.com/ROCm/ROCm/issues/4081). + +### ROCm Compute Profiler CTest failure in CI + +When running the ROCm Compute Profiler (`rocprof-compute`) CTest in the Azure CI environment, the +`rocprof-compute` execution test failed. This issue was due to an outdated test file that was not renamed +(`omniperf` to `rocprof-compute`), and the `ROCM_PATH` environment variable not being set in +the Azure CI environment, resulting in the tool being unable to extract chip information as expected. +This issue has been fixed in the ROCm 6.3.2 release. See [GitHub issue #4085](https://github.com/ROCm/ROCm/issues/4085). + +### MIVisionX memory access fault in Canny edge detection + +An issue where Canny edge detection kernels accessed out-of-bounds memory locations while +computing gradient intensities on edge pixels has been fixed. This issue was isolated to +Canny-specific use cases on Instinct MI300 series accelerators. See [GitHub issue #4086](https://github.com/ROCm/ROCm/issues/4086). + +### AMD VCN instability with rocDecode + +A firmware crash on gfx942 devices when AMD Video Core Next (VCN) was used for rocDecode operations has been resolved. \ No newline at end of file diff --git a/tools/autotag/templates/support/6.3.2.md b/tools/autotag/templates/support/6.3.2.md new file mode 100644 index 000000000..c9d003052 --- /dev/null +++ b/tools/autotag/templates/support/6.3.2.md @@ -0,0 +1,7 @@ +## Operating system and hardware support changes + +ROCm 6.3.2 adds support for Azure Linux 3.0 (kernel: 6.6). Azure Linux is supported only on AMD Instinct accelerators. For more information, see [Azure Linux installation](https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/quick-start.html). + +See the [Compatibility +matrix](https://rocm.docs.amd.com/en/latest/compatibility/compatibility-matrix.html) +for more information about operating system and hardware compatibility. \ No newline at end of file diff --git a/tools/autotag/templates/upcoming_changes/6.3.2.md b/tools/autotag/templates/upcoming_changes/6.3.2.md new file mode 100644 index 000000000..ba4601c1e --- /dev/null +++ b/tools/autotag/templates/upcoming_changes/6.3.2.md @@ -0,0 +1,13 @@ +## ROCm upcoming changes + +The following changes to the ROCm software stack are anticipated for future releases. + +### AMDGPU wavefront size compiler macro deprecation + +The `__AMDGCN_WAVEFRONT_SIZE__` macro will be deprecated in an upcoming +release. It is recommended to remove any use of this macro. For more information, see [AMDGPU +support](https://rocm.docs.amd.com/projects/llvm-project/en/docs-6.3.2/LLVM/clang/html/AMDGPUSupport.html). + +### HIPCC Perl scripts deprecation + +The HIPCC Perl scripts (`hipcc.pl` and `hipconfig.pl`) will be removed in an upcoming release. \ No newline at end of file diff --git a/tools/rocm-build/rocm-6.2.2.xml b/tools/rocm-build/rocm-6.2.2.xml index 2c1bb427d..b2cce25f6 100644 --- a/tools/rocm-build/rocm-6.2.2.xml +++ b/tools/rocm-build/rocm-6.2.2.xml @@ -71,79 +71,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/tools/rocm-build/rocm-6.2.4.xml b/tools/rocm-build/rocm-6.2.4.xml index 0a8338c85..e23fdbb26 100644 --- a/tools/rocm-build/rocm-6.2.4.xml +++ b/tools/rocm-build/rocm-6.2.4.xml @@ -6,6 +6,7 @@ sync-c="true" sync-j="4" /> + @@ -72,78 +73,4 @@ -======== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -