New template for changelog (#100)

* Use components.xml instead of default.xml

* Rm unused var

* Use category instead of group

* Add group and category

* Change changelog template

* Conditional display

* Remove sort

* Add mappings

* Jinja does not track state

* Handle dupe logic in python

* Construct doc page and repo url

* Add repo url

* Add doc page

* Avoid using bare URL

* Add None key

* Test release notes
This commit is contained in:
Sam Wu
2024-07-03 09:17:21 -06:00
committed by GitHub
parent d991252467
commit 8311130829
11 changed files with 764 additions and 9366 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
# AMD ROCm 6.2 Release Notes # Release notes
<!-- Do not edit this file! This file is autogenerated with --> <!-- Do not edit this file! This file is autogenerated with -->
<!-- tools/autotag/tag_script.py --> <!-- tools/autotag/tag_script.py -->
@@ -11,214 +11,671 @@
<!-- spellcheck-disable --> <!-- spellcheck-disable -->
The release notes provide a comprehensive summary of changes since the previous AMD ROCm release. This page contains the release notes for AMD ROCm™ Software.
This document includes the following sections: -------------------
* {ref}`Release highlights <rn-highlights>` ## ROCm 6.1.2
* {ref}`Operating system and hardware support notes <rn-os-hw-support>`
* {ref}`ROCm components versioning <rn-components-ver>`
* {ref}`Detailed component notes <rn-components-det>`
* {ref}`ROCm platform known issues <rn-known-issues>`
* {ref}`ROCm platform upcoming changes <rn-upcoming>`
```{eval-rst} ROCm 6.1.2 includes enhancements to SMI tools and improvements to some libraries.
The :doc:`Compatibility matrix <../compatibility/compatibility-matrix>` page summarizes ROCm compatibility across
successive major and minor releases.
```
Previous ROCm release notes are available in the previous versions of the documentation. Browse previous ### OS support
versions of ROCm documentation in {doc}`../release/versions`.
(rn-highlights)= ROCm 6.1.2 has been tested against a pre-release version of Ubuntu 22.04.5 (kernel: 5.15 [GA], 6.8 [HWE]).
## Release highlights
AMD ROCm 6.2 introduces some fancy new features and improves the taste of spinach. ### AMD SMI
This section also describes other highlights. AMD SMI for ROCm 6.1.2
### System stability #### Additions
Submerging your hardware in water improves the flow of data.
### rocDecode
It now tastes great and is less filling.
(rn-os-hw-support)=
## Operating system and hardware support notes
AMD ROCm 6.2 adds the following operating system support:
* MI300A: Ubuntu 22.04.4 and RHEL 9.3
* MI300X: Ubuntu 22.04.4
Future releases will add additional operating systems to match the general offering.
For more information about the complete list of supported operating systems and hardware, see the system requirements
page for {doc}`Linux <rocm-install-on-linux:reference/system-requirements>` and
{doc}`Windows <rocm-install-on-windows:reference/system-requirements>`.
(rn-components-ver)=
## Components
The ROCm components are versioned independently. In addition to listing each component, this section also notes upgraded components
```{eval-rst}
.. csv-table::
:header: "Category", "Group", "Name", "Version", "Repository"
:stub-columns: 2
:widths: 1 1 1 1 1
"Libraries", "Machine learning and computer vision", :doc:`Composable Kernel <composable_kernel:index>`, 1.1, `<https://github.com/ROCm/composable_kernel>`__
"", "", :doc:`MIGraphX <amdmigraphx:index>`, 1.0, `<https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.2>`__
"", "", :doc:`MIOpen <miopen:index>`, 1.0, `<https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.2>`__
"", "", :doc:`MIVisionX <mivisionx:index>`, 1.1.0 ⇒ :ref:`1.1.1 <mivisionx>`, `<https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocAL <rocal:index>`, 2.1.5, `<https://github.com/ROCm/rocAL>`__
"", "", :doc:`rocDecode <rocdecode:index>`, 1.1.0, `<https://github.com/ROCm/rocDecode/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocPyDecode <rocpyDecode:index>`, 1.1.0, `<https://github.com/ROCm/rocPyDecode>`__
"", "", :doc:`ROCm Performance Primitives (RPP) <rpp:index>`, 4.4.1, `<https://github.com/ROCm/rpp/releases/tag/rocm-6.1.2>`__
"", "Communication", :doc:`RCCL <rccl:index>`, 2.18.6, `<https://github.com/ROCm/rccl/releases/tag/rocm-6.1.2>`__
"", "Math", :doc:`half <half:index>`, 1.0.0, `<https://github.com/ROCm/half/releases/tag/rocm-6.1.2>`__
"", "", :doc:`hipBLAS <hipbLAS:index>`, 1.4.12, `<https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.2>`__
"", "", :doc:`hipBLASLt <hipblaslt:index>`, 1.4.12, `<https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.2>`__
"", "", :doc:`hipFFT <hipfft:index>`, 1.4.12, `<https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.2>`__
"", "", :doc:`hipfort <hipfort:index>`, 1.4.12, `<https://github.com/ROCm/hipfort>`__
"", "", :doc:`hipRAND <hiprand:index>`, 1.4.12, `<https://github.com/ROCm/hipRAND>`__
"", "", :doc:`hipSOLVER <hipsolver:index>`, 1.4.12, `<https://github.com/ROCm/hipSOLVER>`__
"", "", :doc:`hipSPARSE <hipsparse:index>`, 1.4.12, `<https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.2>`__
"", "", :doc:`hipSPARSELt <hipsparselt:index>`, 1.4.12, `<https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocALUTION <rocalution:index>`, 1.4.12, `<https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocBLAS <rocblas:index>`, 6.5.0 ⇒ :ref:`6.5.1 <rocblas>`, `<https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocFFT <rocfft:index>`, 1.4.12, `<https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocRAND <rocrand:index>`, 1.4.12, `<https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocSOLVER <rocsolver:index>`, 1.4.12, `<https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocSPARSE <rocsparse:index>`, 1.4.12, `<https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocWMMA <rocwmma:index>`, 1.4.12, `<https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.2>`__
"", "", :doc:`Tensile <tensile:index>`, 1.4.12, `<https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.2>`__
"", "Primitives", :doc:`hipCUB <hipcub:index>`, 1.0.0, `<https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.2>`__
"", "", :doc:`hipTensor <hiptensor:index>`, 1.0.0, `<https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocPRIM <rocprim:index>`, 1.0.0, `<https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocThrust <rocthrust:index>`, 10.10.11, `<https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.2>`__
"Tools", "Development", :doc:`HIPIFY <hipify:index>`, 0.9.18, `<https://github.com/ROCm/HIPIFY/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCdbgapi <rocdbgapi:index>`, 0.16.1, `<https://github.com/ROCm/rocdbgapi/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCmCC <rocmcc:index>`, 0.9.18, `<https://github.com/ROCm/ROCmCC>`__
"", "", :doc:`ROCm CMake <rocm-cmake:index>`, 0.1.1, `<https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCm Debugger <rocgdb:index>`, 0.9.18, `<https://github.com/ROCm/ROCgdb/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCr Debug Agent <rocr_debug_agent:index>`, 0.9.18, `<https://github.com/ROCm/rocr_debug_agent/releases/tag/rocm-6.1.2>`__
"", "Performance", :doc:`Omniperf <omniperf:index>`, 2.0, `<https://github.com/ROCm/omniperf>`__
"", "", :doc:`Omnitrace <omnitrace:index>`, 2.0.1, `<https://github.com/ROCm/omnitrace>`__
"", "", :doc:`ROCm Bandwidth Test <rocm_bandwidth_test:index>`, 2.0.1, `<https://github.com/ROCm/rocm_bandwidth_test/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCProfiler <rocprofiler:index>`, 1.19.1, `<https://github.com/ROCm/rocprofiler/releases/tag/rocm-6.1.2>`__
"", "", rocprofiler-sdk, 1.19.1, `<https://github.com/ROCm/rocprofiler-sdk>`__
"", "", :doc:`ROCTracer <roctracer:index>`, 2.0.0, `<https://github.com/ROCm/roctracer/releases/tag/rocm-6.1.2>`__
"", "System", :doc:`AMD SMI <amdsmi:index>`, 1.2.4 ⇒ :ref:`1.2.5 <amdsmi>`, `<https://github.com/ROCm/amdsmi/releases/tag/rocm-6.1.2>`__
"", "", :doc:`rocminfo <rocminfo:index>`, 2.0.0, `<https://github.com/ROCm/rocminfo/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCm Data Center Tool <rdc:index>`, 2.0.0, `<https://github.com/ROCm/rdc/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCm SMI <rocm_smi_lib:index>`, 2.0.0, `<https://github.com/ROCm/rocm_smi_lib/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCm Validation Suite <rocmvalidationsuite:index>`, 2.0.0, `<https://github.com/ROCm/rocmvalidationsuite/releases/tag/rocm-6.1.2>`__
"", "", :doc:`TransferBench <TransferBench:index>`, 2.0.0, `<https://github.com/ROCm/TransferBench/releases/tag/v1.50>`__
"Compilers", "", :doc:`FLANG <flang:index>`, 0.9.10, `<https://github.com/ROCm/flang/releases/tag/rocm-6.1.2>`__
"", "", :doc:`hipCC <hipcc:index>`, 1.0, `<https://github.com/ROCm/llvm-project>`__
"", "", LLVM (amdclang), 3.0.1, `<https://github.com/ROCm/llvm-project>`__
"Runtimes", "", :doc:`AMD Common Language Runtime (CLR) <clr:index>`, 1.0.0, `<https://github.com/ROCm/clr/releases/tag/rocm-6.1.2>`__
"", "", :doc:`HIP <hip:index>`, 1.0, `<https://github.com/ROCm/hip/releases/tag/rocm-6.1.2>`__
"", "", :doc:`ROCR-Runtime <releases:index>`, 3.0.1, `<https://github.com/ROCm/ROCR-Runtime/releases/tag/rocm-6.1.2>`__
```
(rn-components-det)=
## Detailed component notes
(mivisionx)=
### MIVisionX (1.1.1)
#### Changes
* Describes changes to existing functionality or the addition of new functionality.
* You no longer need to clap to improve performance.
#### Removals
* Describes functionality or support that has been removed in this version. Quite often this information will have been noted in the Upcoming changes section
* Support for Microsoft Windows 95 has been removed.
#### Resolved issues
* Describes resolved since the previous version of this component. It should include information from earlier versions.
* Your ROCm applications can now run in the dark.
#### Optimizations
* Describes how the component has been optimized or improved.
* Works even better on a Commodore 64.
#### Known issues
* Describes known issues related to this specific component. We have a different section for the ROCm platform known issues.
* Component 1 doesn't operate as expected with an endless loop.
#### Upcoming changes
* Describes upcoming changes that were very confident will be introduced. Must be careful not to overpromise (especially on release numbers or dates).
This section should also include deprecation notices. Items in this section should be rolled forward until the change is introduced.
* In a future release, the hardware will generate electricity instead of consuming it.
(rocblas)=
### rocBLAS (6.5.1)
#### Changes
* Describes changes to existing functionality or the addition of new functionality.
* You no longer need to clap to improve performance.
#### Optimizations
* Describes how the component has been optimized or improved.
* Works even better on a Commodore 64.
(amdsmi)=
### AMD SMI (1.2.5)
#### Changes
* Added process isolation and clean shader APIs and CLI commands. * Added process isolation and clean shader APIs and CLI commands.
* `amdsmi_get_gpu_process_isolation()` * `amdsmi_get_gpu_process_isolation()`
* `amdsmi_set_gpu_process_isolation()` * `amdsmi_set_gpu_process_isolation()`
* `amdsmi_set_gpu_clear_sram_data()` * `amdsmi_set_gpu_clear_sram_data()`
* Added the `MIN_POWER` metric to output provided by `amd-smi static --limit`. * Added the `MIN_POWER` metric to output provided by `amd-smi static --limit`.
#### Optimizations
* Updated the `amd-smi monitor --pcie` output to prevent delays with the `monitor` command.
#### Changes
* Updated `amismi_get_power_cap_info` to return values in uW instead of W. * Updated `amismi_get_power_cap_info` to return values in uW instead of W.
* Updated Python library return types for `amdsmi_get_gpu_memory_reserved_pages` and `amdsmi_get_gpu_bad_page_info`. * Updated Python library return types for `amdsmi_get_gpu_memory_reserved_pages` and `amdsmi_get_gpu_bad_page_info`.
* Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks. * Updated the output of `amd-smi metric --ecc-blocks` to show counters available from blocks.
#### Removals #### Fixes
* Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release.
#### Resolved issues
* `amdsmi_get_gpu_board_info()` no longer returns junk character strings. * `amdsmi_get_gpu_board_info()` no longer returns junk character strings.
* `amd-smi metric --power` now correctly details power output for RDNA3, RDNA2, and MI1x devices. * `amd-smi metric --power` now correctly details power output for RDNA3, RDNA2, and MI1x devices.
* Fixed the `amdsmitstReadWrite.TestPowerCapReadWrite` test for RDNA3, RDNA2, and MI100 devices. * Fixed the `amdsmitstReadWrite.TestPowerCapReadWrite` test for RDNA3, RDNA2, and MI100 devices.
* Fixed an issue with the `amdsmi_get_gpu_memory_reserved_pages` and `amdsmi_get_gpu_bad_page_info` Python interface calls. * Fixed an issue with the `amdsmi_get_gpu_memory_reserved_pages` and `amdsmi_get_gpu_bad_page_info` Python interface calls.
#### Optimizations #### Removals
* Updated the `amd-smi monitor --pcie` output to prevent delays with the `monitor` command. * Removed the `amdsmi_get_gpu_process_info` API from the Python library. It was removed from the C library in an earlier release.
```{note} ```{note}
See the AMD SMI [detailed changelog](https://github.com/ROCm/amdsmi/blob/rocm-6.1.x/CHANGELOG.md) with code samples for more information. See the AMD SMI [detailed changelog](https://github.com/ROCm/amdsmi/blob/rocm-6.1.x/CHANGELOG.md) with code samples for more information.
``` ```
(rn-known-issues)= ### HIPCC
## ROCm platform known issues
AMD ROCm known issues are noted on [GitHub](https://github.com/ROCm/ROCm/labels/Verified%20Issue). This section also notes resolved issues. HIPCC for ROCm 6.1.2
For known issues related to individual components, review the content in [Detailed component notes](rn-components-det).
(rn-upcoming)= #### Changes
## ROCm platform upcoming changes
The section notes upcoming changes related to the AMD ROCm platform. For upcoming changes related to individual components, review the content in [Detailed component notes](rn-components-det).
* A future release will enable the use of HIPCC compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`. * **Upcoming:** a future release will enable use of compiled binaries `hipcc.bin` and `hipconfig.bin` by default. No action is needed by users; you may continue calling high-level Perl scripts `hipcc` and `hipconfig`. `hipcc.bin` and `hipconfig.bin` will be invoked by the high-level Perl scripts. To revert to the previous behavior and invoke `hipcc.pl` and `hipconfig.pl`, set the `HIP_USE_PERL_SCRIPTS` environment variable to `1`.
* A subsequent release will remove high-level HIPCC Perl scripts from `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly. * **Upcoming:** a subsequent release will remove high-level Perl scripts `hipcc` and `hipconfig`. This release will remove the `HIP_USE_PERL_SCRIPTS` environment variable. It will rename `hipcc.bin` and `hipconfig.bin` to `hipcc` and `hipconfig` respectively. No action is needed by the users. To revert to the previous behavior, invoke `hipcc.pl` and `hipconfig.pl` explicitly.
* A subsequent release will remove `hipcc.pl` and `hipconfig.pl` for HIPCC. * **Upcoming:** a subsequent release will remove `hipcc.pl` and `hipconfig.pl`.
### ROCm SMI
ROCm SMI for ROCm 6.1.2
#### Additions
* Added the ring hang event to the `amdsmi_evt_notification_type_t` enum.
#### Fixes
* Fixed an issue causing ROCm SMI to incorrectly report GPU utilization for RDNA3 GPUs. See the issue on [GitHub](https://github.com/ROCm/ROCm/issues/3112).
* Fixed the parsing of `pp_od_clk_voltage` in `get_od_clk_volt_info` to work better with MI-series hardware.
### Library changes in ROCm 6.1.2
| Category | Group | Name | Version | Repository |
|----------|-------|------|---------|------------|
| Libraries | Machine Learning and Computer Vision | [composable_kernel](https://rocm.docs.amd.com/projects/ROCm/composable_kernel/en/latest) | [0.2.0](https://github.com/ROCm/composable_kernel/releases/tag/rocm-6.1.2) | [ROCm/composable_kernel](https://github.com/ROCm/ROCm/composable_kernel) |
| | | [AMDMIGraphX](https://rocm.docs.amd.com/projects/ROCm/AMDMIGraphX/en/latest) | [2.9](https://github.com/ROCm/AMDMIGraphX/releases/tag/rocm-6.1.2) | [ROCm/AMDMIGraphX](https://github.com/ROCm/ROCm/AMDMIGraphX) |
| | | [MIOpen](https://rocm.docs.amd.com/projects/ROCm/MIOpen/en/latest) | [3.1.0](https://github.com/ROCm/MIOpen/releases/tag/rocm-6.1.2) | [ROCm/MIOpen](https://github.com/ROCm/ROCm/MIOpen) |
| | | [MIVisionX](https://rocm.docs.amd.com/projects/ROCm/MIVisionX/en/latest) | [2.5.0](https://github.com/ROCm/MIVisionX/releases/tag/rocm-6.1.2) | [ROCm/MIVisionX](https://github.com/ROCm/ROCm/MIVisionX) |
| | | [rpp](https://rocm.docs.amd.com/projects/ROCm/rpp/en/latest) | [1.5.0](https://github.com/ROCm/rpp/releases/tag/rocm-6.1.2) | [ROCm/rpp](https://github.com/ROCm/ROCm/rpp) |
| | Communication | [rccl](https://rocm.docs.amd.com/projects/ROCm/rccl/en/latest) | [2.18.6](https://github.com/ROCm/rccl/releases/tag/rocm-6.1.2) | [ROCm/rccl](https://github.com/ROCm/ROCm/rccl) |
| | | [hipBLAS](https://rocm.docs.amd.com/projects/ROCm/hipBLAS/en/latest) | [2.1.0](https://github.com/ROCm/hipBLAS/releases/tag/rocm-6.1.2) | [ROCm/hipBLAS](https://github.com/ROCm/ROCm/hipBLAS) |
| | | [hipBLASLt](https://rocm.docs.amd.com/projects/ROCm/hipBLASLt/en/latest) | [0.7.0](https://github.com/ROCm/hipBLASLt/releases/tag/rocm-6.1.2) | [ROCm/hipBLASLt](https://github.com/ROCm/ROCm/hipBLASLt) |
| | | [hipFFT](https://rocm.docs.amd.com/projects/ROCm/hipFFT/en/latest) | [1.0.14](https://github.com/ROCm/hipFFT/releases/tag/rocm-6.1.2) | [ROCm/hipFFT](https://github.com/ROCm/ROCm/hipFFT) |
| | | [hipRAND](https://rocm.docs.amd.com/projects/ROCm/hipRAND/en/latest) | [2.10.17](https://github.com/ROCm/hipRAND/releases/tag/rocm-6.1.2) | [ROCm/hipRAND](https://github.com/ROCm/ROCm/hipRAND) |
| | | [hipSOLVER](https://rocm.docs.amd.com/projects/ROCm/hipSOLVER/en/latest) | [2.1.1](https://github.com/ROCm/hipSOLVER/releases/tag/rocm-6.1.2) | [ROCm/hipSOLVER](https://github.com/ROCm/ROCm/hipSOLVER) |
| | | [hipSPARSE](https://rocm.docs.amd.com/projects/ROCm/hipSPARSE/en/latest) | [3.0.1](https://github.com/ROCm/hipSPARSE/releases/tag/rocm-6.1.2) | [ROCm/hipSPARSE](https://github.com/ROCm/ROCm/hipSPARSE) |
| | | [hipSPARSELt](https://rocm.docs.amd.com/projects/ROCm/hipSPARSELt/en/latest) | [0.2.0](https://github.com/ROCm/hipSPARSELt/releases/tag/rocm-6.1.2) | [ROCm/hipSPARSELt](https://github.com/ROCm/ROCm/hipSPARSELt) |
| | | [rocALUTION](https://rocm.docs.amd.com/projects/ROCm/rocALUTION/en/latest) | [3.1.1](https://github.com/ROCm/rocALUTION/releases/tag/rocm-6.1.2) | [ROCm/rocALUTION](https://github.com/ROCm/ROCm/rocALUTION) |
| | | [rocBLAS](https://rocm.docs.amd.com/projects/ROCm/rocBLAS/en/latest) | [4.1.2](https://github.com/ROCm/rocBLAS/releases/tag/rocm-6.1.2) | [ROCm/rocBLAS](https://github.com/ROCm/ROCm/rocBLAS) |
| | | [rocFFT](https://rocm.docs.amd.com/projects/ROCm/rocFFT/en/latest) | [1.0.27](https://github.com/ROCm/rocFFT/releases/tag/rocm-6.1.2) | [ROCm/rocFFT](https://github.com/ROCm/ROCm/rocFFT) |
| | | [rocRAND](https://rocm.docs.amd.com/projects/ROCm/rocRAND/en/latest) | [3.0.1](https://github.com/ROCm/rocRAND/releases/tag/rocm-6.1.2) | [ROCm/rocRAND](https://github.com/ROCm/ROCm/rocRAND) |
| | | [rocSOLVER](https://rocm.docs.amd.com/projects/ROCm/rocSOLVER/en/latest) | [3.25.0](https://github.com/ROCm/rocSOLVER/releases/tag/rocm-6.1.2) | [ROCm/rocSOLVER](https://github.com/ROCm/ROCm/rocSOLVER) |
| | | [rocSPARSE](https://rocm.docs.amd.com/projects/ROCm/rocSPARSE/en/latest) | [3.1.2](https://github.com/ROCm/rocSPARSE/releases/tag/rocm-6.1.2) | [ROCm/rocSPARSE](https://github.com/ROCm/ROCm/rocSPARSE) |
| | | [rocWMMA](https://rocm.docs.amd.com/projects/ROCm/rocWMMA/en/latest) | [1.4.0](https://github.com/ROCm/rocWMMA/releases/tag/rocm-6.1.2) | [ROCm/rocWMMA](https://github.com/ROCm/ROCm/rocWMMA) |
| | | [Tensile](https://rocm.docs.amd.com/projects/ROCm/Tensile/en/latest) | [4.40.0](https://github.com/ROCm/Tensile/releases/tag/rocm-6.1.2) | [ROCm/Tensile](https://github.com/ROCm/ROCm/Tensile) |
| | Primitives | [hipCUB](https://rocm.docs.amd.com/projects/ROCm/hipCUB/en/latest) | [3.1.0](https://github.com/ROCm/hipCUB/releases/tag/rocm-6.1.2) | [ROCm/hipCUB](https://github.com/ROCm/ROCm/hipCUB) |
| | | [hipTensor](https://rocm.docs.amd.com/projects/ROCm/hipTensor/en/latest) | [1.2.0](https://github.com/ROCm/hipTensor/releases/tag/rocm-6.1.2) | [ROCm/hipTensor](https://github.com/ROCm/ROCm/hipTensor) |
| | | [rocPRIM](https://rocm.docs.amd.com/projects/ROCm/rocPRIM/en/latest) | [3.1.0](https://github.com/ROCm/rocPRIM/releases/tag/rocm-6.1.2) | [ROCm/rocPRIM](https://github.com/ROCm/ROCm/rocPRIM) |
| | | [rocThrust](https://rocm.docs.amd.com/projects/ROCm/rocThrust/en/latest) | [3.0.1](https://github.com/ROCm/rocThrust/releases/tag/rocm-6.1.2) | [ROCm/rocThrust](https://github.com/ROCm/ROCm/rocThrust) |
| | | [ROCdbgapi](https://rocm.docs.amd.com/projects/ROCm/ROCdbgapi/en/latest) | [0.71.0](https://github.com/ROCm/ROCdbgapi/releases/tag/rocm-6.1.2) | [ROCm/ROCdbgapi](https://github.com/ROCm/ROCm/ROCdbgapi) |
| | | [rocm-cmake](https://rocm.docs.amd.com/projects/ROCm/rocm-cmake/en/latest) | [0.12.0](https://github.com/ROCm/rocm-cmake/releases/tag/rocm-6.1.2) | [ROCm/rocm-cmake](https://github.com/ROCm/ROCm/rocm-cmake) |
#### AMDMIGraphX
MIGraphX 2.9 for ROCm 6.1.2
##### Additions
* Added FP8 support
* Created a dockerfile with MIGraphX+ONNX Runtime EP+Torch
* Added support for the `Hardmax`, `DynamicQuantizeLinear`, `Qlinearconcat`, `Unique`, `QLinearAveragePool`, `QLinearSigmoid`, `QLinearLeakyRelu`, `QLinearMul`, `IsInf` operators
* Created web site examples for `Whisper`, `Llama-2`, and `Stable Diffusion 2.1`
* Created examples of using the ONNX Runtime MIGraphX Execution Provider with the `InceptionV3` and `Resnet50` models
* Updated operators to support ONNX Opset 19
* Enable fuse_pointwise and fuse_reduce in the driver
* Add support for dot-(mul)-softmax-dot offloads to MLIR
* Added Blas auto-tuning for GEMMs
* Added dynamic shape support for the multinomial operator
* Added fp16 to accuracy checker
* Added initial code for running on Windows OS
##### Optimizations
* Improved the output of migraphx-driver command
* Documentation now shows all environment variables
* Updates needed for general stride support
* Enabled Asymmetric Quantization
* Added ScatterND unsupported reduction modes
* Rewrote softmax for better performance
* General improvement to how quantization is performed to support INT8
* Used problem_cache for gemm tuning
* Improved performance by always using rocMLIR for quantized convolution
* Improved group convolutions by using rocMLIR
* Improved accuracy of fp16 models
* ScatterElements unsupported reduction
* Added concat fusions
* Improved INT8 support to include UINT8
* Allow reshape ops between dq and quant_op
* Improve dpp reductions on navi
* Have the accuracy checker print the whole final buffer
* Added support for handling dynamic Slice and ConstantOfShape ONNX operators
* Add support for the dilations attribute to Pooling ops
* Add layout attribute support for LSTM operator
* Improved performance by removing contiguous for reshapes
* Handle all slice input variations
* Add scales attribute parse in upsample for older opset versions
* Added support for uneven Split operations
* Improved unit testing to run in python virtual environments
##### Fixes
* Fixed outstanding issues in autogenerated documentation
* Update model zoo paths for examples
* Fixed promote_literals_test by using additional if condition
* Fixed export API symbols from dynamic library
* Fixed bug in pad operator from dimension reduction
* Fixed using the LD to embed files and enable by default when building shared libraries on linux
* fixed get_version()
* Fixed Round operator inaccuracy
* Fixed wrong size check when axes not present for slice
* Set the .SO version correctly
##### Changes
* Cleanup LSTM and RNN activation functions
* Placed gemm_pointwise at a higher priority than layernorm_pointwise
* Updated README to mention the need to include GPU_TARGETS when building MIGraphX
##### Removals
* Removed unused device kernels from Gather and Pad operators
* Removed int8x4 format
#### composable_kernel
CK 0.2.0 for ROCm 6.1.2
##### Fixes
* Fixed a bug in 6-dimensional kernels (#555)
* Fixed a test case failure with grouped convolution backward weight (#524)
##### Optimizations
* Improved the performance of the normalization kernel
##### Additions
* New CMake flags:
* &#34;DL_KERNELS&#34;-* Must be set to &#34;ON&#34; in order to build the gemm_dl and batched_gemm_multi_d_dl instances
* &#34;DTYPES&#34; -- Can be set to any subset of &#34;fp64;fp32;fp16;fp8;bf16;int8&#34; to build an instance of the specified data types
* &#34;INSTANCES_ONLY&#34; -- Only builds CK library and instances without tests, examples, or profiler
* New feature: if GPU_TARGETS is not set in the CMake command line, CK will be built for all targets supported by the compiler
* Support for MI300A/MI300X
* Support for AMD RDNA 3
* New user tutorial (#563)
* Additional instances for irregular GEMM sizes (#560)
* New inter-wave consumer-producer programming model for GEMM kernels (#310)
* GEMM with support multiple elementwise fusions (multi-D) (#534)
* Multi-embeddings support (#542)
* AMD RDNA 3 blockwise GEMM and real GEMM support (#541)
* AMD RDNA grouped convolution backward weight support (#505)
* MaxPool and AvgPool forward (#815); MaxPool backward (#750)
##### Changes
None
#### hipBLAS
hipBLAS 2.1.0 for ROCm 6.1.2
##### Additions
* New build option to automatically use hipconfig --platform to determine HIP platform
* Level 1 functions have additional ILP64 API for both C and Fortran (`_64` name
suffix) with int64_t function arguments
* New functions hipblasGetMathMode and hipblasSetMathMode
##### Deprecations
* USE_CUDA build option; use HIP_PLATFORM=amd or HIP_PLATFORM=nvidia to override hipconfig
##### Changes
* Some Level 2 function argument names have changed from `m` to `n` to match legacy BLAS; there
was no change in implementation.
* Updated client code to use YAML-based testing
* Renamed `.doxygen` and `.sphinx` folders to `doxygen` and `sphinx`, respectively
* Added CMake support for documentation
#### hipBLASLt
hipBLASLt 0.7.0 for ROCm 6.1.2
##### Additions
* Added `hipblasltExtSoftmax` extension API
* Added `hipblasltExtLayerNorm` extension API
* Added `hipblasltExtAMax` extension API
* Added `GemmTuning` extension parameter to set split-k by user
* Support for mix precision datatype: fp16/fp8 in with fp16 out
##### Deprecations
* algoGetHeuristic() ext API for GroupGemm will be deprecated in a future release of hipBLASLt
#### hipCUB
hipCUB 3.1.0 for ROCm 6.1.2
##### Changed
- CUB backend references CUB and Thrust version 2.1.0.
- Updated `HIPCUB_HOST_WARP_THREADS` macro definition to match `host_warp_size` changes from rocPRIM 3.0.
- Implemented `__int128_t` and `__uint128_t` support for radix_sort.
##### Fixed
- Fixed build issues with `rmake.py` on Windows when using VS 2017 15.8 or later due to a breaking fix with extended aligned storage.
##### Added
- Added interface `DeviceMemcpy::Batched` for batched memcpy from rocPRIM and CUB.
#### hipFFT
hipFFT 1.0.14 for ROCm 6.1.2
##### Changes
* When building hipFFT from source, rocFFT code no longer needs to be initialized as a git submodule.
##### Fixes
* Fixed error when creating length-1 plans.
#### hipRAND
hipRAND 2.10.17 for ROCm 6.1.2
##### Fixes
* Fixed benchmark and unit test builds on Windows
#### hipSOLVER
hipSOLVER 2.1.1 for ROCm 6.1.2
##### Changed
- `BUILD_WITH_SPARSE` now defaults to OFF on Windows.
##### Fixed
- Fixed benchmark client build when `BUILD_WITH_SPARSE` is OFF.
#### hipSPARSE
hipSPARSE 3.0.1 for ROCm 6.1.2
##### Fixes
* Fixes to the build chain
#### hipSPARSELt
hipSPARSELt 0.2.0 for ROCm 6.1.2
##### Added
- Support Matrix B is a Structured Sparsity Matrix.
#### hipTensor
hipTensor 1.2.0 for ROCm 6.1.2
##### Additions
* API support for permutation of rank 4 tensors: f16 and f32
* New datatype support in contractions of rank 4: f16, bf16, complex f32, complex f64
* Added scale and bilinear contraction samples and tests for new supported data types
* Added permutation samples and tests for f16, f32 types
##### Fixes
* Fixed bug in contraction calculation with data type f32
#### MIOpen
MIOpen 3.1.0 for ROCm 6.1.2
##### Added
- CK-based 2d/3d convolution solvers to support nchw/ncdhw layout
- Fused solver for Fwd Convolution with Residual, Bias and activation
- AI Based Parameter Prediction Model for conv_hip_igemm_group_fwd_xdlops Solver
- Forward, backward data and backward weight convolution solver with fp8/bfp8
- check for packed tensors for convolution solvers
- Integrate CK&#39;s layer norm
- Combine gtests into single binary
##### Fixed
- fix for backward passes bwd/wrw for CK group conv 3d
- Fixed out-of-bounds memory access : ConvOclDirectFwdGen
- fixed build failure due to hipRTC
##### Changed
- Standardize workspace abstraction
- Use split CK libraries
##### Removed
- clamping to MAX from CastTensor used in Bwd and WrW convolution
#### MIVisionX
MIVisionX for ROCm 6.1.2
##### Additions
* CTest: Tests for install verification
* Hardware support updates
* Doxygen support for API documentation
##### Optimizations
* CMakeList Cleanup
* Readme
##### Changes
* rocAL: PyBind Link to prebuilt library
* PyBind11
* RapidJSON
* Setup Updates
* RPP - Use package install
* Dockerfiles: Updates &amp; bugfix
* CuPy - No longer installed with setup.py
##### Fixes
* rocAL bug fix and updates
##### Tested Configurations
* Windows `10` / `11`
* Linux distribution
* Ubuntu - `20.04` / `22.04`
* CentOS - `7` / `8`
* RHEL - `8` / `9`
* SLES - `15-SP4`
* ROCm: rocm-core - `5.7.0.50700-6`
* miopen-hip - `2.20.0.50700-63`
* MIGraphX - `2.7.0.50700-63`
* Protobuf - [V3.12.4](https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.4)
* OpenCV - [4.6.0](https://github.com/opencv/opencv/releases/tag/4.6.0)
* RPP - [1.5.0]
* FFMPEG - [n4.4.2](https://github.com/FFmpeg/FFmpeg/releases/tag/n4.4.2)
* Dependencies for all preceding packages
* MIVisionX setup script - `V2.6.1`
##### Known Issues
* OpenCV 4.X support for some applications is missing
* MIVisionX package install requires manual prerequisites installation
#### rccl
RCCL 2.18.6 for ROCm 6.1.2
##### Changed
- Reduced NCCL_TOPO_MAX_NODES to limit stack usage and avoid overflow
#### rocALUTION
rocALUTION 3.1.1 for ROCm 6.1.2
##### Additions
* `TripleMatrixProduct` functionality for `GlobalMatrix`
* Multi-Node/GPU support for `UA-AMG`, `SA-AMG` and `RS-AMG`
* Iterative ILU0 preconditioner `ItILU0`
* Iterative triangular solve, selectable via `SolverDecr` class
##### Deprecations
* `LocalMatrix::AMGConnect`
* `LocalMatrix::AMGAggregate`
* `LocalMatrix::AMGPMISAggregate`
* `LocalMatrix::AMGSmoothedAggregation`
* `LocalMatrix::AMGAggregation`
* `PairwiseAMG`
##### Known Issues
* `PairwiseAMG` does currently not support matrix sizes that exceed int32 range
* `PairwiseAMG` might fail building the hierarchy on certain input matrices
#### rocBLAS
rocBLAS 4.1.2 for ROCm 6.1.2
##### Fixes
* Fixes BF16 TT get_solutions
##### Optimizations
* Tune gfx942 BBS TN, TT
#### ROCdbgapi
rocm-dbgapi 0.71.0 for ROCm 6.1.2
##### Added
- Add support for gfx940, gfx941 and gfx942 architectures.
#### rocFFT
rocFFT 1.0.27 for ROCm 6.1.2
##### Fixes
* Fixed kernel launch failure on execute of very large odd-length real-complex transforms.
##### Additions
* Enable multi-gpu testing on systems without direct GPU-interconnects
#### rocm-cmake
rocm-cmake 0.12.0 for ROCm 6.1.2
##### Changed
- ROCMSphinxDoc: Allow separate source and config directories.
- ROCMCreatePackage: Allow additional `PROVIDES` on header-only packages.
- ROCMInstallTargets: Don&#39;t install executable targets by default for ASAN builds.
- ROCMTest: Add RPATH for installed tests.
- Finalize rename to ROCmCMakeBuildTools
##### Fixed
- ROCMClangTidy: Fixed invalid list index.
- Test failures when ROCM_CMAKE_GENERATOR is empty.
#### rocPRIM
rocPRIM 3.1.0 for ROCm 6.1.2
##### Additions
* New primitive: `block_run_length_decode`
* New primitive: `batch_memcpy`
##### Changes
* Renamed:
* `scan_config_v2` to `scan_config`
* `scan_by_key_config_v2` to `scan_by_key_config`
* `radix_sort_config_v2` to `radix_sort_config`
* `reduce_by_key_config_v2` to `reduce_by_key_config`
* `radix_sort_config_v2` to `radix_sort_config`
* Removed support for custom config types for device algorithms
* `host_warp_size()` was moved into `rocprim/device/config_types.hpp`; it now uses either `device_id` or
a `stream` parameter to query the proper device and a `device_id` out parameter
* The return type is `hipError_t`
* Added support for `__int128_t` in `device_radix_sort` and `block_radix_sort`
* Improved the performance of `match_any`, and `block_histogram` which uses it
##### Deprecations
* Removed `reduce_by_key_config`, `MatchAny`, `scan_config`, `scan_by_key_config`, and
`radix_sort_config`
##### Fixes
* Build issues with `rmake.py` on Windows when using VS 2017 15.8 or later (due to a breaking fix with
extended aligned storage)
#### rocRAND
rocRAND 3.0.1 for ROCm 6.1.2
##### Fixes
* Implemented workaround for regressions in XORWOW and LFSR on MI200
#### rocSOLVER
rocSOLVER 3.25.0 for ROCm 6.1.2
##### Added
- Eigensolver routines for symmetric/hermitian matrices using Divide &amp; Conquer and Jacobi algorithm:
- SYEVDJ (with batched and strided\_batched versions)
- HEEVDJ (with batched and strided\_batched versions)
- Generalized symmetric/hermitian-definite eigensolvers using Divide &amp; Conquer and Jacobi algorithm:
- SYGVDJ (with batched and strided\_batched versions)
- HEGVDJ (with batched and strided\_batched versions)
##### Changed
- Relaxed array length requirements for GESVDX with `rocblas_srange_index`.
##### Removed
- Removed gfx803 and gfx900 from default build targets.
##### Fixed
- Corrected singular vector normalization in BDSVDX and GESVDX
- Fixed potential memory access fault in STEIN, SYEVX/HEEVX, SYGVX/HEGVX, BDSVDX and GESVDX
#### rocSPARSE
rocSPARSE 3.1.2 for ROCm 6.1.2
##### Additions
* New LRB algorithm to SpMV, supporting CSR format
* rocBLAS as now an optional dependency for SDDMM algorithms
* Additional verbose output for `csrgemm` and `bsrgemm`
##### Optimizations
* Triangular solve with multiple rhs (SpSM, csrsm, ...) now calls SpSV, csrsv, etcetera when nrhs equals 1
* Improved user manual section *Installation and Building for Linux and Windows*
* Improved SpMV in CSR format on MI300
#### rocThrust
rocThrust 3.0.1 for ROCm 6.1.2
##### Fixes
* Ported a fix from thrust 2.2 that ensures `thrust::optional` is trivially copyable.
#### rocWMMA
rocWMMA 1.4.0 for ROCm 6.1.2
##### Additions
* Added bf16 support for hipRTC sample
##### Changes
* Changed Clang C++ version to C++17
* Updated rocwmma_coop API
* Linked rocWMMA to hiprtc
##### Fixes
* Fixed compile/runtime arch checks
* Built all test in large code model
* Removed inefficient branching in layout loop unrolling
#### rpp
rpp for ROCm 6.1.2
##### Changes
* Prerequisites
##### Tested Configurations
* Linux distribution
* Ubuntu - `20.04` / `22.04`
* CentOS - `7`
* RHEL - `8`/`9`
* ROCm: rocm-core - `5.5.0.50500-63`
* Clang - Version `5.0.1` and above
* CMake - Version `3.22.3`
* IEEE 754-based half-precision floating-point library - Version `1.12.0`
#### Tensile
Tensile 4.40.0 for ROCm 6.1.2
##### Additions
- new DisableKernelPieces values to invalidate local read, local write, and global read
- stream-K kernel generation, including two-tile stream-k algorithm by setting StreamK=3
- feature to allow testing stream-k grid multipliers
- debug output to check occupancy for Stream-K
- reject condition for FractionalLoad + DepthU!=power of 2
- new TENSILE_DB debugging value to dump the common kernel parameters
- predicate for APU libs
- new parameter (ClusterLocalRead) to turn on/off wider local read opt for TileMajorLDS
- new parameter (ExtraLatencyForLR) to add extra interval between local read and wait
- new logic to check LDS size with auto LdsPad(=1) and change LdsPad to 0 if LDS overflows
- initialization type and general batched options to the rocblas-bench input creator script
##### Optimizations
- enabled MFMA + LocalSplitU=4 for MT16x16
- enabled (DirectToVgpr + MI4x4) and supported skinny MacroTile
- optimized postGSU kernel: separate postGSU kernels for different GSU values, loop unroll for GSU loop, wider global load depending on array size, and parallel reduction depending on array size
- auto LdsPad calculation for TileMajorLds + MI16x16
- auto LdsPad calculation for UnrollMajorLds + MI16x16 + VectorWidth
##### Changes
- cleared hipErrorNotFound error since it is an expected part of the search
- modified hipcc search path for Linux
- changed PCI ID from 32bit to 64bit for ROCm SMI HW monitor
- changed LdsBlockSizePerPad to LdsBlockSizePerPadA, B to specify LBSPP separately
- changed the default value of LdsPadA, B, LdsBlockSizePerPadA, B from 0 to -1
- updated test cases according to parameter changes for LdsPad, LBSPP and ClusterLocalRead
- Replaced std::regex with fnmatch()/PathMatchSpec as a workaround to std::regex stack overflow known bug
##### Fixes
- hipcc compile append flag parallel-jobs=4
- race condition in Stream-K that appeared with large grids and small sizes
- mismatch issue with LdsPad + LdsBlockSizePerPad!=0 and TailLoop
- mismatch issue with LdsPad + LdsBlockSizePerPad!=0 and SplitLds
- incorrect reject condition check for DirectToLds + LdsBlockSizePerPad=-1 case
- small fix for LdsPad optimization (LdsElement calculation)

View File

@@ -22,8 +22,6 @@ for template in templates:
file.write(rendered) file.write(rendered)
shutil.copy2('../RELEASE.md','./about/release-notes.md') shutil.copy2('../RELEASE.md','./about/release-notes.md')
# Keep capitalization due to similar linking on GitHub's markdown preview.
shutil.copy2('../CHANGELOG.md','./about/changelog.md')
latex_engine = "xelatex" latex_engine = "xelatex"
latex_elements = { latex_elements = {

View File

@@ -9,10 +9,6 @@ subtrees:
- file: what-is-rocm.rst - file: what-is-rocm.rst
- file: about/release-notes.md - file: about/release-notes.md
title: Release notes title: Release notes
# subtrees:
# - entries:
# - file: about/changelog.md
# title: Changelog
- url: https://github.com/ROCm/ROCm/labels/Verified%20Issue - url: https://github.com/ROCm/ROCm/labels/Verified%20Issue
title: Known issues title: Known issues

View File

@@ -11,25 +11,25 @@
* RadeonOpenCompute * RadeonOpenCompute
* ROCmSoftwarePlatform * ROCmSoftwarePlatform
## Updating the changelog ## Updating the changelog and release notes
> IMPORTANT: It is key to update the template Markdown files in `tools/autotag/templates/rocm_changes` (eg: `5.6.0.md`) and not the `CHANGELOG.md` itself to ensure that updates are not overwritten by the autotag script. The template should only have content from changelogs that are not included by the script to avoid duplicating data. > IMPORTANT: It is key to update the template Markdown files in `tools/autotag/templates/rocm_changes` (eg: `5.6.0.md`) and not the `CHANGELOG.md` or `RELEASE.md` itself to ensure that updates are not overwritten by the autotag script. The template should only have content from changelogs that are not included by the script to avoid duplicating data.
* Add or update the release specific notes in `tools/autotag/templates/rocm_changes` * Add or update the release specific notes in `tools/autotag/templates/rocm_changes`
* Ensure the all the repositories have their release specific branch with the updated changelogs * Ensure the all the repositories have their release specific branch with the updated changelogs
* Run this for 5.6.0 (change for whatever version you require) * Run this for 5.6.0 (change for whatever version you require)
* `GITHUB_ACCESS_TOKEN=my_token_here` * `GITHUB_ACCESS_TOKEN=my_token_here`
To generate the changelog from 5.0.0 up to and including 6.1.1: To generate the changelog from 5.0.0 up to and including 6.1.2:
```sh ```sh
python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --do-previous --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.2
``` ```
To generate the changelog only for 6.1.1: To generate the release notes only for 6.1.2:
```sh ```sh
python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../CHANGELOG.md --branch release/rocm-rel-6.1 6.1.1 python3 tag_script.py -t $GITHUB_ACCESS_TOKEN --no-release --no-pulls --compile_file ../../RELEASE.md --branch release/rocm-rel-6.1 6.1.2
``` ```
### Notes ### Notes

View File

@@ -10,7 +10,7 @@
<project category="libs" group="ml" name="AMDMIGraphX" /> <project category="libs" group="ml" name="AMDMIGraphX" />
<project category="libs" group="ml" name="MIOpen" /> <project category="libs" group="ml" name="MIOpen" />
<project category="libs" group="ml" name="MIVisionX" /> <project category="libs" group="ml" name="MIVisionX" />
<!-- rocAL? --> <!-- rocAL -->
<project category="libs" group="ml" name="rocDecode" /> <project category="libs" group="ml" name="rocDecode" />
<project category="libs" group="ml" name="rpp" /> <project category="libs" group="ml" name="rpp" />
<project category="libs" group="communication" name="rccl" /> <project category="libs" group="communication" name="rccl" />
@@ -49,7 +49,7 @@
<project category="tools" group="system" name="rdc" /> <project category="tools" group="system" name="rdc" />
<project category="tools" group="system" name="rocm_smi_lib" /> <project category="tools" group="system" name="rocm_smi_lib" />
<project category="tools" group="system" name="ROCmValidationSuite" /> <project category="tools" group="system" name="ROCmValidationSuite" />
<!-- transferbench? --> <!-- transferbench -->
<project category="compilers" name="llvm-project" /> <project category="compilers" name="llvm-project" />
<project category="compilers" name="flang" path="openmp-extras/flang" /> <project category="compilers" name="flang" path="openmp-extras/flang" />
<project category="runtimes" name="clr" /> <project category="runtimes" name="clr" />

View File

@@ -188,7 +188,7 @@ def run_tagging():
# Use the manifest included in the ROCm GitHub repository by default. # Use the manifest included in the ROCm GitHub repository by default.
if args.manifest_url is None: if args.manifest_url is None:
manifest_path = ( manifest_path = (
"./../../default.xml" "./components.xml"
) )
else: else:
manifest_url = args.manifest_url manifest_url = args.manifest_url
@@ -233,31 +233,26 @@ def run_tagging():
) )
# Find all the math libraries and their remotes. # Find all the math libraries and their remotes.
included_names = [ included_categories = [
"AMDMIGraphX", "libs",
"HIPIFY", # "tools",
"MIOpen", "compilers",
"MIVisionX", "runtimes",
"ROCmValidationSuite", #
"composable_kernel",
"hipfort",
"rocDecode",
"rocm-cmake",
"rpp",
]
included_groups = [
"mathlibs"
] ]
projects = [ ] projects = [ ]
for project in manifest_tree.iterfind(".//project"): for project in manifest_tree.iterfind(".//project"):
include = str(project.get("name")) in included_names if project.get("category") in included_categories:
if (project.get("name") in included_names) or (project.get("groups") in included_groups):
projects.append(project) projects.append(project)
names_and_remotes = list((entry.get("name"), entry.get("remote")) for entry in projects) component_information = list(
(entry.get("name"),
entry.get("remote"),
entry.get("group"),
entry.get("category"),
) for entry in projects)
# Get all the relevant ROCm releases, and only the last version if not doing previous. # Get all the relevant ROCm releases, and only the last version if not doing previous.
minimum_version = "5.0.0" if args.previous else args.version minimum_version = "5.0.0" if args.previous else args.version
releases = release_bundle_factory.create_data_dict(args.version, names_and_remotes, minimum_version) releases = release_bundle_factory.create_data_dict(args.version, component_information, minimum_version)
# Process the individual releases. # Process the individual releases.
failed: List[Tuple[str, str]] = [] failed: List[Tuple[str, str]] = []

View File

@@ -29,13 +29,14 @@ This page contains the release notes for AMD ROCm™ Software.
### Library changes in ROCm {{version}} ### Library changes in ROCm {{version}}
| Library | Version | | Category | Group | Name | Version | Repository |
|---------|---------| |----------|-------|------|---------|------------|
{%- for lib_name, lib in release.libraries | dictsort %} {%- for lib_name in release.libraries %}
{%- set lib = release.libraries[lib_name] %}
{%- if rocm_ver_by_lib_ver[lib_name][lib.lib_version] == version and (prev_lib_ver[lib_name][lib.lib_version] | default([]) | length > 0) and lib.lib_version %} {%- if rocm_ver_by_lib_ver[lib_name][lib.lib_version] == version and (prev_lib_ver[lib_name][lib.lib_version] | default([]) | length > 0) and lib.lib_version %}
| {{ lib_name }} | {{prev_lib_ver[lib_name][lib.lib_version]}} ⇒ [{{ lib.lib_version }}]({{ lib.release_url }}) | | {{ lib.category }} | {{ lib.group }} | [{{ lib_name }}]({{ lib.documentation_page }}) | {{prev_lib_ver[lib_name][lib.lib_version]}} ⇒ [{{ lib.lib_version }}]({{ lib.release_url }}) | [ROCm/{{ lib_name }}]({{ lib.repository_url }}) |
{%- elif lib.lib_version %} {%- elif lib.lib_version %}
| {{ lib_name }} | [{{ lib.lib_version }}]({{ lib.release_url }}) | | {{ lib.category }} | {{ lib.group }} | [{{ lib_name }}]({{ lib.documentation_page }}) | [{{ lib.lib_version }}]({{ lib.release_url }}) | [ROCm/{{ lib_name }}]({{ lib.repository_url }}) |
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}

View File

@@ -16,7 +16,7 @@ class Changelog():
def __init__(self, releases: Dict[str, ReleaseBundle]): def __init__(self, releases: Dict[str, ReleaseBundle]):
self.releases = list(releases.items()) self.releases = list(releases.items())
self.releases.sort(key=lambda x: Version(x[0]), reverse=True) # self.releases.sort(key=lambda x: Version(x[0]), reverse=True)
# For each library find the earliest ROCm release where it updated. # For each library find the earliest ROCm release where it updated.
rocm_ver_by_lib_ver: Dict[str, Dict[str, str]] = defaultdict(dict) rocm_ver_by_lib_ver: Dict[str, Dict[str, str]] = defaultdict(dict)
@@ -53,4 +53,4 @@ class Changelog():
prev_lib_ver=self.prev_lib_ver prev_lib_ver=self.prev_lib_ver
) )
output.write(content) output.write(content)

View File

@@ -0,0 +1,20 @@
category_mapping = {
"libs": "Libraries",
"tools": "Tools",
"compilers": "Compilers",
"runtimes": "Runtimes",
"": "",
None: "",
}
group_mapping = {
"ml": "Machine Learning and Computer Vision",
"communication": "Communication",
"math": "Math",
"primitives": "Primitives",
"dev": "Development",
"perf": "Performance",
"system": "System",
"": "",
None: "",
}

View File

@@ -1,28 +1,32 @@
"""Class to store data about a particular release.""" """Class to store data about a particular release."""
from dataclasses import dataclass, field
import os import os
import re import re
import shutil import shutil
import sys from dataclasses import dataclass, field
from typing import Optional, Union, Dict, List, Tuple from typing import Dict, List, Optional, Tuple, Union
from github import Github, UnknownObjectException
from github.Repository import Repository
from github.Organization import Organization
from github.NamedUser import NamedUser
from git import Repo from git import Repo
from git.cmd import Git from git.cmd import Git
from github import Github, UnknownObjectException
from github.NamedUser import NamedUser
from github.Organization import Organization
from github.Repository import Repository
from packaging.version import Version from packaging.version import Version
from util.util import get_yn_input from util.util import get_yn_input
from util.mappings import category_mapping, group_mapping
@dataclass @dataclass
class ReleaseData: class ReleaseData:
"""Store Github data for a release.""" """Store Github data for a release."""
message: str = "" message: str = ""
notes: str = "" notes: str = ""
changes: Dict[str, str] = field(default_factory=dict) changes: Dict[str, str] = field(default_factory=dict)
@dataclass @dataclass
class ReleaseLib: class ReleaseLib:
"""Store data about a release for a particular library.""" """Store data about a release for a particular library."""
@@ -34,6 +38,8 @@ class ReleaseLib:
commit: str = "" commit: str = ""
rocm_version: str = "" rocm_version: str = ""
lib_version: str = "" lib_version: str = ""
group: str = ""
category: str = ""
@property @property
def qualified_repo(self) -> str: def qualified_repo(self) -> str:
@@ -64,6 +70,16 @@ class ReleaseLib:
def release_url(self) -> str: def release_url(self) -> str:
"""The Github URL of the release.""" """The Github URL of the release."""
return f"https://github.com/{self.qualified_repo}/releases/tag/{self.tag}" return f"https://github.com/{self.qualified_repo}/releases/tag/{self.tag}"
@property
def documentation_page(self) -> str:
"""The Read the Docs documentation site."""
return f"https://rocm.docs.amd.com/projects/{self.qualified_repo}/en/latest"
@property
def repository_url(self) -> str:
"""The GitHub repository URL."""
return f"https://github.com/ROCm/{self.qualified_repo}"
@property @property
def message(self) -> str: def message(self) -> str:
@@ -92,9 +108,7 @@ class ReleaseLib:
print(f"Release Message: '{self.data.message}'") print(f"Release Message: '{self.data.message}'")
print(f"Release Notes:\n{self.data.notes}") print(f"Release Notes:\n{self.data.notes}")
print(f"Release Commit: '{self.commit}'") print(f"Release Commit: '{self.commit}'")
if get_yn_input( if get_yn_input("Would you like to create this tag and release?", release_yn):
"Would you like to create this tag and release?", release_yn
):
try: try:
print("Performing tag and release.") print("Performing tag and release.")
release = self.repo.create_git_tag_and_release( release = self.repo.create_git_tag_and_release(
@@ -142,9 +156,7 @@ class ReleaseLib:
fork.push(f"refs/heads/release:refs/heads/{self.branch}") fork.push(f"refs/heads/release:refs/heads/{self.branch}")
shutil.rmtree(repo_loc) shutil.rmtree(repo_loc)
pr_title = ( pr_title = f"Hotfixes from {self.branch} at release {self.full_version}"
f"Hotfixes from {self.branch} at release {self.full_version}"
)
pr_body = ( pr_body = (
"This is an autogenerated PR.\n This is intended to pull any" "This is an autogenerated PR.\n This is intended to pull any"
f" hotfixes for ROCm release {self.full_version} (including" f" hotfixes for ROCm release {self.full_version} (including"
@@ -159,10 +171,11 @@ class ReleaseLib:
print(f"Pull request created: {pr.html_url}") print(f"Pull request created: {pr.html_url}")
return pr return pr
class ReleaseDataFactory: class ReleaseDataFactory:
"""A factory for ReleaseData objects.""" """A factory for ReleaseData objects."""
lib_versions: Dict[str, str] = { } lib_versions: Dict[str, str] = {}
"""A map of commit hashes to lib versions.""" """A map of commit hashes to lib versions."""
def __init__( def __init__(
@@ -176,7 +189,9 @@ class ReleaseDataFactory:
else: else:
self.org, self.pr_org = self.get_org_or_user(org_name) self.org, self.pr_org = self.get_org_or_user(org_name)
def get_org_or_user(self, name: str) -> Tuple[Union[NamedUser, Organization], Union[NamedUser, Organization]]: def get_org_or_user(
self, name: str
) -> Tuple[Union[NamedUser, Organization], Union[NamedUser, Organization]]:
"""Get a Github organization or user by name.""" """Get a Github organization or user by name."""
gh_ns: Union[NamedUser, Organization] gh_ns: Union[NamedUser, Organization]
pr_ns: Union[NamedUser, Organization] pr_ns: Union[NamedUser, Organization]
@@ -188,12 +203,10 @@ class ReleaseDataFactory:
gh_ns = self.gh.get_user(name) gh_ns = self.gh.get_user(name)
pr_ns = self.pr_gh.get_user(name) pr_ns = self.pr_gh.get_user(name)
except UnknownObjectException as err: except UnknownObjectException as err:
raise ValueError( raise ValueError(f"Could not find organization/user {name}.") from err
f"Could not find organization/user {name}."
) from err
return gh_ns, pr_ns return gh_ns, pr_ns
def create_data( def create_release_lib_data(
self, self,
name: str, name: str,
commit: str, commit: str,
@@ -219,6 +232,7 @@ class ReleaseDataFactory:
) )
return data return data
@dataclass @dataclass
class ReleaseBundle: class ReleaseBundle:
"""Stores data about all the libraries bundled in this release.""" """Stores data about all the libraries bundled in this release."""
@@ -226,6 +240,7 @@ class ReleaseBundle:
version: str = "" version: str = ""
libraries: Dict[str, ReleaseLib] = field(default_factory=ReleaseLib) libraries: Dict[str, ReleaseLib] = field(default_factory=ReleaseLib)
class ReleaseBundleFactory: class ReleaseBundleFactory:
gh: Github = None gh: Github = None
@@ -234,16 +249,18 @@ class ReleaseBundleFactory:
default_remote: str = "" default_remote: str = ""
"""The default fallback remote.""" """The default fallback remote."""
remotes: Dict[str, str] = { } remotes: Dict[str, str] = {}
"""A dictionary translating the manifest remote shorthand to the full name.""" """A dictionary translating the manifest remote shorthand to the full name."""
tags: Dict[str, Dict[Version, str]] = { } tags: Dict[str, Dict[Version, str]] = {}
"""A dictionary with all the ROCm version numbers and commit sha for each library.""" """A dictionary with all the ROCm version numbers and commit sha for each library."""
orgs_and_users: Dict[str, Tuple[Union[NamedUser, Organization], Union[NamedUser, Organization]]] = { } orgs_and_users: Dict[
str, Tuple[Union[NamedUser, Organization], Union[NamedUser, Organization]]
] = {}
"""A dictionary containing the base and PR user or organization for each project.""" """A dictionary containing the base and PR user or organization for each project."""
pr_repos: Dict[str, Tuple[Repo, Repo]] = { } pr_repos: Dict[str, Tuple[Repo, Repo]] = {}
"""A dictionary containing the base and PR repo for each project.""" """A dictionary containing the base and PR repo for each project."""
def __init__( def __init__(
@@ -253,15 +270,15 @@ class ReleaseBundleFactory:
pr_gh: Github, pr_gh: Github,
default_remote: str, default_remote: str,
remotes: Dict[str, str], remotes: Dict[str, str],
branch: Optional[str] branch: Optional[str],
): ):
# Store Github data # Store Github data
self.gh = gh self.gh = gh
self.pr_gh = pr_gh self.pr_gh = pr_gh
self.default_remote = default_remote self.default_remote = default_remote
self.remotes = remotes self.remotes = remotes
self.branch = branch self.branch = branch
# Get the main repository: # Get the main repository:
self.rocm_repo = gh.get_repo(rocm_repo) self.rocm_repo = gh.get_repo(rocm_repo)
@@ -271,8 +288,10 @@ class ReleaseBundleFactory:
if remote in self.remotes: if remote in self.remotes:
return self.remotes[remote] return self.remotes[remote]
return self.default_remote return self.default_remote
def get_org_or_user(self, remote: str) -> Tuple[Union[NamedUser, Organization], Union[NamedUser, Organization]]: def get_org_or_user(
self, remote: str
) -> Tuple[Union[NamedUser, Organization], Union[NamedUser, Organization]]:
"""Gets the base and PR organization or user associated to a remote.""" """Gets the base and PR organization or user associated to a remote."""
if remote not in self.orgs_and_users: if remote not in self.orgs_and_users:
try: try:
@@ -329,7 +348,7 @@ class ReleaseBundleFactory:
def fetch_tags(self, url: str) -> Dict[Version, str]: def fetch_tags(self, url: str) -> Dict[Version, str]:
"""Fetches a version-sha map for a given Git URL.""" """Fetches a version-sha map for a given Git URL."""
result: Dict[Version, str] = { } result: Dict[Version, str] = {}
for line in Git().ls_remote("--tags", url).split("\n"): for line in Git().ls_remote("--tags", url).split("\n"):
column = line.split("\t") column = line.split("\t")
sha = column[0] sha = column[0]
@@ -344,20 +363,23 @@ class ReleaseBundleFactory:
result[Version(rocm_ver)] = sha result[Version(rocm_ver)] = sha
return result return result
def create_data( def create_release_bundle_data(
self, self,
version: Version, version: Version,
names_and_remotes: List[Tuple[str, str]], component_info: List[Tuple[str, str]],
is_untagged: bool=False is_untagged: bool = False,
) -> ReleaseBundle: ) -> ReleaseBundle:
"""Create a release bundle of libraries.""" """Create a release bundle of libraries."""
tag_name = f"rocm-{version}" tag_name = f"rocm-{version}"
libraries = { } libraries = {}
missing_branches = [] missing_branches = []
prev_group = None
prev_category = None
print(f"\nLibraries for rocm-{version}:") print(f"\nLibraries for rocm-{version}:")
for name, remote in names_and_remotes: for name, remote, group, category in component_info:
repo, pr_repo = self.get_repos(name, remote) repo, pr_repo = self.get_repos(name, remote)
# Find the tag and otherwise # Find the tag and otherwise
@@ -375,20 +397,30 @@ class ReleaseBundleFactory:
print(f" - Could not find branch : {self.branch}") print(f" - Could not find branch : {self.branch}")
missing_branches.append(f"{self.branch} for {name}") missing_branches.append(f"{self.branch} for {name}")
continue continue
if prev_group == group:
group = ""
else:
prev_group = group
if prev_category == category:
category = ""
else:
prev_category = category
libraries[name] = ReleaseLib( libraries[name] = ReleaseLib(
name=name, name=name,
repo=repo, repo=repo,
pr_repo=pr_repo, pr_repo=pr_repo,
commit=commit, commit=commit,
rocm_version=str(version), rocm_version=str(version),
group=group_mapping[group],
category=category_mapping[category],
) )
print(f"- {name:11} {commit}") print(f"- {name:11} {commit}")
data = ReleaseBundle( data = ReleaseBundle(version=version, libraries=libraries)
version=version,
libraries=libraries
)
for missing in missing_branches: for missing in missing_branches:
print(f"Could not find the following branch: {missing}") print(f"Could not find the following branch: {missing}")
@@ -398,8 +430,8 @@ class ReleaseBundleFactory:
def create_data_dict( def create_data_dict(
self, self,
up_to_version: str, up_to_version: str,
names_and_remotes: List[Tuple[str, str]], component_information: List[Tuple[str, str]],
min_version: str = "5.0.0" min_version: str = "5.0.0",
) -> Dict[str, ReleaseBundle]: ) -> Dict[str, ReleaseBundle]:
"""Create a map of versions and release bundles.""" """Create a map of versions and release bundles."""
@@ -417,6 +449,8 @@ class ReleaseBundleFactory:
for version in versions: for version in versions:
if version >= Version(min_version) and version <= max_version: if version >= Version(min_version) and version <= max_version:
can_be_untagged = version == max_version can_be_untagged = version == max_version
data[str(version)] = self.create_data(version, names_and_remotes, can_be_untagged) data[str(version)] = self.create_release_bundle_data(
version, component_information, can_be_untagged
)
return data return data